ESP Flasher App

Browser-Based ESP32 & ESP8266 Flash Tool

0 flashes completed

Firmware Source
Choose firmware to flash onto your device
Drop .bin file here or click to browse
Single file (factory/merged image) or multiple partition files
Quick flash popular firmwares:
Device Connection
Plug in your ESP board via USB before connecting
No device connected
Flash Controls
Write firmware to device flash memory
Preparing... 0%
Flash Log
Serial Monitor
Live device output — Chrome / Edge only
Closed
Quick Reference
Default baud rate115200
Arduino Serial.begin()115200
Line ending (Arduino)CRLF (\r\n)
ESP.restart()Sends RST
Boot log on openYes — set baud first
Serial.println()appends \r\n
Tips

The serial monitor uses a separate port from the flasher. You cannot use both simultaneously on the same COM port.

If the output looks garbled, the baud rate probably doesn't match your firmware's Serial.begin() value.

Boot messages appear immediately on port open. If you miss them, press the EN / RST button on your board.

How to Flash Your ESP Device

No drivers, no IDE, no installation needed. Plug in your board and flash firmware directly from this browser page in under two minutes.

01
Choose Firmware
Pick an official project from the list, or switch to Upload mode and drop your own compiled .bin file.
02
Connect Device
Plug your ESP board in via USB. Click "Connect Device" and select your COM port from the browser dialog.
03
Flash
Click "Flash Now". The progress bar shows each stage in real time — fetching, connecting, writing, verifying.
04
Monitor
After flashing, open the Serial Monitor tab to see live output from your device at the correct baud rate.
Supported Chips
Powered by Espressif esptool-js — fully browser-based
ESP32 ESP32-S2 ESP32-S3 ESP32-C3 ESP32-C6 ESP32-H2 ESP32-P4 ESP8266
Troubleshooting
Common problems and how to fix them
"Failed to open port" or port not listed
Another application (Arduino IDE, PlatformIO serial monitor, etc.) is holding the COM port open.
Close all other serial tools, then try again
"MD5 of file does not match data in flash"
MD5 mismatch means data written to flash differs from the file. Common causes: firmware larger than physical flash (e.g. a 9.6MB .bin on a 4MB/8MB board), wrong flash size setting, or USB transfer errors at high baud.
Connect first — flash size is auto-detected from your chip
Device not entering bootloader / no response
The chip is not entering ROM download mode. Some boards require manual intervention to enter bootloader mode.
Hold BOOT/FLASH button, press EN/RST, release BOOT
"invalid header: 0xffffffff" in Serial Monitor
The device is booting but flash is erased or firmware is at the wrong address. Factory/merged .bin must go to address 0x0.
Use merged factory binary at address 0x0
Flash succeeds but device doesn't run correctly
Firmware was flashed at the wrong address. For multi-file flashing: bootloader at 0x1000 (ESP32) or 0x0 (ESP32-C3/S3), partition table at 0x8000, app at 0x10000.
Verify each partition address matches your chip
Browser says "Web Serial not supported"
Web Serial API is not available in your browser.
Use Google Chrome or Microsoft Edge 89+ on desktop
Frequently Asked Questions
Everything you need to know about browser-based ESP flashing
How do I flash firmware to my ESP32 using a browser?
Upload your .bin firmware file using the drag-and-drop zone above, connect your ESP32 board via USB, click "Connect Device" in Chrome or Edge, select your COM port from the browser dialog, then click "Flash Now". The progress bar will show each stage — connecting, writing, and verifying with MD5 checksum.
Do I need to install drivers or Arduino IDE to flash my ESP?
No. ESP Flasher App works entirely in your browser using the Web Serial API. You do not need to install any drivers, Python (esptool.py), Arduino IDE, PlatformIO, or any other software. Just open the page with Chrome or Edge, connect your board via USB, and you are ready to flash.
Which ESP chips are supported by this flasher?
All Espressif ESP chips are supported: ESP32, ESP32-S2, ESP32-S3, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2, ESP32-H4, ESP8266, and ESP8285. The flasher uses Espressif's official esptool-js library which auto-detects your chip when you connect.
Is my firmware uploaded to a server when I flash?
No. All processing is 100% local. Your .bin firmware file is read by the browser and written directly to your ESP device over USB. Nothing is uploaded to any server. This is a strict privacy guarantee — no firmware files, code, device info, or analytics ever leave your computer.
What if my ESP32 is not detected by the browser?
First, install the correct USB-to-serial driver for your board's chip (CP2102, CH340, or FTDI — see the USB Drivers section). Then try a different USB cable (some cables are charge-only), a different USB port, or restart your browser. Make sure no other apps (Arduino IDE, serial monitors) are using the port.
Can I flash multiple .bin files at the same time?
Yes. You can upload multiple .bin files and set a different flash address for each (e.g., bootloader at 0x1000, partition table at 0x8000, app at 0x10000). The files are flashed in order and you can drag-and-drop to reorder them before flashing.
What does "Erase before flashing" do?
When enabled, this option erases all existing data on the ESP flash memory before writing the new firmware. This ensures a clean flash but takes extra time. Disable it if you want to preserve existing data (like WiFi credentials stored in NVS) or if you are only updating a single partition.
What is the correct flash address for my firmware?
For a single merged or factory .bin file, always use address 0x0 regardless of chip. For multi-file flashing, typical addresses are: bootloader at 0x1000 (ESP32) or 0x0 (ESP32-C3/S3), partition table at 0x8000, and application at 0x10000 or 0x20000.
Flash Address Reference
Default partition addresses for multi-file flashing
Chip FamilyBootloaderPartition TableApp
ESP32 (classic) 0x1000 0x8000 0x10000
ESP32-S2 / S3 0x0 0x8000 0x10000
ESP32-C3 / C6 / H2 0x0 0x8000 0x10000
ESP8266 0x0 N/A 0x0

