>
Home5G NRPHY — Physical LayerThroughput Calculation
📶 PHY — Physical LayerAdvanced

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.

📚 3GPP-basedTS 38.306TS 38.214

"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.

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.

What

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.

Why

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.

How

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.

DataRate (Mbps) = 10−6 ·  Σj=1…J  ( vLayers(j) · Qm(j) · f(j) · Rmax · ( NPRBBW(j),μ · 12 ) / Tsμ · ( 1 − OH(j) ) )

Every symbol matters, so define them one by one:

SymbolMeaningValue / note
JNumber 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 j1–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_maxMaximum code rate948 / 1024 = 0.92578 (fixed)
N_PRBBW,μMax resource blocks for the bandwidth & numerologye.g. 100 MHz @ 30 kHz → 273; 100 MHz @ 60 kHz → 135; 20 MHz @ 15 kHz → 106
× 12Subcarriers per RBTurns 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 rangeDownlink OHUplink OH
FR1 (≤ 7.125 GHz)0.140.08
FR2 (mmWave)0.180.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:

ConstantValue(s)
R_max948 / 1024 = 0.92578
f (scaling)1, 0.8, 0.75, 0.4
Q_mQPSK 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/second2μ · 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.

Step 1 — symbol duration:
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:

StepQuantityValue
1Symbol duration T_s35.714 µs
2REs per symbol (N_PRB×12)3276
3REs per second9.1728×107
4Bits 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.

N′RE (per PRB) = 12 · Nsymb − NDMRS − Noh

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 to PDSCH in 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 rate R, modulation order Q_m and layers v to get the information bits N_info.
  • The standard's quantisation and (for larger blocks) LDPC-segmentation rounding turn N_info into the final TBS.

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.

N′RE = 12 · 12 − 12 − 6 = 144 − 18 = 126 RE/PRB
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)
SpecTS 38.306 §4.1.2TS 38.214 §5.1.3.2
OverheadFlat fraction OH (0.14 etc.)Counted RE: DMRS + xOverhead
Code rateFixed R_max = 0.926Actual R from the scheduled MCS
ErrorsNone (ceiling)× (1 − BLER)
AllocationFull band, all slotsActual PRBs & symbols scheduled
AnswersTheoretical maximumWhat 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:

DataRateCA = Σj DataRatej = R1 + R2 + … + RJ

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:

ConfigurationN_PRBLayersModulationApprox peak (DL)
20 MHz, 15 kHz, FR11062256QAM≈ 0.45 Gbps
100 MHz, 30 kHz, FR12732256QAM≈ 1.17 Gbps
100 MHz, 30 kHz, FR12734256QAM≈ 2.34 Gbps
2 × 100 MHz CA, 30 kHz2×2734256QAM≈ 4.67 Gbps
100 MHz, 120 kHz, FR266264QAM≈ 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.

From peak to practical — each effect only subtracts Method A peak ≈ 2.34 Gbps (full band, 256QAM, R₁₀₃₁₁₀, 4 layers, flat OH) − real counted overhead (DMRS + xOverhead + control) − sub-max MCS chosen by link adaptation (SINR-limited) − partial scheduling (not every PRB / slot is yours) − BLER & HARQ retransmissions → practical throughput decreasing rate Widths are illustrative, not to scale.
Figure 1. The peak-to-practical waterfall: real overhead, link-adaptation backoff, partial scheduling, and block errors each remove a slice of the Method A ceiling.

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. Lower Q_m · R means 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, and xOverhead often 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&A Interview quickfire

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.

PDSCHModulation & MCSLink AdaptationFrame, Slot & Symbol