Chris Collins

Tools · embedded

Serial monitor and ESP flasher

A Web Serial terminal and live plotter for Arduino, ESP32, ESP8266, and Pico boards, plus an ESP firmware flasher built on esptool-js — all in the browser, no drivers or IDE.

Added

Works with

How to use it

Browser support: Web Serial works in desktop Chrome, Edge, and Opera only — not Safari, Firefox, or mobile browsers. The page shows a notice when it is missing. On Linux your user needs access to the serial device (usually the dialout group). Only one program can open a port at a time, so close the Arduino IDE serial monitor first.

Terminal

Choose the baud rate (and, rarely, data bits, parity, stop bits, and flow control), then press Connect and pick the board in the browser’s port list. Changing settings while connected reopens the port. DTR and RTS set the modem lines; Reset board pulses them the way esptool and the Arduino IDE do, which restarts most ESP32 and Arduino boards.

Incoming data shows as text (with ANSI colours, so ESP-IDF logs keep their colours), hex, or both, with optional millisecond timestamps. Type in the send box and press Enter; \n, \r, \t, and \xNN escapes work in text mode, and hex mode sends raw bytes such as de ad be ef. Choose the line ending, recall earlier lines with ↑/↓, and save frequent commands as macro buttons (right-click to remove). Save log downloads everything received.

Plotter

The plotter reads the same stream and uses the Arduino Serial Plotter format: one line per sample, either label:value pairs (temp:21.5, humidity:40) or bare numbers separated by spaces, tabs, or commas. Pick how many points to show, auto-scale or fix the Y range, hide series from the legend, pause, and export everything as CSV. Demo data shows how it works without a board.

⛶ Full screen (or F) gives the terminal or the plot, whichever tab is open, the whole screen — the browser’s full screen where it is allowed, otherwise a full-window layer. Its controls (the send box and macros, or the legend) move above it, and the plot is redrawn as the window changes. Escape leaves.

ESP flasher

The flasher uses esptool-js (loaded from cdn.jsdelivr.net when you first connect) and supports ESP8266, ESP32, -S2, -S3, -C2, -C3, -C5, -C6, -H2, and -P4. Connect to chip puts the board into its bootloader and shows the chip, features, crystal, MAC address, and flash size. If it does not connect, hold BOOT, tap RESET/EN, and release BOOT.

Add .bin files by dropping them or choosing them. Offsets are guessed from the file names and corrected for the chip: the bootloader at 0x1000 (ESP32, S2), 0x0 (S3, C3, C6, H2, ESP8266), or 0x2000 (C5, P4); partitions.bin at 0x8000; boot_app0.bin at 0xE000; the application at 0x10000; and a merged image at 0x0. Edit any offset by hand. Flash writes compressed data, verifies each image with MD5, and resets the chip. Erase flash wipes the whole chip, including saved Wi-Fi settings and file systems.

Flashing replaces the board’s firmware, so use images built for your chip and flash size. The files are sent only to the board, never to a server.

For more — build-folder arguments (flasher_args.json, flash_args), merged images, security state, erasing or reading back a region, full-flash backups, and verifying against files — use the dedicated ESP flasher.

Sharing

Share link copies a URL that opens this tool with your current settings — every value it remembers between visits, packed into ?s=. Opening a link replaces your saved settings for this tool. Command history is not included. Nothing connects until you press Connect.

Runs entirely in your browser — network requests go only to the services named on this page.