For a single merged / factory .bin, always use address 0x0 regardless of chip.

Partition Table Viewer
Upload a partition table .bin to inspect its entries
Click to upload a partition table .bin file
Typical offset: 0x8000
Browser Requirement

This tool uses the Web Serial API — a secure browser API that allows web pages to communicate with USB serial devices without any drivers or installed software. It is supported in Google Chrome and Microsoft Edge version 89 and above on Windows, macOS, and Linux desktops. It is not available in Firefox, Safari, or any mobile browser.

How WebSerial Works
Secure, local browser-based flashing

The Web Serial API allows supported browsers to communicate directly with your computer's USB and serial ports. This happens entirely locally on your machine.

When you click "Connect Device", the browser asks you to grant permission to a specific port. We do not have access to any other devices on your computer.

Privacy Promise: Your firmware files are read locally by your browser and sent directly to the ESP chip. No firmware files, code, or analytics are ever uploaded to our servers.

ESP Flasher App

The easiest way to flash firmware to ESP32, ESP8266, and all Espressif microcontrollers — directly from your browser, no installation required.

What is ESP Flasher App?

ESP Flasher App is a free online tool that lets you flash firmware onto any ESP32, ESP8266, ESP32-S3, ESP32-C3, ESP32-C6, or other Espressif microcontroller directly from your web browser — without installing any software, drivers, or IDE.

Traditional firmware flashing requires installing esptool.py (Python), the Arduino IDE, or platform-specific USB drivers. With ESP Flasher App, you simply open a browser, connect your device via USB, select your .bin firmware file, and flash. It works on Windows, macOS, Linux, and ChromeOS.

It uses the Web Serial API and Espressif's official esptool-js library to implement the full ROM bootloader protocol. All processing happens locally in your browser. Your firmware files never leave your computer.

Privacy & Security

Your firmware files never leave your device. The flasher communicates directly between your browser and your ESP board over the local USB serial connection using the Web Serial API.

No analytics, no trackers, no ads. We do not collect or store any user data through this tool. All flashing operations are 100% local and private.

Why Use a Browser-Based ESP Flasher?

No Software Installation. Unlike esptool.py (which requires Python) or the Arduino IDE (which requires a full development environment), ESP Flasher App works directly in Chrome or Edge. There is nothing to download, install, or configure.

No Driver Hassle. Many ESP boards use CP2102, CH340, or FTDI USB-to-serial chips that require separate driver installation for traditional tools. The Web Serial API handles this transparently.

Cross-Platform. Use the same tool on Windows, macOS, Linux, and ChromeOS. No platform-specific setup required.

Ideal for: Quick firmware tests, deploying firmware to multiple devices in production, helping non-technical users flash devices, classroom and workshop environments, and ESP32/ESP8266 hobbyist projects.

Technical Details
Flash engineEspressif esptool-js 0.4.6
MD5 verificationCryptoJS 4.1.1
Browser APIWeb Serial API (Chrome/Edge 89+)
Supported chipsESP32, ESP32-S2/S3, ESP32-C2/C3/C5/C6, ESP32-H2/H4, ESP8266, ESP8285
Data handling100% local, no server upload
CompressionEnabled — faster flash write
Backup supportFull flash read and download
PlatformWindows, macOS, Linux, ChromeOS
Built byESP Flasher App

Keyboard Shortcuts

Upload firmwareCtrl+O
Connect deviceCtrl+Shift+C
Flash firmwareCtrl+Enter
Cancel flashEscape
Reset deviceCtrl+R
Toggle themeCtrl+T
Toggle shortcuts?