ESP Web Flasher
Flash .bin firmware to ESP32 and ESP8266 boards over Web Serial in your browser. Supports multiple files with per-file addresses, bulk import, address and range validation, baud rate and reset mode selection, plus live progress and logs. Requires Chrome/Edge 89+ over HTTPS and user serial authorization; firmware is never uploaded.
FreeOnline Tool
Loading…
How to Use
- Open the page in Chrome 89+ or Edge 89+ over HTTPS, click Choose port and connect, then select and authorize the device port in the browser dialog.
- Choose a flash baud rate (115200, 230400, 460800, 921600, or 2000000; default 460800) and reset mode (automatic DTR/RTS, USB-JTAG, or manual). Both are locked while connected; the initial connection always uses 115200.
- Add firmware: use + Add file to pick a .bin and enter a hex address per row, or Bulk import .bin to load several files at once (addresses are pre-filled from common partition names). Address presets include bootloader 0x0, partition table 0x8000, OTA data 0xe000, firmware 0x10000, and ESP8266 firmware 0x0.
- Check the validation message: addresses must be hex values of up to 8 digits (0x optional), every row needs a file, and duplicate addresses or overlapping write ranges are rejected.
- Click Start flashing and wait for the progress bar. The device is hard-reset on success, and the log shows each step and any error hints.
- Without hardware, click Load sample data to inspect the built-in sample firmware's address, size, and ESP checksum; the sample never triggers flashing.
Warning: erase and write operations cannot be undone, and a wrong address can overwrite the bootloader. Verify the target chip's partition table before flashing; the sample firmware is not bootable and is for demonstration only.
Features
- Uses Web Serial and esptool-js to connect to a serial port and flash ESP32/ESP8266 firmware directly from the browser, with no Python or esptool installation.
- Multi-file flashing: each row has its own hex address, with presets for bootloader, partition table, OTA data, firmware, and ESP8266 firmware.
- Bulk .bin import infers common partition addresses from file names (bootloader, partition, boot_app0/ota, firmware/app) and skips duplicates with the same name and size.
- Pre-flash validation checks address format (up to 8 hex digits, optional 0x), empty files, duplicate addresses, and overlapping write ranges, pointing to the specific row.
- Selectable flash baud rates of 115200, 230400, 460800, 921600, and 2000000, plus automatic, USB-JTAG, and manual reset modes.
- Live progress by file and byte, with logs for connection, sync, writing, and reset, and hints for common errors such as sync failure, busy ports, and permission problems.
- The built-in sample firmware demonstrates address, size, and ESP image checksum; it never flashes or writes anything to a device.
Use Cases
Flash an ESP32 development board
Connect the board in Chrome or Edge, select an Arduino, MicroPython, or vendor .bin file, and flash it without installing an esptool environment.
Flash bootloader, partition table, and app together
Import several .bin files at once, assign addresses such as 0x0, 0x8000, and 0x10000, and let the tool check for duplicate addresses and overlapping ranges before flashing.
Recover a device without a Python environment
Flash from a computer that only has a browser, which is useful for field service, teaching, or quick device recovery at a customer site.
Verify addresses and image checksum before flashing
Use address presets and range validation to confirm the layout, and load the sample to inspect the ESP image magic byte and checksum, reducing the risk of writing to the wrong address.
FAQ
Which browsers and conditions are required?
Chrome 89+ or Edge 89+ with Web Serial support, served over HTTPS. The first connection must be authorized by the user in the browser's port picker. Firefox and Safari do not currently support Web Serial.
What should I do if the connection or sync fails?
Use a USB cable that supports data, not charge-only, and install the right driver (CH341SER for CH340/CH341, CP210x for CP2102). For external UART chips, hold BOOT/FLASH, tap RST/EN, release BOOT, then connect again. ESP32-S3/C3 native USB can use automatic reset. Also close programs that hold the port, such as the Arduino IDE serial monitor.
How should firmware addresses be entered, and what happens if they are wrong?
Addresses are hex values of up to 8 digits with an optional 0x prefix and are normalized to lowercase. Presets cover bootloader 0x0, partition table 0x8000, OTA data 0xe000, firmware 0x10000, and ESP8266 firmware 0x0. A wrong address can overwrite the bootloader or partition table, and erase/write operations cannot be undone, so verify the target partition layout first.
Does it erase the entire flash?
No. Flashing uses eraseAll: false and writes only the ranges of the files you added; flashMode, flashFreq, and flashSize are kept at the chip's existing settings. A wrong address or overlapping files can still overwrite other data.
Is ESP8266 supported?
Yes. The address presets include ESP8266 firmware (0x0), which matches the common single-file layout. Always confirm the address against your actual firmware's partition layout.
Can the sample firmware be flashed to a device?
No. The sample contains only an image header and a few demo bytes; it is not bootable and is used only to show the address, size, and checksum. Connect a real device and select your own .bin file before flashing.