This serial monitor online lets you read and send data on any serial port your computer can see: an Arduino, ESP32, ESP8266 or Raspberry Pi Pico, a USB to serial adapter with a CH340, CP2102, FTDI or PL2303 chip, a 3D printer, a GPS module or an old RS-232 device. Pick the port, set the baud rate, data bits, parity, stop bits and flow control, and the output appears with optional timestamps and a hex view. You can switch the DTR and RTS lines, watch CTS, DSR, DCD and RI, reset a board and run a loopback test that checks a port or adapter end to end. It works in Chrome, Edge and Opera on computers, in Firefox 151 and later, and with some limits in Chrome on Android.
How to use the serial monitor
- Connect the board or adapter with a USB cable that carries data, not a charge-only cable.
- Set the baud rate to match the device. For an Arduino sketch, use the number in
Serial.begin(). - Press Choose port, select the device in the list and press Connect. Output starts appearing.
- Type a command in the box and press Enter. Choose the line ending the device expects: most Arduino sketches that read lines want New line.
- Turn on Hex view to see every byte, including ones that do not print. Save log downloads everything as a text file.
Serial settings explained
| Setting | What it means | Usual value |
|---|---|---|
| Baud rate | Bits per second on the wire. Both ends must match | 9600 or 115200 |
| Data bits | Bits in each character | 8 |
| Parity | An extra check bit after each character | None |
| Stop bits | Idle bits that end each character | 1 |
| Flow control | RTS and CTS lines that pause sending when a buffer fills | None |
| Line ending | Characters added when you press Send | New line (LF) |
The usual combination is written 8N1: 8 data bits, no parity, 1 stop bit. Change these only when a device's manual says so, as some industrial and older equipment uses 7E1.
| Baud rate | Commonly used by |
|---|---|
| 9600 | Arduino examples, GPS modules, many sensors |
| 57600 | Older Arduino bootloaders, some radios |
| 74880 | ESP8266 boot messages |
| 115200 | ESP32, ESP8266 sketches, Pico, most modern boards, GRBL |
| 250000 | Marlin 3D printer firmware in many builds |
The serial monitor is not showing anything
Work through these from the most common:
- The baud rate is wrong. A mismatch usually shows garbage, but very far off rates show nothing at all.
- The sketch never prints. Check that
Serial.begin()runs before your first print. - The board printed before you connected. Opening the port resets an Uno, Nano or Mega through the DTR line, which restarts the sketch so you catch setup(). Boards with native USB do not reset this way. Press Reset Arduino or Reset ESP32, or the board's reset button.
- Native USB boards need a setting. On an ESP32-S3 or C3 in the Arduino IDE, set USB CDC On Boot to Enabled. On a Leonardo or Micro, add
while (!Serial);afterSerial.begin(). - TX and RX are not crossed. With a USB to serial adapter, the adapter's TX goes to the device's RX and RX to TX, and the grounds must be joined.
- The device expects a different line ending. If it answers commands only sometimes, try Both CR and LF.
Garbled characters or line errors
Random symbols almost always mean a baud rate mismatch. If the Line errors count climbs, the port is reporting framing or parity errors, which also point to mismatched settings or electrical noise on long wires. Garbage only during startup is normal on ESP8266 boards. A 3.3 V device on a 5 V adapter, or a long unshielded cable, can also corrupt data. Check the voltage jumper on the adapter.
The port does not appear
If the board is missing from the list, the computer has not created a serial port for it:
- Drivers. Boards with a CH340 or CH9102 chip may need WCH's driver on older Windows or Mac versions, CP210x boards need Silicon Labs' driver if Windows Update does not supply it, and FTDI chips work out of the box on Windows, macOS and Linux. The tester names the chip once the port opens.
- Prolific PL2303 adapters. Windows rejects many old or copied PL2303 chips with a "phased out" message in Device Manager. Replace the adapter with a CP2102, CH340 or FTDI one.
- Linux permissions. Add yourself to the dialout group with
sudo usermod -aG dialout $USER, then log out and back in. On Ubuntu, a CH340 port that vanishes a second after plugging in is grabbed by the brltty package. Remove it withsudo apt remove brltty. - The cable or port. Try another cable and a port on the computer itself. If Windows shows an unknown USB device, follow the usb device not recognized guide.
- Another program holds the port. Close the Arduino IDE's Serial Monitor, PuTTY, a slicer such as Cura or another browser tab. Only one program can use a port at a time.
Arduino and ESP32 reset and boot mode
Classic Arduino boards wire DTR to the reset pin through a capacitor, so DTR going on resets the board. Reset Arduino turns DTR off and on again. Most ESP32 boards use DTR and RTS together through two transistors: RTS pulls the EN (reset) pin low and DTR pulls GPIO0 low. Reset ESP32 pulses EN with GPIO0 high, so the board restarts and runs its program. ESP32 boot mode holds GPIO0 low while EN is released, and the board waits for a firmware upload, which shows up at 115200 baud as "waiting for download". If an upload tool reports a wrong boot mode, hold the board's BOOT button while it connects.
Test a serial port with a loopback
A loopback test proves a port or adapter works without any other device. Join TX to RX with a jumper wire, open the port and press Loopback test. The tester sends 1,024 bytes and checks every one comes back, measures the round trip and the throughput, and checks the control lines. On a 9 pin RS-232 connector, the loopback links pins 2 and 3 for data, 7 and 8 for RTS and CTS, and 4 to 6 and 1 for DTR, DSR and DCD.
| Result | Meaning |
|---|---|
| Pass, all bytes back | Transmit, receive and the adapter's chip work |
| Nothing came back | TX or RX dead, or the jumper is on the wrong pins |
| Some bytes missing | Overruns: lower the baud rate or change the cable |
| Bytes changed | Loose wiring, noise, or a failing adapter |
RS-232 ports use up to 15 V and swing below zero. Never connect one directly to an Arduino, ESP32 or Pico pin, which expect 3.3 V or 5 V logic. Use a level shifter such as a MAX3232 board.
Other ports and devices
For music gear on USB or 5 pin DIN, the midi tester reads notes and controls. Wireless modules that use Bluetooth Low Energy instead of a serial profile show up in the bluetooth tester. 3D printers often accept G-code over serial at 115200 or 250000 baud. On Marlin firmware, send M503 to list the stored settings before you work through the 3d printer calibration steps, and the 3d printer test prints page has models to check the result. GPS modules print NMEA sentences, usually at 9600 baud. To check the GPS in a phone instead, use the gps test.
What this serial monitor cannot do
The browser only opens ports you pick, one tab at a time, so it cannot watch the traffic between another program and a device the way a port sniffer does. It cannot open a port another program is using, and virtual ports made by some emulators and remote desktop tools may not appear. For terminal work on a computer without a supported browser, use the Arduino IDE's Serial Monitor, PuTTY on Windows, or screen /dev/ttyUSB0 115200 on Mac and Linux.
Serial monitor questions
Is there an online Arduino serial monitor?
Yes, this page. It works like the Serial Monitor in the Arduino IDE: pick the port, set the same baud rate as Serial.begin() in your sketch, and the output appears. It adds timestamps, a hex view, saving the log and control of the DTR and RTS lines.
Why does my serial monitor show strange characters?
The baud rate does not match the device. Set it to the value in your code, usually 9600 or 115200. ESP8266 boards print their first boot messages at 74,880 baud, so a few garbled characters before your own output are normal on those.
Which browsers can open serial ports?
Chrome, Edge and Opera on Windows, macOS, Linux and ChromeOS, and Firefox 151 and later on computers, which asks you to allow serial access the first time a site requests a port. Chrome on Android opens Bluetooth serial modules from version 138 and wired USB ports from version 148, but only on phones whose Android system makes those ports available, so many phones list none. Safari and every browser on iPhone and iPad cannot open serial ports.
How do I find my board's COM port?
Unplug the board, press Choose port and look at the list, then plug it in and look again: the new entry is your board. On Windows, Device Manager lists it under Ports (COM & LPT). On a Mac it appears as /dev/cu.usbserial or /dev/cu.usbmodem, and on Linux as /dev/ttyUSB0 or /dev/ttyACM0.
Can I use this serial port tester with an ESP32?
Yes. Set 115200 baud for most ESP32 sketches and ESP-IDF projects. Colored ESP-IDF log lines keep their colors, Reset ESP32 restarts the board through the EN line, and ESP32 boot mode puts it into download mode.
Is my data sent anywhere?
No. The page talks to the port directly from your browser. Nothing is uploaded, and the log only exists in this tab until you save it or close the page.