UART Baud Rate / Bit Timing Calculator

Compute UART bit time, frame time, throughput, and baud rate divisor error.

Bit time

—

Hover the frame to identify each bit. Data bits reflect the value entered above, sent LSB first.


For reference and prototyping. Verify any safety- or design-critical value against the component datasheet or a second method before relying on it. Full disclaimer.

About this tool

Work out UART serial timing from a baud rate and frame format: how long a single bit lasts, how long a full character frame takes, and the real byte-per-second throughput once framing overhead is counted. Add your microcontroller's clock frequency and it also computes the baud rate register value and the resulting error — the same check datasheets publish in their baud rate tables.

What "baud rate" means here. For a standard asynchronous UART, baud rate equals bits per second on the wire. 9600 baud is a bit time of 1 ÷ 9600 = 104.17 µs. That's the interval the receiver samples at, so both ends must agree on it in advance — UART has no shared clock line.

Framing overhead. Every byte is wrapped in a frame: 1 start bit, the data bits (usually 8), an optional parity bit, and 1 or 2 stop bits. The common "8N1" format is 10 bits on the wire per 8 data bits, so effective throughput is only 80% of the baud rate — 9600 baud carries 960 bytes/s, not 1200. Adding parity or a second stop bit lowers it further.

The baud rate error check. A microcontroller generates its baud clock by dividing its main clock: divisor = round(Fclk ÷ (oversample × baud)) − 1. Because that has to be an integer, the actual baud rate is slightly off target. A UART tolerates roughly ±2–3% total error between the two ends before bits near the end of a frame get sampled in the wrong place and data corrupts.

Worked example. 16 MHz clock, 16× oversampling, 115200 target: divisor = round(16000000 ÷ (16 × 115200)) − 1 = round(8.68) − 1 = 8. Actual baud = 16000000 ÷ (16 × 9) = 111111, an error of −3.5% — borderline. This is why 14.7456 MHz and 3.6864 MHz crystals exist: they divide evenly into the standard baud rates for 0% error.

Standard baud rates are 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, and sometimes higher. They're not arbitrary — each is a multiple of 300, which itself comes from early modem and teletype hardware.

For other embedded timing, see the PWM duty cycle calculator and RC time constant calculator. For the components on the bus, the resistor color code and Ohm's law calculator.

Frequently asked questions

Why does baud rate error matter?
Clock frequencies rarely divide evenly into a target baud rate, so the real rate is always slightly off. Most receivers tolerate up to about ±2–3% before bits late in a frame get misread. Check the combination before committing to a crystal.
What is the divisor formula based on?
divisor = round(Fclk ÷ (oversample × baud)) − 1, the style used by AVR (UBRR) and many other MCU UART peripherals with 8× or 16× oversampling.
Does frame time include start and stop bits?
Yes. Frame time is the bit time multiplied by every bit actually sent: 1 start, your data bits, an optional parity bit, and your stop bits.
Why is my real throughput lower than the baud rate?
Framing. 8N1 sends 10 bits per byte, so you get 80% of the baud rate in data. Parity and extra stop bits reduce it more.
What does 8N1 mean?
8 data bits, No parity, 1 stop bit — the most common UART configuration. 7E1 (7 data, Even parity, 1 stop) is the classic alternative from older equipment.
Why do 14.7456 MHz crystals exist?
They divide evenly into every standard baud rate, giving 0% error. A plain 16 MHz crystal has noticeable error at 115200 and above.