ESP flasher
Flash, erase, verify, and back up ESP8266 and ESP32-family chips from the browser over Web Serial — offsets from file names or an ESP-IDF build folder's flasher_args.json, merged images, security state, region erase and read-back.
Added
Works with
- ESP firmware image inspector IoT and embeddedopens a flash read-back to see partitions and apps
- Serial monitor and ESP flasher IoT and embeddedwatches the firmware’s output after flashing
How to use it
Browser support: Web Serial works in desktop Chrome, Edge, and Opera only — not Safari,
Firefox, or mobile browsers. Without it the page can still plan offsets and build a merged
image. Close any other program using the port (the Arduino IDE serial monitor, idf.py monitor).
Connect
Pick the baud rate and press Connect, then choose the board’s port. The flasher puts the chip into its ROM bootloader, loads the esptool stub, and shows the chip, its features, crystal, MAC address, flash size, and — on chips that report it (S2, S3, C2, C3, C5, C6, H2, P4) — the security state: Secure Boot, flash encryption, Secure Download Mode, and JTAG. If it will not connect, hold BOOT, tap RESET (EN), and release BOOT.
Security: with flash encryption on, plain images will not boot and read-back data is encrypted; with Secure Boot on, images must be signed with the device’s key. Secure Download Mode blocks reading, region erase, and the stub. The page warns when any of these are set.
Images and offsets
Drop .bin files. Offsets are guessed from the names for the chip family: the bootloader at
0x1000 (ESP32, S2), 0x0 (S3, C2, C3, C6, H2, ESP8266), or 0x2000 (C5, P4); partitions.bin
at 0x8000; boot_app0.bin / ota_data_initial.bin at 0xE000; the application at 0x10000;
a merged image at 0x0. Edit any offset by hand (hex, decimal, or 64K).
From an ESP-IDF build, drop build/flasher_args.json or build/flash_args first: the exact
offsets and the chip come from it, and the list shows which .bin files to drop next.
The plan is checked before anything is written: every offset a multiple of 0x1000, no
overlaps, and nothing past the end of the flash. Download merged image combines the files
into one image for 0x0, with gaps filled with 0xFF like erased flash — the same as
esptool.py merge_bin.
Flash writes compressed data and, with Verify on, compares the MD5 of each region on the chip with the file. Verify against files does the comparison without writing. Reset to app restarts the chip into the new firmware.
Read back and erase
Read region to file saves part of the flash (for example NVS at 0x9000, 24 KB); Read whole flash makes a full backup you can flash back at 0x0. Open last read in the image inspector hands the read straight to the ESP image inspector in a new tab. Erase region wipes 4 KB-aligned sectors (it needs the stub, so not in Secure Download Mode); Erase whole flash wipes everything, including Wi-Fi settings and file systems.
Notes
Built on esptool-js 0.7.0 (Apache-2.0), loaded from cdn.jsdelivr.net when you first connect. Your files go only to the board. Watch the firmware’s output in the serial monitor, which also has a simpler flasher.
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser — network requests go only to the services named on this page.