5G NR Throughput Calculation (Method A & B)
Peak vs actual throughput — the 3GPP approximate data-rate formula and the RE/TBS-based calculation, with worked examples.
"How fast is 5G?" has two honest answers, and they sit far apart. One is the peak data rate — the marketing number, computed from a tidy closed-form equation in TS 38.306 with every knob turned to maximum. The other is the actual throughput a scheduler delivers in a given slot, built from the real Transport Block Size (TBS) per TS 38.214 with real overhead, a real MCS, and a non-zero error rate. This page works through both. We call them Method A (the approximate peak path) and Method B (the actual, TBS-based path); some teams say "Path-A / Path-B" for the same split. If your organisation attaches a specific meaning to Path-A or Path-B, map it to the labels below — these are the common ones.
Introduction
Throughput calculation is the arithmetic that turns a radio configuration into a bit rate. It is used constantly across the lifecycle: a UE advertises its peak capability at attach; a vendor prints a datasheet number; a planner sizes a transport link; a test engineer compares a live KPI against expectation; and a scheduler, slot by slot, converts a chosen MCS and allocation into the transport block it will actually send. Every one of these is the same physical question — information bits per second on a carrier — answered at a different level of realism.
The two methods this page develops answer that question at the two extremes. Method A (TS 38.306) is the capability ceiling: a single closed-form sum over carriers with a flat overhead fraction and the maximum code rate, giving the number you can never exceed. Method B (TS 38.214) is the realised figure: it counts the resource elements that survive reference signals and configured overhead, applies the code rate and modulation the scheduler actually chose, quantises to a real TBS, and discounts the block-error fraction.
Keeping the two apart matters because they are used for different jobs and they disagree by design. Method A sizes categories and links; Method B predicts sessions and KPIs. Confusing them is the single most common source of "why is my throughput only half the spec sheet?" arguments — the answer is almost always that the spec sheet is Method A and the field is Method B.
On this page
- Why two throughput numbers exist
- Two ways to count, and why they differ
- Method A — the peak data-rate formula
- Method A — fully worked
- Method B — actual throughput from TBS
- Method B — worked and contrasted
- UE capability, peak-rate bounds & carrier aggregation
- Peak vs practical — where the bits go
- Summary
Why two throughput numbers exist
In plain words: a car's speedometer might read 260 km/h, but your actual commute averages 40. Neither number is a lie — one is what the engine could do on an empty track with a full tank, the other is what traffic, red lights, and speed limits leave you with. Method A is the speedometer's top mark; Method B is your real average once the road gets in the way.
The reason there are two numbers is that "usable capacity" has two legitimate boundaries. One draws the line at what the hardware and configuration could theoretically sustain — full band, top modulation, all layers, maximum code rate, a flat allowance for overhead, and no errors. That is a capability figure, and it is what you want when sizing a UE category, a backhaul link, or a marketing claim, because it must not depend on the momentary state of one cell.
The other draws the line at what a scheduler actually delivered: the exact resource elements left after reference signals and control, the code rate and modulation link adaptation really picked for the measured channel, and the fraction of blocks lost to errors and recovered by HARQ. That is a realised figure, and it is what you want when predicting a user session or explaining a drive-test KPI. Both are correct; they simply answer different questions, and every real-world effect can only push the realised number below the ceiling, never above it.
Two ways to count, and why they differ
Both methods answer the same physical question — how many information bits per second can a carrier carry — but they draw the boundary of "usable" in different places. Method A is a capability figure: it asks what a UE's configured band, layers, and modulation could theoretically sustain if the channel were perfect and the scheduler perfectly greedy. Method B is a realised figure: it counts the exact resource elements left after reference signals and control, applies the code rate and modulation the link-adaptation loop actually chose, and discounts the bits lost to block errors.
Method A is the TS 38.306 approximate maximum data rate — a single equation summed over carriers. Method B is the per-slot TBS from TS 38.214 turned into a rate.
Method A sizes UE categories, transport links, and datasheets. Method B predicts what a user session, a throughput KPI, or a lab drive-test will actually show.
Method A uses a flat overhead fraction OH and a fixed R_max. Method B counts DMRS and xOverhead REs, uses the scheduled MCS, and multiplies by (1 − BLER).
The gap between the two is not error — it is structure. Peak is a ceiling; Method B is the room you actually live in. Reading the rest of this page is largely about learning why every practical effect can only push the realised number below the ceiling, never above it.
Method A — the peak data-rate formula
The 3GPP approximate maximum data rate (TS 38.306 §4.1.2) sums a per-carrier bit rate over all aggregated carriers. Each carrier contributes layers × bits-per-symbol × code rate × resource-elements-per-second, discounted by a flat overhead.
Every symbol matters, so define them one by one:
| Symbol | Meaning | Value / note |
|---|---|---|
J | Number of aggregated component carriers (and numerologies) | The outer sum — each carrier j adds its own rate |
v_Layers(j) | Number of MIMO layers on carrier j | 1–4 typical DL; up to 8 for advanced UEs |
Q_m(j) | Modulation order (bits per symbol) | 2 QPSK / 4 16QAM / 6 64QAM / 8 256QAM (10 for 1024QAM) |
f(j) | Scaling factor (UE-reported per band/band-combo) | ∈ {1, 0.8, 0.75, 0.4} |
R_max | Maximum code rate | 948 / 1024 = 0.92578 (fixed) |
N_PRBBW,μ | Max resource blocks for the bandwidth & numerology | e.g. 100 MHz @ 30 kHz → 273; 100 MHz @ 60 kHz → 135; 20 MHz @ 15 kHz → 106 |
| × 12 | Subcarriers per RB | Turns RBs into subcarriers (REs per symbol) |
T_sμ | Average OFDM symbol duration | (10−3) / (14 · 2μ) seconds |
OH(j) | Overhead fraction (flat) | FR1: DL 0.14 / UL 0.08 · FR2: DL 0.18 / UL 0.10 |
Read the core of the expression as a chain of unit conversions. The term N_PRB · 12 is the number of resource elements (subcarriers) in one OFDM symbol — a per-symbol count. Dividing by T_s turns that count into REs per second. Multiplying by the bits carried per RE (Q_m · R_max) turns REs into bits; multiplying by v_Layers spreads it across spatial streams; the scaling factor f lets a UE declare it cannot fully use a band; and the (1 − OH) factor lops off the fraction of REs the standard assumes go to reference and control signals. The leading 10−6 converts bits per second into Mbps.
Spec note: OH is not a physical measurement — it is a fixed accounting fraction chosen by 3GPP so the capability figure need not model DMRS, PDCCH, or SSB placement carrier by carrier. Method B does that counting for real.
Overhead, code rate and numerology constants
Three inputs to Method A are effectively constants you look up rather than compute. The flat overhead OH depends only on frequency range and direction:
| Frequency range | Downlink OH | Uplink OH |
|---|---|---|
| FR1 (≤ 7.125 GHz) | 0.14 | 0.08 |
| FR2 (mmWave) | 0.18 | 0.10 |
FR2 carries a larger overhead fraction because beam-management reference signals and wider control regions eat more of the grid; uplink is lighter than downlink because it carries no SSB and less control. The other two constants — the maximum code rate and the symbol duration — are fixed by the design of the code and the numerology:
| Constant | Value(s) |
|---|---|
R_max | 948 / 1024 = 0.92578 |
f (scaling) | 1, 0.8, 0.75, 0.4 |
Q_m | QPSK 2 · 16QAM 4 · 64QAM 6 · 256QAM 8 · 1024QAM 10 |
T_sμ | μ=0 (15 kHz) 66.67 µs · μ=1 (30 kHz) 35.71 µs · μ=2 (60 kHz) 17.86 µs · μ=3 (120 kHz) 8.93 µs |
| slots/second | 2μ · 1000 (μ=0→1000, μ=1→2000, μ=3→8000) |
R_max = 948/1024 is the top entry of the NR MCS/CQI code-rate design — it caps how little redundancy the LDPC code may add, so it sets the bits-per-RE ceiling. Note that T_s already averages the 14 symbols of a slot across a 1 ms subframe, which is why the same slots-per-second falls out as 2μ · 1000.
Method A — fully worked
Take a single FR1 carrier: 100 MHz, μ = 1 (30 kHz subcarrier spacing), N_PRB = 273, 4 layers, 256QAM (Q_m = 8), f = 1, downlink so OH = 0.14.
Ts = 10−3 / (14 · 21) = 10−3 / 28 = 35.714 µs
Step 2 — REs per symbol:
NPRB · 12 = 273 · 12 = 3276 REs
Step 3 — REs per second:
3276 / (35.714×10−6) = 9.1728×107 RE/s
Step 4 — bits per RE:
Qm · Rmax = 8 · 0.92578 = 7.4063 bits/RE
Step 5 — layers & scaling:
× vLayers (4) · f (1) = × 4
Step 6 — overhead discount:
× (1 − 0.14) = × 0.86
Combine:
10−6 · 4 · 8 · 1 · 0.92578 · 3276 / (35.714×10−6) · 0.86
= 10−6 · 4 · 7.4063 · 9.1728×107 · 0.86
≈ 2336 Mbps ≈ 2.34 Gbps
The intermediate values are worth tabulating, because the same six lines apply to any configuration — only the inputs change:
| Step | Quantity | Value |
|---|---|---|
| 1 | Symbol duration T_s | 35.714 µs |
| 2 | REs per symbol (N_PRB×12) | 3276 |
| 3 | REs per second | 9.1728×107 |
| 4 | Bits per RE (Q_m×R_max) | 7.4063 |
| 5 | × layers × scaling | × 4 |
| 6 | × (1 − OH) | × 0.86 |
| — | Per-carrier peak | ≈ 2336 Mbps |
That 2.34 Gbps is a peak: it assumes the full band, the top modulation, all four layers busy, the maximum code rate, and only the flat overhead discount. Aggregate more carriers (increase J) and the rates simply add — carrier aggregation is why the formula is a sum over j.
Reading the number: Method A answers "what is the theoretical ceiling of this configuration?" It does not model the scheduler, HARQ, control-channel resources, or the actual MCS the link-adaptation loop chose. For that you need Method B.
Method B — actual throughput from TBS
The realistic figure is built from the Transport Block Size the scheduler actually assigns, per the procedure in TS 38.214 §5.1.3.2. Instead of the flat overhead of Method A, you count the resource elements that survive DMRS and configured overhead in the scheduled PRBs, then apply the real code rate and modulation from the MCS table.
NRE = min(156, N′RE) · NPRB
Ninfo = NRE · R · Qm · v
TBS = quantise(Ninfo) (rounding rules of §5.1.3.2)
Throughput = TBS · (slots/second) · (1 − BLER), slots/second = 2μ · 1000
Walking the chain term by term:
N_symb— the OFDM symbols allocated toPDSCHin the slot (up to 14).N_DMRS— the REs per PRB spent on demodulation reference signals (e.g. 12 for one DMRS symbol, more with additional DMRS positions).N_oh— the higher-layer configured overhead (xOverhead: 0, 6, 12 or 18 RE/PRB), reserving room for CSI-RS, control, and rate-matched signals.- The per-PRB usable REs are capped at
156(that is 12 × 13, the ceiling used even if a slot exposes more). - Multiply by allocated PRBs to get
N_RE; multiply by code rateR, modulation orderQ_mand layersvto get the information bitsN_info. - The standard's quantisation and (for larger blocks) LDPC-segmentation rounding turn
N_infointo the finalTBS.
The quantisation is not hand-waving. For small blocks (N_info ≤ 3824) the standard rounds to the nearest entry of a fixed TBS table so the size aligns with the LDPC base-graph and byte boundaries; for larger blocks it quantises N_info to a granularity that lets the transport block divide cleanly into LDPC code-block segments, each within the maximum code-block size. That is why the worked TBS below lands a few hundred bits above the raw N_info — it is snapped up to the nearest valid, segmentable size.
Crucially, R and Q_m here are not pinned to the maximum. They come from the MCS index the gNB's link-adaptation loop selected to hold a target block-error rate for the measured channel — typically an initial-transmission BLER around 10%. That single design choice is the largest reason Method B sits below Method A.
Method B — worked and contrasted
Take one PRB slice of a scheduled PDSCH: N_symb = 12 symbols, N_DMRS = 12 RE/PRB (one DMRS symbol), N_oh = 6, single layer, an MCS giving 256QAM (Q_m = 8) and code rate R = 0.92578, over N_PRB = 273, μ = 1.
min(156, 126) = 126
NRE = 126 · 273 = 34,398 RE
Ninfo = 34,398 · 0.92578 · 8 · 1 ≈ 254,760 bits
TBS ≈ 254,976 bits (after quantisation)
slots/second = 21 · 1000 = 2000
Throughput (BLER = 0) = 254,976 · 2000 ≈ 510 Mbps / layer
Throughput (BLER = 0.1) = × 0.9 ≈ 459 Mbps / layer
Scale to 4 layers and the single-slot figure lands in the ~2 Gbps range — close to Method A, because we deliberately chose the top MCS and near-full allocation. Drop the MCS, shrink the allocation, add control overhead, or admit a 10% BLER and the gap opens up. That is the whole point of the contrast:
| Method A (peak) | Method B (actual) | |
|---|---|---|
| Spec | TS 38.306 §4.1.2 | TS 38.214 §5.1.3.2 |
| Overhead | Flat fraction OH (0.14 etc.) | Counted RE: DMRS + xOverhead |
| Code rate | Fixed R_max = 0.926 | Actual R from the scheduled MCS |
| Errors | None (ceiling) | × (1 − BLER) |
| Allocation | Full band, all slots | Actual PRBs & symbols scheduled |
| Answers | Theoretical maximum | What the UE really gets |
Why is actual always ≤ peak? Real overhead exceeds the flat discount, the scheduler rarely fills every PRB of every slot, link adaptation picks an MCS below the maximum to hold the BLER target, and that ~10% BLER itself shaves throughput. Peak is the ceiling; Method B is the room you actually live in.
UE capability, peak-rate bounds & carrier aggregation
The Method A number for a real device is not open-ended — it is capped by what the UE told the network it can do. During capability signalling the UE reports, per band and per band-combination, the parameters that feed straight into the formula: the maximum number of MIMO layers, the highest supported modulation (which fixes Q_m), the supported bandwidth (which fixes N_PRB), and the scaling factor f. Multiply those out across the reported carriers and you have the UE's advertised peak. The network can schedule at or below that bound but never above it.
Carrier aggregation is exactly the outer sum Σj. Each aggregated component carrier contributes its own fully independent per-carrier rate — its own bandwidth, numerology, layers, and modulation — and the totals add. Two identical 100 MHz / 30 kHz / 4-layer / 256QAM carriers roughly double the single-carrier peak:
e.g. 2 × (2.34 Gbps) ≈ 4.67 Gbps (2CC, symmetric)
The same additivity holds for Method B: per-carrier TBS values are summed the same way. The table below shows how the peak scales with the configuration levers — each row is Method A with only the noted inputs changed:
| Configuration | N_PRB | Layers | Modulation | Approx peak (DL) |
|---|---|---|---|---|
| 20 MHz, 15 kHz, FR1 | 106 | 2 | 256QAM | ≈ 0.45 Gbps |
| 100 MHz, 30 kHz, FR1 | 273 | 2 | 256QAM | ≈ 1.17 Gbps |
| 100 MHz, 30 kHz, FR1 | 273 | 4 | 256QAM | ≈ 2.34 Gbps |
| 2 × 100 MHz CA, 30 kHz | 2×273 | 4 | 256QAM | ≈ 4.67 Gbps |
| 100 MHz, 120 kHz, FR2 | 66 | 2 | 64QAM | ≈ 0.79 Gbps |
Notice the FR2 row: despite a very wide subcarrier spacing and the same 100 MHz, the RB count is small (66) and the heavier OH = 0.18 plus a lower practical modulation pull the peak well below the FR1 case. Bandwidth and layers dominate the ceiling; numerology mostly moves latency, not peak rate.
Peak vs practical — where the bits go
Between the Method A ceiling and the throughput a user sees sits a stack of reductions, each with a physical cause. It helps to picture them as a waterfall: you start at the peak and every real-world effect subtracts a slice.
The four cuts, in order:
- SINR → MCS. A cell-edge UE cannot decode 256QAM at
R_max; link adaptation drops it to a lower modulation and code rate so the block error stays near target. LowerQ_m · Rmeans fewer bits per RE directly. - BLER & retransmissions. Even at the chosen MCS, roughly 10% of first transmissions fail and are recovered by HARQ. Retransmissions consume slots that could have carried new data, so effective throughput is scaled by
(1 − BLER)and further by soft-combining efficiency. - Scheduling. The gNB shares the cell among many UEs. Any one UE gets a fraction of the PRBs and only some of the slots; control regions, SSB, and other UEs claim the rest.
- Counted overhead. Real
DMRS, CSI-RS, andxOverheadoften exceed the flat 14% that Method A assumes, especially with additional DMRS positions for high mobility.
Rule of thumb: sustained practical downlink throughput on a good FR1 100 MHz cell commonly lands in the 40–70% range of the Method A peak once these four effects compound — higher in a clean lab, lower in a loaded live network.
LTE ↔ NR: LTE has no single closed-form peak like Method A — its category peaks were largely table-driven (UE-Category soft-buffer and TBS limits), and the practical rate came from LTE's own TBS tables in TS 36.213 indexed by (I_TBS, NPRB). NR replaces the big lookup tables with the parametric N_info → quantise formula of Method B, and adds the explicit Method A capability equation in TS 38.306 with the scaling factor f and flat OH. The peak-to-practical gap exists in both, but NR's wider bandwidths, higher layer counts, 256QAM-by-default and FR2 beam overhead make the two numbers diverge much more dramatically than in LTE.
Summary
There are two right answers to "how fast is 5G," and the trick is knowing which one you are quoting. Method A (TS 38.306) is the capability ceiling: one closed-form sum over carriers, flat overhead OH, fixed R_max = 948/1024, and no errors. It sizes UE categories, transport links, and datasheets, and a real device caps it at whatever its capability signalling advertised. Method B (TS 38.214) is the realised rate: count the REs that survive DMRS and xOverhead, apply the scheduled MCS's real Q_m and R, quantise to a valid TBS, multiply by slots-per-second (2μ·1000) and by (1 − BLER).
Method B is always ≤ Method A, and the gap is structural, not error. Walk the waterfall to explain any real number: counted overhead exceeds the flat fraction, link adaptation backs the MCS off the maximum to hold ~10% BLER, the scheduler gives one UE only a share of the PRBs and slots, and the BLER fraction itself is lost to retransmission. On a good FR1 100 MHz cell that compounds to roughly 40–70% of peak. Carrier aggregation adds carriers in both methods — it is literally the Σj — and numerology mostly buys latency, not peak rate, because more slots-per-second are offset by proportionally shorter symbols.
Quick Q&A
Q. Why does the peak formula divide by T_s?
A. Because N_PRB·12 counts resource elements in one OFDM symbol — a per-symbol quantity. Dividing by the average symbol duration T_s = 10−3/(14·2μ) converts REs-per-symbol into REs-per-second, turning a static allocation into a rate.
Q. What is R_max and where does 948/1024 come from?
A. It is the maximum target code rate used in the peak formula — 948/1024 ≈ 0.926, the top entry of the NR MCS/CQI code-rate design. It caps how little redundancy the LDPC code can add, so it sets the bits-per-RE ceiling.
Q. What overhead values does Method A use, and how do they differ from Method B?
A. Method A uses flat fractions: FR1 DL 0.14 / UL 0.08, FR2 DL 0.18 / UL 0.10, lumping reference and control signals into one (1 − OH) discount. Method B instead counts the actual REs lost to DMRS plus the configured xOverhead (0/6/12/18 RE per PRB).
Q. Why is peak never equal to actual?
A. Peak assumes max MCS, R_max, full allocation, and zero errors. Real links carry heavier counted overhead, get an MCS chosen to hold ~10% BLER, are not scheduled on every PRB of every slot, and lose the BLER fraction to retransmission. So actual < peak by construction.
Q. How does carrier aggregation change the number?
A. It is the Σ over j in Method A: each aggregated carrier contributes its own per-carrier rate and they add. Two identical 100 MHz carriers roughly double the total. Method B adds per-carrier TBS the same way.
Q. Does higher numerology (wider SCS) raise peak throughput?
A. Barely, and it can even lower it. Wider SCS gives more slots per second (2μ·1000) but proportionally shorter symbols and, for a fixed bandwidth, fewer or equal RBs — the two effects largely cancel. Numerology mainly buys lower latency; bandwidth and layers set the peak rate.
Where this leads next
The TBS at the heart of Method B is carried by the PDSCH; the Q_m and R that feed both methods come from the tables in Modulation & MCS, chosen by the Link Adaptation loop, and the T_s and slots-per-second terms trace straight back to Frame, Slot & Symbol.