Data Storage

Official libraries

  • Arduino_POSIXStorage: POSIX Storage Library for the Portenta C33, Portenta H7, Portenta Machine Control, and Opta
  • Arduino_UnifiedStorage: Simplify cross-device storage management on Portenta platforms with a single library supporting SD, Flash, and USB storage access.
  • SD: Enables reading and writing on SD cards.

Contributed by the community

  • 107-Arduino-24LCxx: Arduino library providing a modern C++ wrapper around littlefs.
  • 107-Arduino-littlefs: Arduino library providing a modern C++ wrapper around littlefs.
  • AccessPermissionManager: Implements access permission control of filesystem resources.
  • AcksenIntEEPROM: Arduino Library for storing data in 8-bit AVR internal EEPROM memory.
  • Adafruit CPFS: Arduino library for accessing a board's CircuitPython flash filesystem and presenting it over USB.
  • Adafruit FRAM I2C: Driver for Adafruit's I2C-Based EEPROM / FRAM Breakouts
  • Adafruit FRAM SPI: Driver for Adafruit's SPI-Based FRAM Breakouts
  • Adafruit InternalFlash: Internal Flash filesystem support for FAT
  • Adafruit SPIFlash: SPI Flash filesystem support for FAT and CircuitPython FS support from within Arduino
  • adafruit_fram_i2c_mock: MOCK Library for I2C-FRAM Chip.
  • arduino-NVM: Direct flash memory access, round robin virtual pages and EEPROM like memory. (Flash, VirtualPage, NVRAM)
  • Array: An array container similar to the C++ std::array
  • ArxContainer: C++ container-like classes (vector, map, etc.) for Arduino which cannot use STL
  • ArxSmartPtr: C++ smart pointer-like classes for Arduino which cannot use standard smart pointers
  • ArxTypeTraits: C++ type_traits for Arduino which cannot use it as default
  • astra_esp8266: Easily access a Cassandra database from an ESP8266.
  • AsyncWebConfig: A web based configuration editor for asynchron web server.
  • AT24C: A library for using the AT24C series i2c serial eeproms.
  • AT24CM01: AT24CM01 EEPROM Library for Arduino Devices.
  • AT24Cxx: Library for Atmel's AT24Cxx Series EEPROMs.
  • AT24MAC402: EEPROM I2C library for AT24MAC402/602
  • ATMAC_EEPROM: A library that interfaces the AT24MAC402/602 EEPROM chip.
  • BitReader: The BitReader library is an arduino library that allows one to read or write data which is not aligned on 8, 16 or 32 bits variables.
  • Ch376msc: A library for CH376 file manager control chip.
  • CircularBuffer: Arduino circular buffer library
  • CircularQueue: Implementation of Queue Data Structure for Arduino Boards.
  • ColourKit: Simple Arduino library for storing, manipulating, and using colour data.
  • ConfigStorage: Library to store configuration parameters in the file system using LittleFS or SPIFFS for ESP8266 and ESP32.
  • ConfigTool: Save config variable and edit them online.
  • cQueue: Queue handling library (written in plain c)
  • CredentialManager: Provides intuitive interface for storage and retrival for user credentials.
  • DatabaseOnSD: A library to easily create and manage a database on an SD card
  • DataLogger: Arduino library for fast logging of complex sensor data in CSV or binary format to an SD card or serial stream
  • DS2431: Arduino library for Maxim DS2431 1-Wire EEPROM
  • DueFlashStorage: DueFlashStorage saves non-volatile data for Arduino Due.
  • E24: E24xxx EEPROM library.
  • EasyPreferences: ESP32 Preferences abstraction and manager. It includes a basic keys manifest and auto setters to streamline implementation.
  • EDB: Extended Database Library
  • EEBoom: Simple and powerful EEPROM emulation for ESP8266 and ESP32
  • EEManager: Simple library for reducing EEPROM wear
  • EEPROM-Storage: Generic class to wrap an EEPROM variable on the Particle and Arduino platforms.
  • EEPROM32_Rotate: EEPROM wrapper for ESP32 that handles partition rotation
  • EEPROM_24LC64F: EEPROM_24LC64F EEPROM memory chip for Arduino
  • eeprom_25AA02EXX: Library to read and write Microchip SPI EEPROM 25AA02E48 or 25AA02E64
  • EEPROM_CAT25: Driver for On Semiconductor CAT25 SPI EEPROM chips for AVR, SAM3X (Due), and SAM M0+ (SAMD, SAML, SAMC) microcontrollers
  • EEPROM_Rotate: EEPROM wrapper for ESP8266 that handles sector rotation
  • EEPROM_SPI_WE: Library for external SPI based EEPROMs
  • EEPROM_WL: Library for implementing EEPROM wear leveling on AVR Arduino boards
  • EEPROMAdapter: This adapter can read and write AT28C64 and AT28C256 EEPROM chips using Arudino Mega. Creating converter PCB for this task recommended
  • EEPROMEx: Extension of the standard Arduino EEPROM library.
  • EepromSecureData: CRC-controlled EEPROM memory storage
  • EEPROMsimple: Communications with 25LC1024 EEPROM chip
  • EEPROMTyped: The EEPROM Typed Library is a lightweight static library for reading and writing standard Arduino data types to the EEPROM.
  • EEPstore: EEPROM data storage with CRC16 checksum
  • EERAM_47XXX: A library to work with Microchip 47XXX EERAM ICs
  • EEvar: Allows to save variables to the EEPROM memory. Works with any POD (bool, int, float, custom structs) and String. Lightweight. Simple to use.
  • EEWL: EEPROM wear leveling
  • EEWrap: A convenient library allowing one to use the EEPROM just like RAM.
  • Effortless-SPIFFS: A class designed to make reading and storing data on the ESP8266 and ESP32 effortless.
  • EmotiBit External EEPROM: Library for I2C Communication with external EEPROMs
  • Engineer EasyEEPROM: Arduino library for easy work with EEPROM. (AVR and ESP)
  • ESP32-PSRamFS: "ESP32 RamDisk for PSRAM and fs::FS"
  • ESP8266 Influxdb: InfluxDB Client for Arduino.
  • ESP_EEPROM: An improved EEPROM library for ESP8266
  • ESPLogger: This library provides a simple interface to collect data on local storage (embedded flash or micro SD).
  • ESPWebDAV: WebDav server compatible with linux, macOS, windows.
  • extEEPROM: Arduino library to support external I2C EEPROMs.
  • EZPROM: A library to help organize EEPROM access.
  • FatFs: FAT file system based on open-source FatFS solution.
  • Feature-Variables: Persistent event driven variables aimed at making complex designs much simpler
  • FIFObuf: A library for buffering items into a FIFO/LIFO buffer
  • FIFOEE: EEPROM FIFO
  • FileData: Simple library for storing any data in file
  • FilesystemAccessInterface: Abstraction for Filesystem Access.
  • FilesystemUtility: Provides useful functionalities to simplify filesystem operations.
  • flagsapi: Library for packing bits
  • Flash: A library to wrap accessing and writing to flash
  • FlashStorage: The FlashStorage library aims to provide a convenient way to store and retrieve user's data using the non-volatile flash memory of microcontrollers.
  • FlashStorage_RTL8720: The FlashStorage_RTL8720 library aims to provide a convenient way to store and retrieve user data using the non-volatile flash memory of Realtek RTL8720DN, RTL8722DM, RTM8722CSM, etc.
  • FlashStorage_SAMD: The FlashStorage library aims to provide a convenient way to store and retrieve user's data using the non-volatile flash memory of SAMD21/SAMD51. It's using the buffered read and write to minimize the access to Flash. It now supports writing and reading the whole object, not just byte-and-byte.
  • FlashStorage_STM32: The FlashStorage_STM32 library aims to provide a convenient way to store and retrieve user data using the non-volatile flash memory of STM32F/L/H/G/WB/MP1. It is using the buffered read and write to minimize the access to Flash. It now supports writing and reading the whole object, not just byte-and-byte. New STM32 core v2.0.0+ is also supported now.
  • FlashStorage_STM32F1: The FlashStorage_STM32F1 library aims to provide a convenient way to store and retrieve user's data using the non-volatile flash memory of STM32F1/F3. It's using the buffered read and write to minimize the access to Flash. It now supports writing and reading the whole object, not just byte-and-byte. New STM32 core v2.0.0+ is supported now.
  • FlashStringTable: Easy definition and use of Arduino flash-based (PROGMEM) global string.
  • Fram: FRAM library for Industruino
  • FRAM_Cache: FRAM Cache
  • FRAM_I2C: Arduino library for I2C FRAM for persistent storage.
  • FS_Nano33BLE: Wrapper of FS (FATFS or LittleFS) for Arduino MBED nRF52840-based boards, such as Nano_33_BLE boards
  • GyverDB: Fast Arduino database for any type of data
  • I2C_24LC1025: Library for 24FC1025 I2C EEPROM
  • I2C_EEPROM: Library for I2C EEPROMS
  • iarduino_REG_595: Библиотека для работы с 8-и битными сдвиговыми регистрами HC595/HTC595.
  • IGB-FlashSst26: Spi Flash Memory Library for Microchip SST26 1,8V
  • incbin: Include binary and text files in your Arduino project with ease.
  • IonDB: A powerful key-value store for all data storage needs.
  • JC_EEPROM: Arduino library to support external I2C EEPROMs.
  • K24C16 EEPROM Library: This is a library for interfacing with K24C16 EEPROM
  • KickSort: Arduino library for different sorting algorithms including quicksort, bubble sort, insertion sort, shell sort, and comb sort.
  • KonnektingFlashStorage: The FlashStorage library aims to provide a convenient way to store and retrieve user's data using the non-volatile flash memory of microcontrollers. NOTE: This is a fork of cmaglie's "FlashStorage" with some extra modifications to fit KONNEKTING needs.
  • LC_EEPROM: Library for working with internal and external EEPROM memory via I2C.
  • List: The Ultimate Collection of Lists
  • LittleFS_esp32: LittleFS for esp32 based on esp_littlefs IDF component. Use esp32 core-provided LITTLEFS library instead of this one when available in future core releases.
  • LittleFS_Mbed_RP2040: Wrapper of LittleFS for Arduino MBED RP2040 boards
  • LittleFS_Portenta_H7: Wrapper of LittleFS for Arduino MBED Portenta_H7 boards
  • LittleVector: std::vector like container.
  • M95_EEPROM: A library for talking with the M95 series of EEPROM chips from ST. May work with chips from other vendors as well.
  • Marisa ESP32 Wrapper: Fast lookups in large static dictionaries
  • MCCI FRAM I2C: Driver for MCCI Catena's I2C-Based FRAM.
  • MD_CirQueue: Library for FIFO queue implemented as a Ring Buffer.
  • MicrochipSRAM: Access all Microchip SRAM chips
  • MissionList: An arduino queue library for storing commands to be executed
  • Move Buffer: Move Buffer Library for move list storage
  • NanoBLEFlashPrefs: Substitute for the missing EEPROM storage on Arduino Nano 33 BLE and BLE Sense.
  • NBitArray: Array of bits to save memory instead of using 8-bit boolean values.
  • NVSRAM: Arduino library for Microchip 23LCV512 and 23LCV1024 NVSRAM.
  • OSFS: An Overly Simplified FileSystem for storing things, e.g. in the Arduino's EEPROM
  • PF: <h2>Petit FatFS for Arduino avr MCUs. to drive SD cards</h2>
  • pgm_utils: Wrappers and helpers for Arduino PROGMEM functions
  • PGMWrap: A convenient library allowing structures and variables stored in PROGMEM to be read directly.
  • Posit: Library for posit arithmetic on Arduino Uno and other microcontrollers
  • Preferences: Preferences library for Arduino, ESP8266 and Particle Gen3 devices
  • QuarkDB: A No-SQL Json Document DB based on ArduinoJson 6 with command line interface and APIs for esp8266 and esp32 using SPIFFS
  • Queue: Queue handling library.
  • RAKwireless Storage: Driver for WisBlock Storage modules
  • RfidDb: A library that stores 32 bit identifiers and associated names to EEPROM which can be used to as a basis for RFID access control applications.
  • RingBuf: A library for buffering items into a ring (circular/FIFO) buffer
  • RingBufCPP: A C++ library for buffering items into a ring (circular/FIFO) buffer
  • RingBuffer: This library allows to use ring buffer with and without interrupts.
  • RingEEPROM: The library increases the arduino EEPROM Write endurance
  • Robust-EEPROM: Allows the use of unallocated bytes on an EEPROM memory as redundant memory for failed allocated bytes.
  • RogueMP3: A library to communicate with the Rogue Robotics MP3 Playback Modules.<br />
  • RogueSD: A library to communicate with the Rogue Robotics Data Storage Modules.<br />
  • RP2040_SD: This library enables you to use SPI SD cards with RP2040-based boards such as Nano_RP2040_Connect, RASPBERRY_PI_PICO using either RP2040 Arduino-mbed or arduino-pico core.
  • rrdtool: Round Robin Database Tool
  • rtc_utils: Wrapper for esp8266 rtc functions
  • RTCMemory: An intuitive library to simplify read and write operations on RTC memory of ESP8266 and its backup on flash memory.
  • RTCVars: This library eases the storage of variables in reset-safe RTC memory.
  • SD_card_logger: SD card logger, easy to use library for data logging
  • SdFat: Provides access to SD memory cards.
  • SdFat - Adafruit Fork: Provides access to SD memory cards and (Q)SPI Flash.
  • SdTerminal: Basic terminal interface for Arduino SD card logging/file management
  • SE_BasicUnit: Library for writing firmware of modules of expansion module of the AlphaSE system.
  • SE_EEPROM: The library is made to work with EEPROM. All data is saved in 3 copies to implement the possibility of automatic recovery in case of partial damage.
  • Seeed Arduino FS: A friendly library for file operation.
  • serialEEPROM: Arduino Library for I2C EEPROM
  • SerialFlash: Access SPI Serial Flash memory with filesystem-like functions
  • SessionManager: Manage session states for web server.
  • Settings Manager: Settings manager
  • settingsManager: Simple settings management for ESP8266
  • SettingsManagerESP32: Abstraction over ESP32 Arduino Preferences library to make your life easier.
  • SFFS: Arduino FRAM file system for I2C/SPI FRAM breakout boards
  • Shox96 Progmem Compression: Compress short strings and messages using Shox96 technique and save space on Flash (PROGMEM)
  • SIKTEC_SdExplore: A light-weight companion library to easily scan / search for files
  • SIKTEC_SRAM: Library for Interfacing Microchip SRAM chips
  • SimpleStack: A library that enables you to create a simple stack of arbitrary datatype.
  • SmartCardReader: A Library with Samples for the Parallax Smart Card Reader.
  • Sodaq_dataflash: An Arduino library for the AT45DB dataflash as used on SODAQ boards.
  • SpaceTrek EasyStarterKit: EasyStarterKit by SpaceTrek
  • SparkFun External EEPROM Arduino Library: Library for I2C Communication with external EEPROMs
  • SparkFun Qwiic OpenLog: Library for the SparkFun Qwiic OpenLog
  • SparkFun SPI SerialFlash Arduino Library: A low level library for interfacing to serial flash ICs<br/><br/>
  • SPI-FlashMem: SPI Memory library for Arduino
  • SPIExtension: SPI extension/wrapper for Arduino
  • SPIFFS_Shell: A Serial-based interface that resembles a Linux shell for interacting with SPIFFS.
  • SPIFlash_LowPowerLab: Simple Arduino library for SPI flash memory chips
  • SPIMemory: SPI Memory library for Arduino. (Formerly SPIFlash)
  • Sqlite Micro Logger: Log data into Sqlite database from any MCU having >2kb RAM
  • Sqlite3 for ESP8266: Sqlite3 library for ESP8266 Arduino core (includes Shox96 compression)
  • Sqlite3Esp32: Sqlite3 database library for ESP32 core
  • SQLiteDatabaseConnection: Modern C++ interface for SQLite.
  • SRAM: Simple library for serial SRAM IC's
  • SRAM_23LC: Driver for Microchip Technology Inc. 23LC (23LCV, 23A, 23K) SPI SRAM chips for AVR, SAM3X (Due), and SAM M0+ (SAMD, SAML, SAMC) microcontrollers
  • SRAMsimple: Communications with 23LC1024 SRAM chip
  • SST25VF: Arduino Library for controlling the SST Nor Serial Flash SST25VF family.
  • SSVQueueStackArray: Queue/Stack storage based on array ring buffer.
  • stdcol: Collections/Data Structures library
  • STM32duino M95640-R: This library includes drivers for ST M95640-R EEPROM.
  • STM32duino MX25R6435F: Quad-SPI NOR Flash memory library.
  • STM32duino STM32SD: Enables reading and writing on SD card using SD card slot connected to the SDIO/SDMMC-hardware of the STM32 MCU. For slots connected to SPI-hardware use the standard Arduino SD library.
  • sysfile: sysfile manager for Arduino. It uses littlefs
  • Table: Dynamic table for Arduino
  • Tiny Key Value Store: A simple key-value store library based on FileSystem
  • tiny-collections: Lightweight, compact templated collections classes.
  • TinyDatabase_Arduino: A tiny database to manipulate EEPROM easily
  • uCDB: API for querying Constant DataBase file store.
  • Unishox Progmem Decompressor: Decompress short Unicode strings and messages compressed using Unishox technique and save space on Flash (PROGMEM)
  • UselessLib: This library is just for testing purpose of the Arduino Library indexer.
  • Vector: An array container similar to the C++ std::vector
  • virtmem: Virtual memory library to easily extend RAM.
  • WearLeveling: EEPROMWearLevel reduces EEPROM wear by writting a new value to an other EEPROM location.
  • WebConfig: A web based configuration editor.
  • Winbond W25N: Library for use with the Winbond W25N and W25M series SPI Flash ICs
  • ZEeprom: Library for eeprom AT24Cx