In the browser
You can try a merged image without installing a toolchain first. The page loads Espressif’s esp-emulator build.
Official esp-emu shell · engine v0.49.0
ESP Emulator is a browser shell around Espressif’s official esp-emu. Pick a chip, load a real IDF merged .bin (or compile an allowlisted sample), and press Run. UART is the main stage; GPIO and registers sit beside it. The hosted page has no real network — same as official. The file is not uploaded.
The engine is Espressif’s official esp-emu WASM. This site is the lab shell: edit → build → serial, with GPIO and registers on the side.
You can try a merged image without installing a toolchain first. The page loads Espressif’s esp-emulator build.
The .bin is read in this tab. The site does not store firmware.
ESP32-C3, C5, C6, H2, P4, S3, and S31. Match the part you compiled for.
The UART console is the primary stage. Live speed, cores, a clickable DevKit LED board, registers, and a hex dump sit beside it — not a wiring canvas.
The emulator runs signed out. GitHub sign-in remembers you and starts a short tour the first time you open the lab.
Signed in, you can compile a whitelist of ESP-IDF examples for ESP32-C3 or C6 and load the image here. Other firmware you still compile yourself.
The same sequence as flashing a board, except the last step is Run.
Use the target you passed to idf.py set-target.
idf.py merge-bin writes build/merged-binary.bin: bootloader, partition table, and app. Or sign in and compile a whitelist sample for C3 or C6.
UART0 prints the boot log. Pause and Step walk one instruction. Click an input pin to drive it.
Read a hello_world boot log before the board arrives.
Check that a merged image reaches the app, and see which GPIO the firmware drives.
This hosted page has no real outbound internet (same as official browser builds). SoftAP can associate and hand out DHCP inside the tab. Carrying frames to the public network needs a local tools/ws-net-proxy.py plus TAP. An HTTPS page cannot open ws:// to your machine — serve this site (or local esp-emu) over HTTP on localhost when you need the proxy.
Use the lab to run real IDF firmware and watch UART. This hosted page has no real network (same as official). Use a local install when you need the proxy.
| This site | Local esp-emu | |
|---|---|---|
| Open a merged image | Yes, in the lab | Yes |
| UART, GPIO, registers | Yes | Yes |
| Real network | No. An HTTPS page cannot open ws:// to your machine. | Yes, with tools/ws-net-proxy.py |
| Install | None | A local build of the emulator |