Baud rate is the number of symbol transitions (signal state changes) per second on a communication channel, measured in baud (Bd). In binary signaling — where each symbol carries exactly one bit — baud rate and bit rate are numerically equal, but in multi-level signaling schemes a single symbol can encode more than one bit, making the bit rate a multiple of the baud rate.
In practice
In most embedded serial work, "baud rate" is used interchangeably with "bit rate" because the dominant interfaces — UART, RS-232, RS-485, and similar async serial links — use binary (two-level) signaling. Common UART baud rates are 9600, 19200, 38400, 57600, and 115200 baud, with 115200 being the most frequently seen default for debug consoles on modern MCUs. Both ends of a link must be configured to the same rate; a mismatch causes framing errors and corrupted data, which is one of the first things to check when a serial link misbehaves.
On UART-based links, the baud rate directly determines the timing of each bit period. At 115200 baud, one bit lasts roughly 8.68 µs. The UART peripheral on most MCUs derives this timing by dividing down from a peripheral clock, so the actual baud rate is an approximation. The resulting error is typically well under 2%, which is within the tolerance of standard UART framing, but choosing an unusual baud rate with a given peripheral clock can push the error higher and cause intermittent failures — especially over long bursts. The "MSP430 LaunchPad Tutorial - Part 4 - UART Transmission" illustrates this clock-division calculation concretely for a common MCU family.
When bit-banging a serial interface in software rather than using a hardware peripheral, the baud rate sets the required loop timing precision. At higher rates the timing budget per bit shrinks, making it harder to meet without careful cycle counting or hardware timer assistance. The post "Bit-Banged Async Serial Output And Disciplined Engineering" covers how tight these constraints become in practice.
Baud rate is a link-layer parameter and says nothing about protocol framing, packet boundaries, or throughput at the application level. Overhead from start bits, stop bits, and parity reduces usable data throughput below the raw baud rate even in the best case. At the protocol level, additional framing, encoding, and flow-control overhead reduce effective throughput further, a topic addressed in "Help, My Serial Data Has Been Framed: How To Handle Packets When All You Have Are Streams".
Discussed on EmbeddedRelated
Frequently asked
Is baud rate the same as bit rate?
In binary signaling — which covers
UART,
RS-232,
RS-485, and most
MCU serial peripherals — yes, the two numbers are equal. The distinction matters when each symbol encodes multiple bits, as in QPSK or QAM modems, but those modulation schemes are rarely encountered in bare-metal embedded work.
Why does my UART produce framing errors even though I set the correct baud rate?
The hardware peripheral divides a peripheral clock to approximate the target baud rate; the result is rarely exact. If the clock frequency is not evenly divisible to produce the desired rate, the accumulated error across a frame can exceed the
UART's sampling tolerance (typically around 2-3% for standard async framing). Check the actual baud rate error in your datasheet's baud rate table, or recalculate using your actual peripheral clock frequency. Also verify that both ends of the link are using the same baud rate, stop bits, and parity settings.
What is the maximum practical baud rate for a UART link?
It depends on the hardware peripheral, the peripheral clock frequency, PCB trace quality, and cable length. Many STM32 and similar Cortex-M parts support
UART baud rates up to several Mbps when clocked appropriately. In practice, 115200 baud is the common ceiling for
RS-232 cable runs, while short CMOS-level traces can typically run at 1 Mbps or higher. Higher rates reduce noise margin and increase sensitivity to clock accuracy.
How do I calculate the actual data throughput from the baud rate?
For a standard 8N1
UART frame (1 start bit, 8 data bits, 1 stop bit), each byte costs 10 bit periods. At 115200 baud that is at most 11520 bytes per second of raw frame throughput. Application-level throughput will be lower once protocol framing, acknowledgements, and any retransmission overhead are counted.
Does baud rate apply to SPI and I2C as well?
Those interfaces are almost always described in bits per second (bps) or clock frequency (Hz), not baud. 'Baud rate' as a term is most commonly used with asynchronous serial interfaces (
UART/
RS-232/
RS-485). Technically the concept of symbol rate applies to any signaling channel, but calling an
I2C or
SPI speed a 'baud rate' is non-standard and can cause confusion.
Differentiators vs similar concepts
Baud rate (symbols per second) is often conflated with bit rate (bits per second). They are numerically equal only in binary signaling. Baud rate is also sometimes confused with bandwidth in the informal sense of "how fast is this link," but bandwidth has a precise meaning in signal theory (frequency range) that is distinct from symbol rate. Within the
UART world, baud rate is a physical-layer parameter and should not be confused with throughput, which is reduced by framing overhead and higher-layer protocol costs.