ESP Flash

Flash .bin firmware to ESP32 and ESP8266 boards from Chrome or Edge over USB, using Espressif's official esptool-js.

Device
Not connected

Firmware files

Add each .bin with the flash address from your build output. A single merged image (e.g. from esptool merge_bin or a vendor download) goes at 0x0. Typical ESP32 layout: bootloader 0x1000, partition table 0x8000, app 0x10000 (ESP32-S3/C3: bootloader at 0x0).

Runs in your browser. Files and text you add here are processed on your own device with JavaScript and are not uploaded to our server. Some tools download a free open-source library (for example PDF.js or QPDF) from a public CDN the first time you use them. Very large files depend on your device's memory.

Flashing an ESP32 normally means installing Python, pip, esptool and a USB driver, then getting a long command exactly right. That is a lot of friction when you only want to load a pre-built firmware β€” Tasmota, WLED, ESPHome, a vendor update, or your own build on a colleague's PC.

This web flasher uses esptool-js, Espressif's own JavaScript port of esptool, together with the browser's Web Serial API. Plug the board in, click Connect, pick the serial port, add your .bin files at their addresses, and flash. The chip type is detected automatically.

Firmware files are read directly from your computer into the browser tab and written to the board over USB β€” nothing is uploaded to a server.

You still need to know what you are flashing. The tool writes exactly the files and addresses you give it, the same as esptool on the command line, so use the addresses from your build output or the firmware project's instructions.

How It Works

  1. Connect the board β€” use Chrome, Edge or Opera on a desktop. Choose a baud rate, click Connect and pick the board's serial port. esptool-js resets the chip into download mode and identifies it (for example ESP32-S3 or ESP8266).
  2. Add firmware files β€” one merged image at 0x0, or separate bootloader, partition table and application images at the addresses from your build output. Choose flash mode/size or keep the values in the image, and optionally erase the whole flash first.
  3. Flash β€” files are compressed and written with progress reporting, then the board is hard-reset to start the new firmware. A separate button erases the entire flash if you need a clean start.

Compatibility & Support

Supported Input β†’ Output Formats

  • Input: raw firmware images (.bin) β€” merged or split bootloader/partitions/app
  • Chips: ESP8266, ESP32, ESP32-S2, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2 and other chips supported by esptool-js
  • Connections: USB-UART bridges (CP210x, CH340, FTDI) and native USB-Serial/JTAG

Unsupported Formats

Web Serial works only in Chromium-based desktop browsers (Chrome, Edge, Opera). Firefox and Safari don't support it, and phones can't use it. ELF files must be converted to .bin first β€” esptool-js flashes images, it doesn't build them. Encrypted-flash and secure-boot production workflows (espefuse, espsecure) are out of scope.

File Size Limits

Firmware size is limited by the board's flash chip (commonly 4, 8 or 16 MB), not by the tool. At 460,800 baud a 1.5 MB image typically flashes in 30–60 seconds; drop to 115,200 if you see timeouts with long or cheap cables.

Only one serial connection can be open at a time, so close the Arduino IDE serial monitor or any other terminal before connecting here.

Who Should Use This Tool?

  • Students: An engineering student loads a lab-provided firmware onto an ESP32 dev kit on a university PC where installing Python isn't allowed.
  • Freelancers & Designers: A smart-home installer flashes WLED or Tasmota onto client devices from a laptop without a development setup.
  • Office Professionals: A lab technician updates sensor nodes to a new firmware version supplied by the engineering team.
  • Developers: A firmware developer sends testers a build and asks them to flash it here instead of walking them through installing esptool.

Key Features / Khusoosiyat

Here's what separates this tool from generic alternatives:

πŸ”Œ

Web Serial

Talks to the board over USB directly from the browser.

🧠

Official esptool-js

Espressif's own flashing library, not a re-implementation.

πŸ”Ž

Chip Auto-Detect

Identifies ESP8266, ESP32 and newer variants automatically.

πŸ—‚οΈ

Multiple Images

Flash bootloader, partitions and app at separate addresses.

🧽

Erase Flash

Full-chip erase for a clean start.

🏠

Local Files

Firmware is read from your disk, never uploaded.

Why This Tool Beats the Alternatives

  • No Python, pip or esptool installation.
  • Uses Espressif's maintained library rather than a simulated or partial implementation.
  • Supports split images at custom addresses, not only single merged files.
  • Clear errors and cable/baud troubleshooting hints.
  • Free and without sign-up.

Pro Tips

  • If connection hangs at β€œConnecting…”, hold the BOOT (IO0) button while clicking Connect, then release it.
  • Use a USB cable that carries data β€” many phone-charging cables are power-only.
  • Windows may need the CP210x or CH340 driver for older boards; boards with native USB (S2, S3, C3) usually work without one.

Plug in your board, click Connect device above, and flash your firmware.

Frequently Asked Questions