Online Serial Port Debugger
Browser-based serial debugging tool - no download required, real-time monitoring via Web Serial API
Connection
Data Monitor
Send Data
Send History
Statistics
Serial Port Debugger Documentation
How to Use This Tool
- Connect your serial device to the computer
- Configure connection parameters (baud rate, data bits, parity, stop bits)
- Click "Connect" to establish serial connection
- Monitor received data in real-time
- Send data in text or HEX format
- Use send history to repeat previous commands
- View connection statistics and data rate
Connection Parameters
Implementation Principles
This tool is implemented using the Web Serial API, a modern browser interface that allows web applications to communicate directly with serial devices. Below are the core implementation details:
Core API: Web Serial API
The tool is built on the Web Serial API, which provides JavaScript interfaces to access serial ports through the browser.
Main Features:
- Native browser serial port access without installing drivers or plugins
- Supports multiple serial port configurations (baud rate, data bits, parity, stop bits, flow control)
- Bidirectional data communication using Readable/Writable Streams
- Asynchronous operations based on Promises and async/await
Implementation Steps
1. Request Serial Port Access
const port = await navigator.serial.requestPort();
Use navigator.serial.requestPort() to prompt the user to select a serial port device. This requires user interaction to ensure security.
2. Configure and Open Port
await port.open({
baudRate: 9600,
dataBits: 8,
parity: 'none',
stopBits: 1,
flowControl: 'none'
});
Call the port.open() method with configuration parameters including baud rate, data bits, parity, stop bits, and flow control.
3. Read Data
const reader = port.readable.getReader();
while (true) {
const { value, done } = await reader.read();
if (done) break;
// Process received data (Uint8Array)
const text = new TextDecoder().decode(value);
}
Get a reader from port.readable and use an async loop to continuously read data. Received data is in Uint8Array format and needs to be decoded using TextDecoder.
4. Send Data
const writer = port.writable.getWriter();
const encoder = new TextEncoder();
const data = encoder.encode('Hello Serial!');
await writer.write(data);
Get a writer from port.writable, use TextEncoder to convert strings to Uint8Array, then call writer.write() to send data.
5. Close Connection
await reader.cancel();
await reader.releaseLock();
await writer.releaseLock();
await port.close();
Before closing, release the reader and writer locks, then call port.close() to close the serial port connection.
Key APIs Used
-
navigator.serial.requestPort() - Request user to select a serial port -
port.open(options) - Open serial port with configuration -
port.readable.getReader() - Get read stream reader -
port.writable.getWriter() - Get write stream writer -
reader.read() - Read data from serial port -
writer.write(data) - Write data to serial port -
TextDecoder / TextEncoder - Convert between strings and byte arrays -
port.addEventListener('disconnect') - Listen for device disconnect events
Official Documentation Reference
Key Features
Web Serial API
Direct browser access to serial ports without additional software
Real-time Monitoring
Live data monitoring with timestamp and auto-scroll support
HEX Mode
Send and receive data in hexadecimal format with validation
Send History
Track and replay previously sent commands
Statistics
Monitor data transmission rates and connection time
Multi-language
Support for Chinese, English, Japanese, French, and Spanish
Common Use Cases
Development & Debugging
- Arduino and ESP32 development
- Embedded system debugging
- Firmware development and testing
- IoT device configuration
Testing & Communication
- AT command testing for modems
- Sensor data monitoring
- Protocol analysis and debugging
- Industrial device communication
Browser Support & Requirements
Supported Browsers
- Chrome 89+
- Edge 89+
- Firefox (not supported)
- Safari (not supported)
Requirements
- Chromium-based browser with Web Serial API support
- HTTPS connection (required for Web Serial API)
- User permission to access serial ports
- Compatible serial device drivers installed
Related Standards and Specifications
For more information: Wikipedia RS-232, UART Protocol Standards Documentation
Frequently Asked Questions
How do I use serial debugging in a browser?
Open the tool in Chrome or Edge (version 89+), click "Connect," then select your serial device from the browser prompt. The Web Serial API communicates with the device directly - no drivers or plugins needed. Make sure you are on an HTTPS page and grant the required permissions when prompted.
Which browsers support the Web Serial API?
Chrome 89+ and Microsoft Edge 89+ are the two Chromium-based browsers that fully support the Web Serial API. Firefox and Safari do not currently support this API. If you are on an unsupported browser, consider switching to Chrome or Edge.
How do I connect a Modbus device through the browser?
Connect your Modbus RTU/ASCII device via a USB-to-serial adapter, then open the serial debugger, select the correct COM port, set the matching baud rate and parity, and click "Connect." You can then send raw Modbus frames in HEX mode or use text mode for AT-command-based devices.
How do I choose the right baud rate?
The baud rate must match your device's configuration. Common values are 9600 (GPS modules, legacy modems), 115200 (Arduino, ESP32, and most IoT devices), and 57600 or 38400 (older systems). When in doubt, consult your device's datasheet or try 115200 first.
Can I use USB-to-serial adapters with this browser-based tool?
Yes. CH340, CP2102, FTDI, PL2303, and similar USB-to-serial adapters all work once the appropriate operating system drivers are installed. After plugging in the adapter, select the corresponding COM/ttyUSB port from the browser's port selection dialog.
Related Tools
CRC Calculator
Calculate CRC-8, CRC-16, CRC-32, CRC-64 checksums with support for Modbus, CCITT and other protocol standards
Base Converter
Convert between binary, octal, decimal, and hexadecimal number systems with custom base support (2-36)
Timestamp Converter
Convert between Unix timestamps and human-readable date/time
Text Toolkit
Comprehensive text manipulation toolkit with word counter, data extraction, split/join, line filter, prefix/suffix operations
Charset Converter
Convert text encoding between UTF-8, GBK, Big5, Shift_JIS, ISO-8859, Windows codepages with auto-detection
Regex Tester
Test and debug regular expressions with instant match results