5G NR MCS Tables
MCS in 5G NR is the modulation and coding scheme selected for a scheduled PDSCH or PUSCH transmission. The MCS index points to an active table entry that determines modulation order and coding efficiency for the transport block.
Read this topic as the efficiency layer of scheduling. The scheduler first chooses resources, then the MCS decides how aggressively those resources are used. That is why MCS belongs together with Transport Block Size and Resource Allocation, Link Adaptation, and HARQ.
| Technology | 5G NR |
|---|---|
| Scope | MCS table families and MCS-index interpretation for PDSCH and PUSCH |
| Main specs | 3GPP TS 38.214, 38.212, 38.213, 38.331 |
| Release | Release 18 |
| Main concepts | MCS index, modulation order, target coding rate, spectral efficiency, 256QAM, transform precoding |
| Main channels | PDSCH and PUSCH |
| Why it matters | MCS directly affects payload efficiency, BLER pressure, throughput, retransmission rate, and scheduler behavior |
Contents
Overview
MCS is the scheduler’s main payload-efficiency setting for shared data transmission. It decides how many bits each scheduled resource can carry and how much coding protection is applied.
- MCS combines modulation order and coding efficiency.
- The same index does not have meaning without the active MCS table family.
- MCS is used together with resource allocation and layer count to determine final transport size.
- Higher MCS can increase payload efficiency, but it also increases BLER pressure if radio conditions are weak.
Quick interpretation
| Role | Choose transport efficiency for scheduled shared-channel transmission |
|---|---|
| Main channels | PDSCH and PUSCH |
| Core fields | MCS index, active MCS table family, modulation order, target coding rate, spectral-efficiency view |
| Main dependencies | Channel type, RRC configuration, DCI scheduling, transform-precoding context, and higher-order modulation support |
| Main outcome | Transport efficiency, TBS, BLER pressure, retransmission risk, and practical throughput |
How the MCS model works
An MCS entry is a compact way to choose modulation order and coding efficiency together. The scheduler signals an MCS index in DCI, and the UE interprets that index using the active MCS table family for the current scheduled transmission.
active MCS table + I_MCS -> modulation order + coding efficiency -> spectral efficiency -> final TBS after allocation and overhead | Element | Meaning | Why it matters |
|---|---|---|
| MCS index | The raw signaled index value for the scheduled transmission | It is only meaningful after the correct table family is known |
| Modulation order | The number of bits carried per modulation symbol | Higher modulation can increase throughput but also raises radio-quality demands |
| Target coding rate | The coding-efficiency point paired with the modulation order | Higher coding efficiency increases payload share but leaves less protection margin |
| Spectral-efficiency view | The combined efficiency implied by modulation and coding | Useful when comparing payload efficiency across different MCS values |
| Active table family | The table set selected by channel type and configuration | The same index can map to a different efficiency point when the table family changes |
This is why a high MCS is not automatically good. If the radio path cannot sustain it, the visible result may be more HARQ retransmissions and lower delivered goodput even though the signaled efficiency looks higher.
MCS table families
NR uses several MCS table families rather than one universal table. Which family applies depends on whether the scheduled channel is downlink or uplink, whether higher-order modulation is enabled, and in uplink also whether transform precoding is in use.
| Table family | Main use | Reading notes |
|---|---|---|
| PDSCH standard table family | Normal downlink shared-data scheduling | Use as the default downlink reading path unless higher-order modulation or an alternate family is configured |
| PDSCH higher-order modulation family | Downlink scheduling with 256QAM-capable operation | Higher payload efficiency becomes possible, but only with the right capability and configuration context |
| PDSCH low-SE family | Downlink cases that need lower spectral-efficiency points | Useful when the scheduler needs more conservative transport efficiency than the default family provides |
| PUSCH standard table family | Normal uplink shared-data scheduling | Use as the default uplink reading path unless transform-precoding or alternate higher-order modulation conditions apply |
| PUSCH higher-order modulation family | Uplink scheduling with 256QAM-capable operation | Read together with uplink capability, Power Control, and radio quality |
| PUSCH low-SE family | Uplink cases needing lower spectral-efficiency points | Useful at weaker radio conditions or more conservative scheduling points |
| Transform-precoding family | Specific uplink transmission contexts with Transform Precoding | Do not read these cases using the same assumptions as ordinary CP-OFDM uplink scheduling |
Downlink MCS families
For PDSCH, the main split is between the default table family, the higher-order modulation family when 256QAM operation is enabled, and a lower spectral-efficiency family for more conservative scheduling points. The important reading rule is to confirm which family is active before deciding what a raw MCS index means.
Uplink MCS families
For PUSCH, the same broad logic exists, but the uplink path also needs to be read with Power Control and Transform Precoding. A high uplink MCS can look plausible in signaling but still be unsustainable once power limitation and channel conditions are included.
Selection and signaling
The active MCS value is signaled per scheduled transmission, but the meaning of that value depends on the configured table family and current transmission context. Read MCS in two layers: which table family is active, and which raw index inside that family was signaled.
| Input | Where it comes from | What to check |
|---|---|---|
| Table family selection | RRC configuration and transmission context | Check whether higher-order modulation or alternate family selection is enabled for the channel |
| MCS index | DCI scheduling assignment | Check the raw index only after the correct family is confirmed |
| Channel type | Current scheduled transmission | Do not read a PDSCH MCS using a PUSCH assumption or vice versa |
| Transform-precoding context | Uplink waveform configuration | Check whether the uplink case uses a transform-precoding-specific family |
| Radio and capability context | Current link conditions and UE support | A configured table family may exist, but practical use still depends on capability and radio conditions |
A common mistake is to decode only the raw MCS field from DCI and skip the table-family selection step. That can make the same signaled index look higher or lower than it really is.
MCS and transport-block size
MCS affects transport-block size by setting modulation order and coding efficiency after the scheduler already knows the allocated PRBs, symbol count, and overhead. This is why MCS belongs together with Transport Block Size and Resource Allocation.
| Change | What usually happens |
|---|---|
| Higher MCS with same allocation | TBS usually increases, but BLER pressure also increases |
| Lower MCS with same allocation | TBS usually decreases, but the transmission becomes more robust |
| Higher MCS plus heavy retransmissions | Nominal payload efficiency rises, but delivered goodput may fall |
| Same MCS with more overhead | TBS can still drop because fewer usable resource elements remain |
| Same MCS with more layers | TBS can increase if the channel supports the added layers |
This is also why throughput should not be judged from MCS alone. A high MCS with few scheduled resources, low layer count, or frequent HARQ retransmissions can still produce lower delivered throughput than a more moderate MCS with better stability.
Downlink and uplink reading
The same MCS concept applies to both downlink and uplink shared channels, but the interpretation should still follow the active channel path.
| Area | Downlink view | Uplink view |
|---|---|---|
| Main channel | PDSCH | PUSCH |
| Main path to MCS | PDCCH downlink assignment | PDCCH uplink grant or configured-grant context |
| Main practical limit | Decode quality, layer support, retransmission pressure | Decode quality, power limitation, transform-precoding context, retransmission pressure |
| Common reading mistake | Assuming a high downlink MCS always means strong delivered throughput | Assuming a high uplink MCS is sustainable without checking coverage and power headroom |
Troubleshooting
Start with the active table family, then check whether the selected MCS was sustainable for the actual radio conditions and scheduling context. Many MCS-related misunderstandings come from reading the raw index correctly but the surrounding context incorrectly.
| Symptom | What to inspect first |
|---|---|
| High MCS but low goodput | HARQ retransmissions, allocation size, layer count, and scheduling frequency |
| Raw MCS field seems inconsistent with modulation | Active table family and whether the transmission is downlink or uplink |
| Uplink MCS swings sharply | Power Control, transform-precoding context, and cell-edge radio conditions |
| Large allocation but low TBS | TBS inputs, overhead, lower coding efficiency, and layer count |
| Frequent conservative MCS on an otherwise healthy cell | Link Adaptation, measurement quality, and whether CSI or sounding is weak |
Common mistakes
- reading the MCS index without confirming the active table family
- equating higher MCS with better throughput without checking retransmissions
- ignoring uplink power limitation when reading PUSCH MCS
- comparing downlink and uplink MCS as if they use identical practical constraints
- treating MCS alone as the reason for payload size without checking allocation and overhead
References
- 3GPP TS 38.214 Release 18 - physical-layer data procedures including MCS table families and transport efficiency for scheduled shared channels
- 3GPP TS 38.213 Release 18 - physical-layer control procedures including scheduling context used with MCS signaling
- 3GPP TS 38.331 Release 18 - RRC configuration that affects channel-specific MCS table selection and transmission context
- 3GPP TS 38.212 Release 18 - coding-chain context used after the final MCS and TBS decision
FAQ
What is MCS in 5G NR?
It is the modulation and coding scheme used for a scheduled PDSCH or PUSCH transmission.
Does the same MCS table apply to all NR shared-channel transmissions?
No. The active table family depends on the channel type and configuration context, including higher-order modulation and in uplink also transform precoding.
Why can the same MCS index mean different things?
Because the same raw index is interpreted inside the active MCS table family, and different families map the index to different efficiency points.
Does a higher MCS always increase delivered throughput?
Not always. It can increase transport efficiency, but if the radio path cannot sustain it, retransmissions can reduce delivered goodput.
What should I check first when a high MCS does not produce high throughput?
Check allocation size, overhead, layers, retransmissions, and whether the chosen MCS was actually sustainable for current radio conditions.