ESP32 partition table editor
Lay out the flash of an ESP32: start from a preset or your own partitions.csv, change partitions in the table or on the map, and see at once whether it fits, whether OTA works and whether your app has room. Save the CSV, or the binary table, byte for byte what gen_esp32part.py makes.
appfactorynvsotadatafile systemcore dumpphyother datafree
| Name | Type | Subtype | Offset | Size | Flags |
|---|
Add
CSV (edit as text if you prefer)
The rules it checks
- App partitions start on a 64 KB boundary (0x10000) and their size is a multiple of 4 KB; data partitions start on a 4 KB boundary.
- Nothing starts below the end of the partition table (0x9000 with the table at 0x8000), and no two partitions overlap.
- One
otadatapartition of exactly 8 KB when there are OTA slots, and two slots for an update to have somewhere to go. - A writable NVS partition of at least 12 KB (0x3000); WiFi and the PHY calibration need one.
- The table fits the flash size, and your app fits the smallest app partition, with room to grow.
Using it in a project
- ESP-IDF: save
partitions.csvin the project folder, and in menuconfig set Partition Table to Custom, filepartitions.csv. - Arduino: put
partitions.csvnext to the .ino; Arduino ESP32 core 2.0.6 and later uses it instead of the scheme in the Tools menu. - PlatformIO:
board_build.partitions = partitions.csvin platformio.ini.
Changing the partition table of devices in the field is risky: the bootloader and the app must agree on it, and an OTA update cannot change it safely. Plan the layout, with two OTA slots, before the first device ships. The field support checklist.
Try it
Three devices are free, and no card is needed. Create an account, or read the five-minute guide first.
More
- Remote access to an ESP32 without TLS: what it measured and what it costs
- Reaching an ESP32 web server from outside its network
- Updating ESP32 firmware over the internet, with rollback
- Guru Meditation Error: decoding the backtrace, and crashes from the field
- Remote logging: ESP_LOG without a serial cable
- Heap and stack monitoring in the field
- An ESP32 behind CGNAT, 4G or Starlink
- TLS memory usage on the ESP32, and how to reduce it
- Sharing an ESP32 sensor page with anyone, without port forwarding
- ArduinoOTA over the internet, with a rollback
- ESP32 remote access compared: port forwarding, ngrok, Cloudflare Tunnel, Tailscale
- esp_http_server slow? The 250 ms delay and the fix
- Before the first ESP32 ships: a field support checklist
- ESP32 exception decoder: a Guru Meditation backtrace to lines, in the browser