Modulation, MCS & CQI in LTE 4G
QPSK through 256QAM, the MCS and CQI tables, and how modulation order and code rate are chosen.
A good radio channel can carry more bits per symbol than a bad one, so LTE never fixes the data rate — it adapts. The UE measures the channel and reports a CQI; the eNB turns that into an MCS that names a modulation order and (indirectly) a code rate; and those, together with the number of resource blocks, decide exactly how many bits ride each transport block. This page is grounded in TS 36.211 (physical channels and modulation) and TS 36.213 (physical-layer procedures), and walks the whole chain from constellation points to transport block size.
Introduction
Modulation and coding is the part of the LTE physical layer that decides how densely bits are packed onto the air. Every downlink transport block on PDSCH and every uplink transport block on PUSCH is carried by a modulation-and-coding scheme — an MCS — that the eNB picks fresh for that grant. It sits at the heart of the scheduler: once the channel quality is known, choosing the MCS is the single act that converts “this channel is worth x dB of SINR” into “send this many bits this millisecond.”
You meet this machinery constantly in the field. It runs on every scheduled subframe, for every connected UE, in both directions; it is what makes a cell-edge phone fall back to slow-but-robust QPSK while a phone next to the tower streams on 64QAM or 256QAM. Three linked quantities carry the whole story — CQI (what the UE recommends), MCS (what the eNB commands), and the transport block size TBS (how many bits actually result) — and getting the direction and role of each one straight is what separates a clear answer from a muddled one.
Because the relationship is a chain of table look-ups rather than a single formula, it is easy to blur the steps together. This page keeps them separate: constellation → modulation order, MCS → (Qm, I_TBS), then (I_TBS, N_PRB) → TBS, with CQI feeding the front of it all through the eNB’s link-adaptation logic.
On this page
- Why modulation & MCS matter
- The big idea: match the bits to the channel
- Modulation schemes — bits per symbol
- The MCS index — one number, two lookups
- From I_TBS + RBs to transport block size
- CQI — what the UE recommends
- CQI to MCS — recommendation, decision, OLLA
- Modulation on the control channels
- Summary
- Quick Q&A
Why modulation & MCS matter
In plain words: think of the modulation order as how many words you cram into one breath, and the code rate as how much you repeat yourself to be understood. Standing next to someone in a quiet room you can speak fast and never repeat — that is 64QAM at a high code rate. Shouting across a noisy street you slow right down and repeat every word — that is QPSK at a low code rate. The eNB is constantly guessing how noisy the “room” is for each UE and setting the pace accordingly.
Concretely, radio conditions swing with distance, fading and interference, sometimes by tens of dB within the same cell. A single fixed data rate would be wrong almost everywhere: too fast for the cell edge (endless errors) and too slow for the cell centre (wasted spectrum). Link adaptation solves this by turning one dial — the MCS — that jointly sets how many bits each symbol carries and how much of the transmission is error-protection rather than payload. Turn it up on a clean channel for throughput; turn it down on a noisy one to keep the error rate under control.
The reason this deserves its own page is that the dial is not a free-form number: it is a standardised index that resolves, through TS 36.213 tables, into a precise modulation order, code rate and transport block size that both ends must agree on bit-for-bit. Miscount the steps and the UE demodulates the wrong constellation or assumes the wrong block size, and nothing decodes.
The big idea: match the bits to the channel
Every LTE transmission packs data onto modulation symbols. How many bits each symbol carries, and how much of the transmission is protection (coding) rather than payload, is a dial the eNB turns subframe by subframe. Turn it up when the channel is clean and you get throughput; turn it down when the channel is noisy and you keep the errors under control. That whole dial is captured by three linked quantities — CQI, MCS and the transport block size TBS — and getting the relationship straight is what this page is about.
A chain of choices: the UE reports channel quality as a CQI (0–15); the eNB picks a modulation-and-coding scheme MCS (0–28 for new data) and signals it in the DCI; the MCS yields a modulation order Qm and a TBS index I_TBS, and I_TBS with the RB count gives the transport block size.
Radio conditions swing with distance, fading and interference. A single fixed rate would either waste a good channel or drown in a bad one. Adapting modulation and coding — link adaptation — is how LTE keeps roughly constant reliability while chasing peak throughput.
The UE feeds back CQI on PUCCH/PUSCH; the eNB's link-adaptation logic maps that (plus its own history via an outer loop) to an MCS; lookup tables in TS 36.213 convert MCS→Qm+I_TBS, then I_TBS+N_PRB→TBS.
It is worth fixing the direction of each quantity before the detail arrives. CQI flows uplink and is only a recommendation. MCS flows downlink inside the scheduling grant and is a command. The two are never the same field and are related only through an algorithm running inside the eNB. Everything else on this page hangs off that distinction, so keep it in view.
Modulation schemes — bits per symbol
Modulation decides how many bits are stamped onto one resource element. LTE uses a family of QAM constellations: the more points in the constellation, the more bits per symbol — but the points sit closer together, so a noisy channel confuses them more easily. That is the fundamental trade-off behind everything on this page. The modulation order Qm is simply the number of bits per symbol, so the constellation has 2Qm points.
| Modulation | Modulation order Qm | Bits / symbol | Constellation points | Typical SINR to sustain | Introduced |
|---|---|---|---|---|---|
| QPSK | 2 | 2 | 4 | ≈ −3 to +6 dB | Rel-8 |
| 16QAM | 4 | 4 | 16 | ≈ 7 to 15 dB | Rel-8 |
| 64QAM | 6 | 6 | 64 | ≈ 15 to 23 dB | Rel-8 |
| 256QAM | 8 | 8 | 256 | ≈ 22 dB and above | Rel-12 |
QPSK is the robust workhorse for cell-edge or fading conditions — only four points, hard to mistake even in poor SINR. 16QAM and 64QAM step up throughput for mid-cell and near-cell users. 256QAM (added in Rel-12) squeezes 8 bits per symbol but demands a very clean channel, a good receiver (low EVM) and typically an excellent, near-line-of-sight or small-cell environment, so it is enabled only for near-cell UEs with strong SINR and signalled through a separate 256QAM MCS table and a separate 256QAM CQI table. The SINR figures above are indicative operating points, not hard thresholds — the exact switching points depend on the receiver, the target BLER and the code rate in use. The mapping of bit groups to constellation points (Gray-coded so adjacent points differ by one bit) is defined in TS 36.211.
The higher the order, the more the demodulator relies on an accurate channel estimate and on receiver linearity: 256QAM points are packed so tightly that a fraction of a dB of noise, phase error or amplifier distortion collapses the decision regions. This is why 256QAM in LTE is almost always a downlink-only, good-conditions feature and why the network guards it behind a capability bit and a dedicated table rather than simply extending the ordinary MCS range.
LTE ↔ NR: the constellation family is identical (QPSK/16QAM/64QAM/256QAM, same Qm = 2/4/6/8), and NR adds π/2-BPSK (Qm = 1) on the uplink for very low PAPR at the cell edge. The bigger change is downstream: LTE reads the transport block size from a fixed table, whereas NR computes it from Qm, the code rate R and the number of resource elements per TS 38.214, so in NR the modulation order feeds the size calculation directly.
The MCS index — one number, two lookups
The eNB does not signal modulation and code rate separately on the air. It signals a single 5-bit MCS field in the DCI (values 0–31). The grant itself rides PDCCH in the UE-specific search space, CRC-scrambled by the C-RNTI (a DCI format 1/1A/2/2A-family message for downlink PDSCH, or DCI format 0 for uplink PUSCH), and it is inside that grant that the MCS field lives. Values 0–28 select new-data schemes; 29–31 are reserved to carry only a modulation order for retransmissions, where the TBS is already known from the first transmission and must not be re-derived. The UE takes the received MCS and reads TS 36.213 Table 7.1.7.1-1 to recover two things: the modulation order Qm, and a TBS index I_TBS.
MCS index | Modulation | Modulation order Qm | TBS index I_TBS |
|---|---|---|---|
| 0 | QPSK | 2 | 0 |
| 1 – 8 | QPSK | 2 | 1 – 8 |
| 9 | QPSK | 2 | 9 |
| 10 | 16QAM | 4 | 9 |
| 11 – 16 | 16QAM | 4 | 10 – 15 |
| 17 | 64QAM | 6 | 15 |
| 18 – 28 | 64QAM | 6 | 16 – 26 |
| 29 | QPSK (reserved, retx) | 2 | — |
| 30 | 16QAM (reserved, retx) | 4 | — |
| 31 | 64QAM (reserved, retx) | 6 | — |
Notice the overlap at the boundaries: MCS 9 and 10 both map to I_TBS 9, and MCS 16 and 17 both map to I_TBS 15. At those crossover points the eNB is choosing to carry the same block size with a higher-order modulation but a lower code rate (more coding protection) — a subtle way to trade robustness for the same payload. So the MCS index is really a joint knob over modulation and coding, not two independent settings. As MCS climbs within one modulation region, only the effective code rate rises (via a larger I_TBS); when it crosses a boundary the modulation order jumps but the code rate resets lower.
The reserved trio 29/30/31 deserves emphasis because it is a common interview trap. On a HARQ retransmission the transport block size was already fixed by the original grant, so the eNB must not re-signal a TBS index that could change it. Instead it sends 29, 30 or 31 to convey only which modulation to use for that retransmission (QPSK, 16QAM or 64QAM respectively), and the UE keeps the stored TBS. The 256QAM feature replaces this whole table with TS 36.213 Table 7.1.7.1-1A, whose top rows reach Qm=8 and whose I_TBS range extends to 33.
Remember: MCS in, two things out — Qm (which modulation) and I_TBS (which row of the TBS table). Only I_TBS feeds the transport block size; Qm tells the UE how to demodulate. On a retransmission (MCS 29–31) only Qm is signalled and the stored TBS is reused.
LTE ↔ NR: NR keeps the 5-bit MCS field but reinterprets the table (TS 38.214) so each entry gives a modulation order and a target code rate R directly, not an I_TBS into a fixed TBS table. NR also selects among multiple MCS tables (up to 64QAM, up to 256QAM, and a low-spectral-efficiency table for URLLC) via RRC and the RNTI/search space, giving finer control than LTE’s single-table-plus-256QAM-alternate scheme.
From I_TBS + RBs to transport block size
The TBS index on its own is not a byte count — it becomes one only when combined with how much bandwidth the grant allocates. The eNB tells the UE the number of physical resource blocks N_PRB in the same DCI. The UE then looks up TS 36.213 Table 7.1.7.2.1-1, a two-dimensional table indexed by (I_TBS, N_PRB), and reads off the transport block size in bits for that transmission's PDSCH (or PUSCH). This is deliberately a table, not a closed-form formula: the values were chosen to align with turbo-code block sizes and to produce clean, byte-aligned payloads.
The two-step nature is the thing to hold onto. Step one is MCS → (Qm, I_TBS) from the MCS table. Step two is (I_TBS, N_PRB) → TBS from the TBS table. The modulation order Qm takes no part in step two at all — it never appears in the TBS lookup. That is why two different MCS values that share an I_TBS (the boundary pairs above) produce the identical transport block size for the same N_PRB, differing only in how aggressively that block is modulated and coded. A few illustrative values from that table show how both dimensions push the size up:
I_TBS | TBS at 25 RBs (bits) | TBS at 50 RBs (bits) | TBS at 100 RBs (bits) |
|---|---|---|---|
| 0 (QPSK, low rate) | 680 | 1384 | 2792 |
| 6 (QPSK, mid) | 2664 | 5160 | 10296 |
| 9 (QPSK / 16QAM edge) | 4008 | 7992 | 15840 |
| 15 (16QAM / 64QAM edge) | 7736 | 15264 | 30576 |
| 26 (64QAM, top) | 14112 | 30576 | 75376 |
These are the per-TTI (1 ms subframe) block sizes for a single spatial layer. Multiply by the number of MIMO layers/codewords and by 1000 subframes per second to get the throughput figure, which is where LTE's headline peak rates come from — for example, I_TBS 26 at 100 RBs is 75376 bits per TTI, i.e. about 75 Mbit/s per layer, roughly 150 Mbit/s over two layers with 64QAM. The point to internalise is that I_TBS and N_PRB together fix the payload; the modulation order Qm and the coding are what make that payload physically deliverable over the granted resources. If the resulting code rate would exceed a sensible ceiling (for instance a very small N_PRB forced against a very high I_TBS), the eNB simply would not schedule that combination.
CQI — what the UE recommends
The eNB cannot see the downlink channel; only the UE can. So the UE measures reference signals, estimates the SINR it is experiencing, and reports a CQI (Channel Quality Indicator) — a 4-bit value from 0 to 15. The definition is specific and worth memorising: the reported CQI is the highest index whose corresponding modulation and code rate the UE could decode with a transport block error rate (BLER) no greater than 10%. TS 36.213 gives the CQI-to-scheme mapping in Table 7.2.3-1 (the standard 15-entry table).
CQI index | Modulation | Code rate × 1024 | Efficiency (bits/sym) |
|---|---|---|---|
| 0 | out of range (no reliable transmission possible) | ||
| 1 | QPSK | 78 | 0.1523 |
| 2 | QPSK | 120 | 0.2344 |
| 3 | QPSK | 193 | 0.3770 |
| 4 | QPSK | 308 | 0.6016 |
| 5 | QPSK | 449 | 0.8770 |
| 6 | QPSK | 602 | 1.1758 |
| 7 | 16QAM | 378 | 1.4766 |
| 8 | 16QAM | 490 | 1.9141 |
| 9 | 16QAM | 616 | 2.4063 |
| 10 | 64QAM | 466 | 2.7305 |
| 11 | 64QAM | 567 | 3.3223 |
| 12 | 64QAM | 666 | 3.9023 |
| 13 | 64QAM | 772 | 4.5234 |
| 14 | 64QAM | 873 | 5.1152 |
| 15 | 64QAM | 948 | 5.5547 |
Reading up the table: low CQI means a weak channel, so the UE recommends QPSK with heavy coding (a small code rate like 78/1024); high CQI means a strong channel, so it recommends 64QAM with light coding (948/1024, almost no protection). The efficiency column is simply modulation order times code rate, and it is what actually translates to bits per resource element. This baseline table stops at 64QAM. When 256QAM is configured, the UE instead uses the extended CQI Table 7.2.3-2, whose top four entries introduce 256QAM:
CQI index | Modulation | Code rate × 1024 | Efficiency (bits/sym) |
|---|---|---|---|
| 0 | out of range | ||
| 1 | QPSK | 78 | 0.1523 |
| 2 | QPSK | 193 | 0.3770 |
| 3 | QPSK | 449 | 0.8770 |
| 4 | 16QAM | 378 | 1.4766 |
| 5 | 16QAM | 490 | 1.9141 |
| 6 | 16QAM | 616 | 2.4063 |
| 7 | 64QAM | 466 | 2.7305 |
| 8 | 64QAM | 567 | 3.3223 |
| 9 | 64QAM | 666 | 3.9023 |
| 10 | 64QAM | 772 | 4.5234 |
| 11 | 64QAM | 873 | 5.1152 |
| 12 | 256QAM | 711 | 5.5547 |
| 13 | 256QAM | 797 | 6.2266 |
| 14 | 256QAM | 885 | 6.9141 |
| 15 | 256QAM | 948 | 7.4063 |
The two tables share the same 4-bit index range but pack very different schemes into it: the 256QAM table compresses the QPSK and 16QAM steps to make room for four 256QAM entries at the top, pushing peak efficiency from 5.5547 to 7.4063 bits/symbol. Which table the UE uses is an RRC-configured choice tied to whether 256QAM is enabled, so both ends must agree — a UE reporting CQI 15 means something quite different under each table. Whether the UE sends one wideband CQI or several sub-band values is controlled by the reporting mode configured over PUCCH/PUSCH (periodic vs aperiodic reporting).
CQI to MCS — recommendation, decision, and the OLLA offset
This is the distinction interviewers love: CQI is what the UE recommends; MCS is what the eNB decides. They are related but not the same field, and one does not blindly become the other. The UE reports a CQI that would hit ≈10% BLER; the eNB's link-adaptation algorithm reads that, folds in its own information — HARQ ACK/NACK history, an outer-loop BLER correction, load, the UE category and buffer — and then chooses the MCS it actually signals in the DCI.
The mapping happens in two conceptual stages. First, an inner loop converts the reported CQI (which names a modulation and code rate, hence an efficiency) into an equivalent MCS whose spectral efficiency is closest to, but not exceeding, that of the reported CQI. Because both the CQI table and the MCS/TBS table are expressed in bits per symbol, this is essentially an efficiency-matching lookup: find the highest MCS whose (Qm, code rate) sits at or below the CQI's efficiency. This is why a mid-range CQI around 7–9 tends to land on a 16QAM MCS, and a high CQI of 13–15 lands on a high 64QAM MCS.
Second, an outer loop — OLLA, Outer Loop Link Adaptation — corrects for the fact that the raw CQI is optimistic or pessimistic and often stale by the time it is used. The eNB keeps a per-UE SINR offset, sometimes called delta_offset or the OLLA margin. Every HARQ NACK nudges that offset in the conservative direction (subtract a large step, lowering the effective SINR and hence the chosen MCS); every HARQ ACK nudges it back the other way by a smaller step. The effective quality driving the MCS choice is the CQI-derived SINR plus this offset.
The step sizes are chosen so the loop converges to the target error rate. A common design sets the ratio of the up-step to the down-step so that, at equilibrium, the fraction of NACKs equals the target BLER: step_up / step_down = BLER_target / (1 − BLER_target), e.g. roughly 1:9 for a 10% target. The result is that OLLA quietly drives the true, measured BLER toward 10% regardless of whether a particular UE's CQI reports run high or low. This is why the eNB may signal an MCS noticeably lower than the reported CQI implies (a UE whose CQI is consistently optimistic accumulates a negative offset), or occasionally higher.
Do not confuse the ranges: CQI is 0–15 (4 bits, a UE report). MCS is 0–31 (5 bits in the DCI, an eNB decision; 0–28 for new data, 29–31 for retransmission). Different fields, different directions, related only through the eNB's inner-loop mapping and the OLLA outer loop.
Modulation on the control channels
Everything above concerns the data channels — PDSCH downlink and PUSCH uplink — which are the only ones that adapt their modulation. The control channels are different: because they must be decodable by UEs in poor conditions and carry the very scheduling information needed to receive anything at all, they use fixed, robust, low-order modulation. There is no MCS, no CQI-driven adaptation, and no 256QAM on control; they lean on aggregation and coding for robustness instead.
| Channel | Direction | Modulation | Adapts? | Carries |
|---|---|---|---|---|
PDSCH | DL | QPSK / 16QAM / 64QAM / 256QAM | Yes (MCS) | User data (transport blocks) |
PUSCH | UL | QPSK / 16QAM / 64QAM / 256QAM | Yes (MCS) | User data + UCI |
PBCH | DL | QPSK | No | MIB |
PDCCH | DL | QPSK | No (uses aggregation level) | DCI (scheduling) |
PCFICH | DL | QPSK | No | CFI (number of control symbols) |
PHICH | DL | BPSK | No | HARQ ACK/NACK for uplink |
PUCCH | UL | BPSK / QPSK (format-dependent) | No | UCI (CQI, ACK/NACK, SR) |
The pattern is clear: control uses QPSK almost everywhere (PDCCH, PBCH, PCFICH), drops to BPSK where maximum robustness matters most (PHICH, and the low PUCCH formats 1/1a/1b), and never rises above QPSK. The PDCCH compensates for its fixed low-order modulation by varying its aggregation level — spending more control channel elements (CCEs) on the same DCI for cell-edge UEs — which is the control-channel analogue of the data channel lowering its MCS. So control channels do adapt to the channel, just through coding and aggregation rather than through constellation size.
One-liner: data channels (PDSCH/PUSCH) adapt modulation via MCS; control channels use fixed QPSK or BPSK and adapt robustness through coding and aggregation instead.
⚠ Common pitfalls / gotchas
- Confusing CQI range with MCS range.
CQIis 0–15 (a 4-bit UE report);MCSis 0–31 (a 5-bit eNB command). They are different fields in different directions — never interchangeable. - Assuming CQI 15 always means the same thing. Its meaning depends on which table is configured: 64QAM at 948/1024 in the baseline table, but 256QAM at 948/1024 in the extended table. If the two ends disagree on 256QAM configuration, the mapping breaks.
- Feeding
Qminto the TBS lookup. OnlyI_TBSandN_PRBset the transport block size;Qmmerely tells the UE how to demodulate. This is exactly why boundary MCS pairs (9/10, 16/17) give identical TBS. - Re-deriving TBS on a retransmission.
MCS29/30/31 carry only a modulation order; re-computing a freshTBScorrupts HARQ soft combining. The stored block size from the initial transmission must be reused. - Expecting CQI to become MCS one-to-one. The OLLA offset routinely shifts the chosen
MCSbelow (or above) what the raw CQI implies; a systematically optimistic UE will be scheduled well under its reported CQI.
Summary
Modulation and coding is LTE’s way of matching the payload to the channel one grant at a time. The UE looks at the downlink, works out the fastest scheme it could decode at ≈10% BLER, and reports it as a 4-bit CQI (0–15) over PUCCH/PUSCH. The eNB treats that as a recommendation only: its inner loop matches the CQI’s efficiency to an MCS, and its OLLA outer loop corrects the CQI’s bias using HARQ ACK/NACK, before it commands a 5-bit MCS (0–31) in the DCI.
From there it is two look-ups. MCS → (Qm, I_TBS) via TS 36.213 Table 7.1.7.1-1, then (I_TBS, N_PRB) → TBS via Table 7.1.7.2.1-1. Only I_TBS and the RB count set the size; Qm just tells the UE how to demodulate, which is why boundary MCS pairs carry the same payload at different robustness. Reserved MCS 29–31 signal modulation only, for retransmissions, so the stored TBS survives HARQ combining. And remember that all of this adaptation is a data-channel story: control channels stay on fixed QPSK/BPSK and adapt through aggregation and coding instead.
Quick Q&A
The questions link-adaptation interviews return to again and again — the field ranges, the two lookups, and the loop that ties CQI to MCS.
Q. What target does the CQI definition assume, and why does that matter?
A. The UE reports the highest CQI it could receive at no more than 10% BLER. That 10% target is what HARQ is sized around — roughly one in ten first transmissions fails and is retransmitted, which is more spectrally efficient than aiming for near-zero errors on the first try.
Q. Given an MCS index, how does the UE find the transport block size?
A. Two lookups. First, MCS → (Qm, I_TBS) via TS 36.213 Table 7.1.7.1-1. Then (I_TBS, N_PRB) → TBS via Table 7.1.7.2.1-1. Only I_TBS and the RB count set the size; Qm just tells it how to demodulate.
Q. Why can the eNB signal an MCS lower than the reported CQI implies?
A. Because CQI is only a recommendation from one (often stale) snapshot. The OLLA outer loop corrects for the UE's optimism/pessimism using actual HARQ ACK/NACK results, applying an SINR offset that backs the MCS off after NACKs and pushes it up after a run of ACKs, holding the real BLER near 10%.
Q. What do MCS values 29, 30 and 31 mean?
A. They are reserved for retransmissions. They signal only a modulation order (QPSK, 16QAM, 64QAM respectively) and no I_TBS; the UE reuses the transport block size stored from the original transmission so HARQ combining stays valid.
Q. QPSK 9 vs 16QAM 10 — both map to I_TBS 9. What is different?
A. The transport block size is identical for the same N_PRB, so the payload is the same. MCS 10 delivers it with 16QAM at a lower code rate (more coding protection); MCS 9 uses QPSK at a higher code rate. It is a robustness-versus-efficiency choice for the same number of bits.
Q. Do the control channels use an MCS or CQI?
A. No. PDCCH, PBCH and PCFICH are fixed QPSK, PHICH is BPSK, and PUCCH is BPSK/QPSK by format. Only PDSCH/PUSCH adapt via MCS; PDCCH instead varies its aggregation level for robustness.
Where modulation, MCS and CQI connect
These quantities are the vocabulary of link adaptation: the UE's feedback, the eNB's decision, and the physical bits that ride the shared channel and get protected by the coding stage.