In the browser
You can try a merged image without installing a toolchain first. The page loads Espressif’s esp-emulator build.
Browser bench · engine v0.49.0
ESP Emulator is a quiet shell around Espressif’s official emulator. Pick a chip, load a merged flash image, and press Run. The boot log, GPIO, and registers stay here. The file is not uploaded.
The emulator is the official wasm build. This site loads the image and keeps the console and dashboard in front of you.
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.
UART0 you can type into, live speed, cores, GPIO you can click, registers, and a hex dump.
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 build the IDF hello_world for ESP32-C3 or C6 on GitHub Actions and load it 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 build hello_world 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.
Use the lab to open an image and watch the console. Use a local install when the firmware needs a real network.
| 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 |