The peak throughput of an LTE link is not measured first. It is calculated from two numbers that the eNB decides every subframe: the MCS and the number of RBs. Once you know those two numbers, 36.213 gives the transport block size, and the rest is multiplication.
I'll start with the formula, then work through a downlink example with MCS 23 and 100 RBs, and then the uplink. The last section explains which point of the processing chain this number describes, because it is not the rate on the air interface.
- How to calculate throughput from MCS and RB ?
- Downlink Example - MCS 23 and 100 RB
- How is the uplink throughput calculated ?
- Which step of the processing chain does this throughput describe ?
- Reference
How to calculate throughput from MCS and RB ?
Let's keep the formula simple first. In FDD every subframe is 1 ms, so a UE can receive at most 1000 subframes per second. The throughput is then the number of bits per subframe multiplied by the number of subframes that carry data.
If you know the MCS index and number of RBs, you can calculate the throughput for that specific MCS idex and RB as follows:
PHY layer throughput in bits = Transport Block Size (bits) / subframe
x Number of the scheduled subframes / sec
= ???? bits/sec
, where number of transport blocks /subframe is 1 for TM1,TM2 and 2 for TM3, TM4
NOTE 1 : Transport Block Size is determined by the number of RB and MCS according to TS36.213
Table 7.1.7.1-1 and Table 7.1.7.2.1-1
NOTE 2 : Number of the scheduled subframe mean that the subframe that is scheduled to transmit data.
if UE is in max throughput condition, you may assume that every subframe is scheduled to transmit
user data. In this case, 'Number of the scheduled subframes' become 1000
The formula counts transport blocks, not antennas. In TM3 and TM4 with rank 2, the eNB sends two codewords, and each codeword carries its own transport block. So the bits per subframe are the TBS of the first transport block plus the TBS of the second one. With rank 1, the same transmission modes send only one transport block.
Throughput is TBS per subframe multiplied by scheduled subframes per second : in FDD at full scheduling, that is TBS x 1000 per second for each transport block.MCS and RB count decide the TBS : the MCS gives ITBS, and ITBS with the RB count gives the TBS from 36.213.The number of transport blocks follows the rank : two transport blocks need spatial multiplexing with at least two layers.
Downlink Example - MCS 23 and 100 RB
A worked example makes the table lookups concrete. The numbers below are for a 20 MHz carrier, which has 100 RBs, with every subframe scheduled. Each step names the table it reads, so you can repeat the lookup for any other MCS and RB count.
Calculation Procedure for downlink(PDSCH) is as follows :
i) refer to TS36.213 Table 7.1.7.1-1
ii) get I_TBS for using MCS value (Let's assume MCS is 23. in this case, I_TBS is 21 )
iii) refer to TS36.213 Table 7.1.7.2.1-1
iv) go to column header indicating the number of RB (Let's assume that RB is 100)
v) go to row header ‘21’ which is I_TBS
vi) you would get 51024 (if the number of RB is 100 and I_TBS is 21)
vii) (This is Transfer Block Size per 1 ms for one Antenna)
If we use 2 antenna, the throughput is 51024 bits * 2 transport blocks * 1000 subframes/sec = about 100 Mbps
Let's check each lookup against 36.213 v19.4.0. In Table 7.1.7.1-1, MCS 23 has modulation order 6, which is 64QAM, and ITBS 21. In Table 7.1.7.2.1-1, the row ITBS 21 and the column NPRB 100 hold 51024. So the exact result is 51024 x 2 x 1000 = 102,048,000 bits per second, about 102 Mbps.
This number is not a coincidence. 36.306 v19.3.0 Table 4.1-1 sets the maximum number of DL-SCH transport block bits in one TTI to 102048 for UE category 3. That is exactly 2 x 51024, so this example is the peak rate of a category 3 UE. Category 4 allows 150752 bits, which is 2 x 75376. 75376 is the TBS for ITBS 26 and 100 RBs, reached with MCS 28.
A UE configured for 256QAM uses Table 7.1.7.1-1A instead. In that table, MCS 27 points to ITBS 33, and the 100 RB column of that row holds 97896. So the same formula gives about 196 Mbps with two transport blocks.
MCS 23 with 100 RBs gives 51024 bits per transport block : two transport blocks in every subframe give about 102 Mbps.The UE category caps the result : 102048 bits per TTI is the category 3 limit, so this example is exactly its peak.The MCS table depends on the configuration : a UE configured for 256QAM reads Table 7.1.7.1-1A, where the same MCS index maps to a different ITBS.
How is the uplink throughput calculated ?
The uplink uses the same TBS table, but its own MCS table. An LTE uplink also carries only one transport block per subframe unless UL MIMO is configured, so the formula usually has one term.
Calculation Procedure for uplink(PUSCH) is as follows :
Same as the downlink as above except that you have to refer to 36.213 Table 8.6.1-1 at step i)
Uplink Analysis Paremeter Calculation
Let's take one uplink example. In 36.213 Table 8.6.1-1, MCS 20 is the highest 16QAM entry, and it maps to ITBS 19. With 100 RBs, Table 7.1.7.2.1-1 gives 43816 bits. So one transport block in every subframe gives about 43.8 Mbps.
Notice that the uplink table does not match the downlink table index by index. In Table 8.6.1-1, MCS 10 and MCS 11 both map to ITBS 10, and MCS 20 and MCS 21 both map to ITBS 19. The TBS is the same, but the second MCS of each pair uses the higher modulation order.
Click here for TS 36.213 Tables for TBS
The uplink changes only the first lookup : Table 8.6.1-1 replaces Table 7.1.7.1-1, and the TBS table stays the same.MCS 20 with 100 RBs gives about 43.8 Mbps : this is one 16QAM transport block in every subframe.64QAM in the uplink depends on the UE category : 36.306 Table 4.1-2 lists support for 64QAM in UL as No for categories 1 to 4.
Which step of the processing chain does this throughput describe ?
A throughput number only means something when you know where it is measured. The TBS based number sits at the top of the PDSCH chain, before channel coding adds any redundancy.
Note :
The throughput calculated in this page is the throughput at the first step of the following process (Refer to Physical Layer Channel : Downlink : PDSCH (Physical Downlink Shared Channel) for the details). Usually throughput calculated at this step is taken as a reference throughput (ideal throughput) because the throughput specified in UE Category represents the throughput at this step. When you say 'Trasport Block Size', it means the size of the array 'a' at the first step of the following process.
This throughput often get configured with the throughput calculated at the last step of this process. The throughput at the last step in the process can be defined as physical layer throughput. The data rate at this step is determined only by number of REs allocated for the data and the modulation method (QPSK, QAM, 16 QAM etc).
In most case (practically every PDSCH), there is some difference in terms of data rate between the first step and the last step. This difference is determined by Code Rate.
The diagram below starts from a small TBS table, 36.213 Table 7.1.7.2.1-1, with one entry highlighted. That TBS becomes the user data a0 ... aA-1 at the input of the chain. The chain then runs through ten numbered steps from 36.212 and 36.211 down to resource element mapping.

