A native Windows flasher for Espressif's ESP32 chip family: ESP32, ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-P4.
A single .exe — download, run, flash. No Python, no Node.js, nothing to install.
⬇ Download espflash-gui-v0.3.exe
Open the bin/ folder, download the latest version (espflash-gui-v0.3.exe) and run it — no installation needed. Older versions (espflash-gui-v0.1.exe, espflash-gui-v0.2.exe) are also kept in the folder.
- Plug in the board over USB
- Launch
espflash-gui.exe - Pick a flashing mode (see below) and select your
.binfile(s) - Select the COM port
- Click FLASH
You don't need to pick a baud rate — the app automatically tries the fastest speed (921600) and transparently falls back to 115200 if needed.
- Single file — one
.bin(merged firmware) written to address0x0. Suited for ready-made merged images (PlatformIO, Arduino, etc.) - 3 files (IDF) — separate
bootloader.bin,partition-table.binandapp.bin, as produced by ESP-IDF (idf.py build). Each file has its own address, defaulting to0x1000/0x8000/0x10000(the bootloader address depends on the chip —0x1000for ESP32/ESP32-S2,0x2000for ESP32-C5/P4,0x0for the rest; edit the address field manually if needed). Each slot is optional — you can re-flash justapp.bin, for example. Dropping several files onto the window at once sorts them into slots automatically by filename (bootloader,partition, everything else goes to Application)
| Button | Action |
|---|---|
| FLASH | Write the selected .bin file(s) to their addresses |
| Chip Info | Show chip type, MAC, flash size, revision (result appears below the buttons) |
| Erase Flash | Fully erase flash memory |
| ⟳ | Rescan COM ports |
| Browse / … | Pick a file via the file dialog |
On a connection error:
- Hold the BOOT button on the board
- Press RESET
- Release BOOT
- Click FLASH again
If no ports are detected, make sure the USB cable carries data (not charge-only).
Requires Rust 1.88+:
cargo build --releaseThe binary will be at target\release\espflash-gui.exe.
- Rust — implementation language
- egui / eframe — native GUI, single static .exe
- espflash (lib, no CLI) — connection and flashing logic (Apache-2.0/MIT)
- serialport — COM port enumeration
- rfd — native file dialog
MIT — see LICENSE.
The espflash dependency is distributed under the MIT OR Apache-2.0 license.
