Reference sheet
UART baud & framing
Bit times per baud rate, and what 8N1 really sends

UART baud rate & framing cheat sheet
UART (Universal Asynchronous Receiver-Transmitter) has no shared clock wire, so the two ends have to agree in advance on how fast bits arrive and how each byte is packaged. The baud rate is only one of several settings both sides must match, not the whole story. Get the baud rate right but the framing wrong and the result usually isn't a clean failure — it's a stream of garbled characters, because the receiver ends up sampling the line at the wrong moments.
A UART frame starts from an idle line held high, then a start bit pulls it low for one bit time to mark the beginning of a byte and let the receiver sync to it. Next come the data bits — typically 8, though some devices use 5 to 9 — sent least-significant-bit first. An optional parity bit (none, even, or odd) can follow for basic error checking, and then one or occasionally two stop bits (1.5 stop bits shows up on some old hardware) return the line to idle high to mark the end of the frame.
Both ends must agree on all four settings together — baud rate, data bit count, parity, and stop bit count — which is why they're usually written as shorthand like '8N1' (8 data bits, no parity, 1 stop bit), by far the most common configuration today. Get any single one of these wrong, even with the baud rate matching, and you'll see garbled bytes or framing errors instead of a working link.
| Baud rate (bps) | Bit time | Byte time (8-N-1, 10 bits) | Typical use / notes |
|---|---|---|---|
| 1200 | 833 µs | 8.33 ms | Legacy telemetry and some very old GPS receivers; rare in new designs. |
| 2400 | 417 µs | 4.17 ms | Occasionally used on older sensors or long, noisy cable runs, where a slower rate improves reliability. |
| 4800 | 208 µs | 2.08 ms | Classic NMEA 0183 GPS default — many GPS modules still boot at this rate before being reconfigured. |
| 9600 | 104 µs | 1.04 ms | Historic 'safe default': Arduino Serial.begin() examples, many AT-command GSM modules (e.g. SIM800), and the first rate worth trying on an unknown board. (Note: HC-05 Bluetooth modules use 9600 baud for normal data traffic, but default to 38400 baud for AT commands.) |
| 19200 | 52.1 µs | 521 µs | A step up from 9600 on older industrial links; the Modbus RTU default on some devices (varies by manufacturer). |
| 38400 | 26.0 µs | 260 µs | Common alternate rate for GPS modules and Bluetooth Classic modules once reconfigured from their default. Also the rate used by marine AIS transponders for NMEA output, since AIS's data volume requires 38400 baud rather than the usual 4800. |
| 57600 | 17.4 µs | 174 µs | Seen on some flight-controller telemetry radios and older modems; increasingly displaced by 115200 in newer designs. |
| 74880 | 13.4 µs | 134 µs | Unusual but real: the boot-ROM log rate of the ESP8266, a side effect of its 26 MHz crystal rather than a chosen round number (the ESP32's boot ROM logs at 115200). Garbled boot text at 115200 on an ESP8266 board is usually this. |
| 115200 | 8.68 µs | 86.8 µs | Today's de facto default: ESP32/ESP8266 application UART, most USB-to-serial debug consoles, and most current microcontroller sample code. |
| 230400 | 4.34 µs | 43.4 µs | Faster firmware logging; most modern USB-serial bridges (CP210x, CH340, FTDI) handle it over short cables without trouble. |
| 460800 | 2.17 µs | 21.7 µs | High-throughput logging or flashing; needs a decent USB-serial adapter and short, clean wiring to stay reliable. |
| 921600 | 1.09 µs | 10.9 µs | Used by fast flashing tools (e.g. esptool.py's higher-speed modes) and high-rate data streaming; most sensitive to wire length, cable quality, and clock accuracy. |
When probing an unknown board, 8N1 is a safe framing guess almost always — the real unknown is usually just the baud rate. Try 115200 and 9600 first since they cover most devices, and if an ESP8266 boot log looks like garbage at 115200, try 74880 before assuming the port is dead. A logic analyzer's auto-baud or protocol decoder (or measuring the shortest pulse width in the data stream with a scope) will nail down an unfamiliar rate quickly. The often-quoted "must match within ~2-3%" rule for baud-rate mismatches is a rough guideline, not a hard spec — the actual tolerable error depends on the specific UART's oversampling and each frame's bit count, so treat it as a ballpark rather than a design threshold.