The throughput on this page is measured at step 1, and coding adds redundancy on the way to step 10.
- Table at the top : ITBS 0 to 2 against NPRB 1, 2, 5, 6 and 10. The highlighted 208 is the TBS for ITBS 2 and 5 RBs.
- Steps 1 to 5 : transport block CRC attachment, code block segmentation with code block CRC attachment, channel coding, rate matching and code block concatenation, all in 36.212 clause 5.3.2.
- Steps 6 to 10 : scrambling, modulation, layer mapping, precoding and resource element mapping, all in 36.211 clause 6.3.
- Note at the bottom : the data rate after step 10 depends only on the number of REs and the modulation, and it is usually higher than the rate at step 1.
The ratio between the two rates is the effective code rate. For MCS 23 with 64QAM, a code rate below 1 means that the RE side carries more bits than the 51024 of the transport block. The difference is the redundancy that lets the UE decode through noise.
The UE category rate is a step 1 rate : it counts transport block bits, not coded bits on the air.The air interface rate is higher : it includes the CRC, the coding redundancy and the rate matching output.Code rate links the two ends : the higher the MCS, the closer the two rates become.
Reference
- 3GPP TS 36.213 v19.4.0 - Table 7.1.7.1-1, Table 7.1.7.1-1A, Table 7.1.7.2.1-1 and Table 8.6.1-1
- 3GPP TS 36.306 v19.3.0 - Table 4.1-1 and Table 4.1-2, physical layer parameter values set by ue-Category