Baud Rate Calculator (Serial Throughput and Frame Time)
Turn a baud rate and a serial frame (8N1, 7E1, 8E2) into real bytes per second, bit time and frame time. Shows how much of the line framing costs.
Baud Rate Calculator
Background.
A serial port configured for 115200 baud does not move 115200 bits of your data every second, and it does not move 14400 bytes. Asynchronous serial framing wraps every character in overhead: one start bit before it, an optional parity bit after it, and one, one and a half, or two stop bits behind that. The UART datasheet puts it plainly when defining a break condition — a full frame is the total time of start bit, data bits, parity and stop bits. This calculator counts those bits and tells you what is left for payload.
For the near-universal 8N1 configuration the frame is ten bits long for eight bits of data, so exactly 20% of the line is framing. At 115200 baud that works out to 11,520 characters per second, 11,520 bytes per second and 92,160 bit/s of actual payload. Switch to 7E1 and the frame is still ten bits, but only seven of them are yours, so throughput drops to 840 bytes per second at 9600 baud instead of 960. Add a second stop bit and even parity to an 8-bit word and the frame grows to twelve bits, costing a third of the line.
The page also keeps baud and bit rate apart, because they are not the same quantity. Baud is a symbol rate — the ATIS Telecom Glossary defines it as the number of discrete signal conditions or events per second. Bit rate is baud multiplied by the number of bits each symbol carries. On a two-level line, which is what plain RS-232 and TTL serial are, a symbol is one bit and the two numbers coincide. On multi-level modulation they do not: a 2400-baud telephone channel carrying four bits per symbol is a 9600 bit/s link. Set bits per symbol to 1 and you have a UART calculator; raise it and you have the general relation.
Alongside throughput the calculator reports bit time, symbol time and frame time in microseconds, which is what you need when sizing an inter-character timeout, budgeting an interrupt handler, or reading a capture off an oscilloscope.
What is baud rate calculator?
Baud rate is the rate at which symbols are placed on a communication line, measured in symbols per second. On an asynchronous serial link each character is transmitted inside a frame consisting of a start bit, five to eight data bits, an optional parity bit, and one, one and a half, or two stop bits. Because the frame carries more bits than the character does, the payload throughput of the link is always lower than its baud rate: the ratio is data bits divided by frame bits. The classic 8N1 configuration — eight data bits, no parity, one stop bit — has a ten-bit frame, so it delivers 80% of the line rate as payload and is the reason a rough conversion of 'divide the baud rate by ten to get bytes per second' works. Parity, wider stop-bit settings and narrower character sizes all change that ratio. Separately, baud is not the same quantity as bit rate. Bit rate equals baud multiplied by the number of bits carried by each symbol, so the two are numerically equal only when the signalling is two-level, as it is on RS-232, RS-422, RS-485 and TTL UART lines.
How to use this calculator.
- Enter the baud rate configured on the port — the same number you would pass to a terminal program or to tcsetattr.
- Leave bits per symbol at 1 unless you are working with multi-level modulation. Every ordinary UART, RS-232, RS-422 and RS-485 link is two-level.
- Set the data bits, parity and stop bits to match the port configuration. The shorthand 8N1 means 8 data bits, No parity, 1 stop bit; 7E1 means 7 data bits, Even parity, 1 stop bit.
- Read the effective data rate and bytes per second for throughput planning, and the frame time for timeout and interrupt budgeting.
- Check the framing overhead if you are choosing a configuration. Dropping from 8E2 to 8N1 on the same baud rate is a 20% throughput gain for free, provided the link is reliable enough not to need the parity bit.
The formula.
Start with the frame. A UART adds a start bit before the character and stop bits after it, plus a parity bit if parity is enabled, so the number of bit times on the wire per character is 1 + data bits + parity bits + stop bits. The stop-bit setting is measured in bit times, which is why 1.5 stop bits produces a fractional frame length of, for example, 7.5 bits for a 5-bit word with no parity — the UART datasheet states this explicitly.
Next, the line rate. Bit rate is baud multiplied by bits per symbol. Every asynchronous UART line is two-level, so bits per symbol is 1 and the bit rate equals the baud rate; the input exists so the general relation is available for modulated links where it does not.
Divide line bit rate by frame bits to get characters per second, then multiply by data bits to get payload bits per second, then divide by eight for bytes per second. Note the difference between characters per second and bytes per second: at 9600 7E1 the link sends 960 characters per second but only 840 bytes per second, because each character carries seven bits rather than eight.
Times are the reciprocals. One bit time is 1,000,000 ÷ bit rate microseconds; one symbol time is 1,000,000 ÷ baud; one frame time is frame bits multiplied by the bit time. Framing overhead is (frame bits − data bits) ÷ frame bits, expressed as a percentage — 20% for 8N1, 30% for 7E1, 33.3% for 8E2, and 40% at the worst legal combination of five data bits with parity and two stop bits.
A worked example.
115200 8N1 — the default of practically every embedded serial console. The line is two-level, so the bit rate equals the baud rate at 115,200 bit/s. The frame is 1 start bit + 8 data bits + 0 parity bits + 1 stop bit = 10 bit times, so the port sends 115,200 ÷ 10 = 11,520 characters per second. Each character carries eight bits of payload, giving 11,520 × 8 = 92,160 bit/s of real data, which is 11,520 bytes per second. In other words a link advertised as '115.2 kbit/s' delivers 92.16 kbit/s of your data, and the familiar shortcut of dividing the baud rate by ten to get bytes per second is exactly right for 8N1 and only for 8N1. On the timing side, one bit occupies 1,000,000 ÷ 115,200 = 8.6805555556 µs and a whole character occupies ten of those, 86.8055555556 µs — which is the figure to use when setting an inter-character timeout or checking that an interrupt handler can keep up. Framing costs two of the ten bits, or 20% of the line. Switching this port to 8E2 would stretch the frame to twelve bits, drop throughput to 9,600 characters per second, and raise the overhead to 33.33%.
Frequently asked questions.
How many bytes per second is 115200 baud?
Is baud rate the same as bit rate?
Do mark and space parity cost the same as even parity?
Why would anyone use 1.5 stop bits?
Will I actually achieve this throughput?
References& sources.
- [1]Texas Instruments. NS16C2552 / NS16C2752 Dual UART with 16-byte/64-byte FIFOs datasheet. Source of the framing model implemented here: the feature list 'Fully Programmable Character Length (5, 6, 7, or 8) with Even, Odd, or No Parity, Stop Bit' and 'Adds or Deletes Standard Asynchronous Communication Bits (Start, Stop, and Parity) to or from the Serial Data'; the break-detect definition of a frame as 'the total time of Start bit + data bits + Parity + Stop bits'; the LCR stop-bit table giving 2 stop bits for 6/7/8-bit words, 1.5 for a 5-bit word and 1 by default, with the note 'Stop-bit length is measured in bit time'; and the LCR parity table listing no parity, odd, even, forced mark and forced space.
- [2]Linux man-pages project. termios(3) — POSIX terminal interface. Source of the 5-to-8 data-bit range this calculator accepts: CSIZE is documented as 'Character size mask. Values are CS5, CS6, CS7, or CS8', CSTOPB as 'Set two stop bits, rather than one', PARENB as 'Enable parity generation on output and parity checking for input', and PARODD as selecting odd rather than even parity.
- [3]Alliance for Telecommunications Industry Solutions. ATIS Telecom Glossary, entry 'baud'. Source of the baud-versus-bit-rate distinction: 'A unit of modulation rate. Note: One baud corresponds to a rate of one unit interval per second…' and 'A unit of signaling speed equal to the number of discrete signal conditions, variations, or events per second.'
In this category
Embed
Quanta Pro
Paid features are coming later.
- All 590 calculators remain free
- No billing is enabled