Do I need to download or install anything?
Not in Chrome or Edge: the page uses the Web Serial API built into the browser — no desktop client, no extension. In Firefox 151 and later you first install the site permission add-on it prompts for; that is the browser's permission mechanism, not a serial driver. Either way you need the driver for the serial chip: if a COM port shows up in Device Manager, the driver is working; if not, get the driver from the chip vendor's website.
Which browsers work? Can I use it on a phone?
Desktop Chrome, Edge and Opera (Chrome 89 and later) connect directly. Desktop Firefox 151 and later also works after you install the site permission add-on it prompts for. Safari and iOS do not support Web Serial. Chrome for Android 138+ exposes only Bluetooth (RFCOMM) serial ports; wired USB serial needs Chrome 148+ on Android 17, and the phone itself must expose wired serial ports. Where the page cannot connect it says so, and the demo device still works.
Is any serial data uploaded to a server?
No. Your browser reads and writes the port directly, and the tool never sends the bytes you send or receive to our servers. Send history and settings are stored in your own browser.
The port list is empty after I click Select port & connect. What now?
The operating system has not detected a serial device. Check that the cable carries data, not just power, and that the board is powered. On Windows a COM port should appear in Device Manager; if it does not, install the driver for the chip (CH340, CP2102 and so on).
Why does the port fail to open?
The browser reports every failure with the same message, Failed to open serial port., so the cause has to be found by elimination. A common cause is another program holding the port: close other serial tools, the Arduino IDE serial monitor, an IDE that is debugging, or another tab of this tool. On Linux your user must be in the dialout group (uucp on Arch). Also check that the device is still plugged in, and try a standard baud rate — some drivers refuse unusual ones.
How do I fix garbled Chinese text?
Look at the English letters and digits first. If they are fine and only Chinese is garbled, it is an encoding mismatch — a common case is a device sending GBK. The tool detects this, offers to switch and redraws what was already received. If letters and digits are garbled too, the baud rate or another setting does not match the device.
How do I send HEX? Which formats are accepted?
Switch the send mode to HEX and type 01 03 00 0A, 0x01,0x03 or 0103000A, in upper or lower case. Invalid characters such as G and odd digit counts are reported, never skipped, and the bytes to be written are previewed under the input.
How do I add a Modbus CRC, and why is the low byte first?
Set Append checksum to CRC-16/MODBUS and type only the address, function code and data; the CRC is added at the end. Modbus RTU sends the CRC low byte first: 0xCDC5 goes out as C5 CD.
Why is one frame split over two lines, or several frames merged into one?
HEX view splits frames on the idle time between arrivals, 50 ms by default. If the device pauses longer than that in the middle of a frame, the frame is split; if frames follow each other more closely, they merge. Set the frame gap above the in-frame pause and below the gap between frames.
What are DTR and RTS, and why did my board reset when I connected?
DTR and RTS are two serial control lines that many boards wire to their reset circuit. When Chrome opens a port it sets both lines active — an implementation detail, not part of the standard — so boards that reset on DTR, such as the Arduino Uno, usually reset once when you connect, and a web page cannot prevent it. On the common ESP32 auto-program circuit the chip runs normally while both lines are active and is held in reset only when RTS is active and DTR is not. Use the toggles after connecting; if an ESP32 goes silent, check that you did not switch off DTR alone.
Can I open the same port in another serial tool at the same time?
On Windows, no: a COM port can be open in only one program at a time. On Linux and macOS it depends on whether the first program asked for exclusive access. If it did, opening the port here fails; if it did not, both programs open it and split the incoming data between them, which looks like lost bytes. Use one program at a time.
Are custom baud rates supported?
Yes. The last entry in the list is Custom, where you can type any rate, such as 74880 — the rate the ESP8266 boot ROM prints at. The browser passes the value through unchanged; whether it works depends on the USB-to-serial chip and its driver. Some round it to the nearest rate they support, and on some systems the port then fails to open.
What is the demo device?
A simulated microcontroller built into the page, so no hardware is needed. On connect it prints a start-up message in GBK — a ready-made demonstration of the encoding hint — and then reports a temperature every 2 seconds. It answers AT with OK and other AT commands with ERROR. It answers a Modbus function 03 read addressed to slave 1 with a correct CRC; like a real slave it stays silent when the CRC is wrong or the frame is for another address. Anything else is echoed back.