ESP32 partition table editor
Design ESP-IDF and Arduino-ESP32 partition tables visually — add OTA, NVS, SPIFFS, LittleFS, and FAT partitions, check alignment and overlaps, and export the CSV or a flashable partitions.bin.
Added · updated 28 October 2026
Works with
- PlatformIO project helper IoT and embeddedUse in PlatformIO sets this table and the flash size on the ESP32 environment there
How to use it
Start from a preset (single factory app, factory plus two OTA slots, OTA without factory,
large app, app plus SPIFFS or LittleFS, OTA plus FAT and core dump, or the Arduino-ESP32
default), or open an existing partitions.csv or partitions.bin. A full flash dump also
works: the table is found at 0x8000. You can also paste CSV.
Editing
Each row has a name, type, and subtype (chosen from the ESP-IDF lists, or a number), offset,
size, and the encrypted and readonly flags. Leave the offset blank to have it placed
after the previous partition, as ESP-IDF does: app partitions are aligned to 64 KB (0x10000)
and data partitions to 4 KB. Sizes accept K and M suffixes or hex. The Range column
shows where each partition ends up.
Auto-layout recomputes every offset, Fill offsets writes the computed offsets into the blanks, and Fill free space grows the last partition to the end of the flash. Pick the flash size and table offset (normally 0x8000) to match your module.
The colour map shows the whole flash, including the bootloader and the table itself, with free space marked. Errors and warnings catch overlaps, misaligned partitions, app sizes that are not whole 4 KB sectors, duplicate names, names over 16 bytes, partitions past the end of the flash, an otadata partition that is not 8 KB, OTA slots without otadata, a single OTA slot, a missing app or nvs partition, and tables too large for the 3 KB limit.
Output
Copy or download the CSV (partitions.csv, in the format of ESP-IDF’s gen_esp32part.py),
or download the binary table with its MD5 checksum, ready to flash at 0x8000 (for example
with the Serial tool’s ESP flasher). Tables made here are byte-identical to
`gen_esp32part.py’s output.
Sharing
Share link copies a URL that opens this tool with your current settings — every value it remembers between visits, packed into ?s=. Opening a link replaces your saved settings for this tool. You can also write a short link by hand with flash (flash size in MB), for example /tools/partitions/?flash=8.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.