Transport Block Size, Throughput and Code rate

Since the size of transport block is not fixed, often a question comes to mind as to how transport block size is calculated in LTE.

Back Ground
If we only consider "Uplink direction" and we assume that the UE is already attached to the network, then data is first received by PDCP (Packet data compression protocol) layer. This layer performs compression and ciphering / integrity if applicable. This layer will pass on the data to the next layer i.e. RLC Layer which will concatenate it to one RLC PDU.

RLC layer will concatenate or segment the data coming from PDCP layer into correct block size and forward it to the MAC layer with its own header. Now MAC layer selects the modulation and coding scheme configures the physical layer. The data is now in the shape of transport block size and needed to be transmitted in 1ms subframe.

Transport Block size

Now how much bits are transferred in this 1ms transport block size? 
It depends on the MCS (modulation and coding scheme) and the number of resource blocks assigned to the UE. We have to refer to the Table and Table from 3GPP 36.213

Lets assume that eNB assigns MCS index 20 and 2 resource blocks (RBs) on the basis of CQI and other information for downlink transmission on PDSCH. Now the value of TBS index is 18 as seen in Table

After knowing the value of TBS index we need to refer to the Table to find the accurate size of transport block (Only portion of the table is shown here while for the complete range of values refer to 3gpp document 36.213

Now from the Table the value of Transport block size is 776 bits for ITBS = 18 and NPRB=2


Throughput is simply = Transport block size*(1000) = 776 *1000 = 776000 bits / seconds = 0.77 mbps (Assuming MIMO not used)

Please check this Throughput Calculator which takes MCS values and number of resource blocks as input to calculate the downlink throughput

Code Rate

In simple words, code rate can be defined as how effectively data can be transmitted in 1ms transport block or in other words, it is the ratio of actual amount of bits transmitted to the maximum amount of bits that could be transmitted in one transport block

code rate = (TBS + CRC) / (RE x Bits per RE)

TBS = Transport block size as we calculated from Table
CRC = Cyclic redundancy check i.e. Number of bits appended for error detection
RE = Resource elements assigned to PDSCH or PUSCH
Bits per RE = Modulation scheme used

While we know the values of TBS, CRC and bits per RE (modulation order), it is not easy to calculate the exact amount of RE used for PDSCH or PUSCH since some of the REs are also used by control channels like PDCCH, PHICH etc

In our case, lets assume that 10% of RE's are assigned for control channels then

TBS = 776
CRC = 24
RE = 2 (RB) x 12 (subcarriers) x 7 (assuming 7 ofdm symbols) x 2 (slots per subframe) x 0.9 (10% assumption as above) = 302 REs
Bits per RE = 6 (Modulation order from table


code rate = (776 + 24) / (302 * 6 ) = 0.4


  1. How is CRC bits caliculated to 24 bits in above example? please put some light on this as well.

    1. Hi Venkat please refer to 3gpp 36.212 section 5.1.1 for details

  2. check here you will get some thing great lte topics i got very good help from him to complete my lte project

  3. Please visit website
    for telecom jobs. Thanks

  4. I don't get it. Seriously . I don't get it.

    1. Is the coding rate fixed ?

      I mean for different CFI and different transmission modes you get different number of REs per RB hence different coding rate.

      So the coding rate is not fixed.

    2. This comment has been removed by the author.

    3. I found a helpful site for details about CFI

      It mentions that the number of REs used for control channel is not fixed.
      The ratio might be different according to your scenario. (i.e. system bandwidth etc.)
      While in some cases, the CFI = 1 makes the REs / PRB = 150/(84x2) = 0.8928 ... , so the assumption of 10% ratio reserving for control channels is approximately correct in most cases.

      Finally, the coding rate might not be fixed with this consideration.

  5. How does a packet travels between the internet gateway - PGW -... to the UE. Since all is managed by IP how does the headers change along the way.

    1. When a location update procedure is carried out, PDP-context is activated.
      The headers change all the way because the IP address of different entities at different layers is different. Thus, MME for example would have 2 unique IP address, one on layer 2 and one on layer 3, and each entity has its unique IP address.

      It is due to this reason, the headers change when a packet is transferred from one entity to the other... (The packets travels in tunnels. AT the end point of the tunnel, due to PDP context, corresponding to the next tunnel's IP destination, the values are changed.)

      Please correct me if wrong

  6. This comment has been removed by the author.

  7. Can anyone explain why Itbs = 6 and Nrb = 1, the TB size is larger than the surrounding TB sizes including Nrb=2. This doesn't make any sense. It is also exactly the same size as Itbs=16. Could this be a typo?

  8. why MCS 29 , 30 & 31 are needed ??

  9. Watch free Sports Channels online | USA Tv Channels | UK Tv Channels | Spain Tv Channels | Watch USA Tv Series online | Adult 18+ Tv Channel | Watch High Quality Live Streaming online

  10. in the code rate calculation, you've mentioned number of ofdm symbols as 7. But one symbol is for DRS, so i think it should be 6 instead of seven. Because DRS cannot carry data..

  11. This comment has been removed by the author.

  12. This comment has been removed by the author.

  13. Hi everyone,

    how many OFDM symbols and Reference Signals per resource block are assumed in that process?

    Thank you :)

  14. in your example, the number of bits per transport block would it be: 2 (RB) x 12 (subcarriers) x 7 (assuming 7 ofdm symbols) x 2 (slots per subframe) x 6 (symbols/RE) = 2016 bits? How is this related to the number given in the table, 776 bits? thank you!

  15. Hi,

    Please explain the Code Rate example calculation:

    I am confused on how 6 bits per RE was derived.

    Bits per RE = 6 (Modulation order from table How is it determined. The bits per Resource Element is 6, though Modulation Coding Scheme is not mentioned. Please clarify. Thank you.

    1. Hi,
      1 RE carries one modulation symbol. For the assumed MCS index of 20, table 7.1.7-1.1 tell the modulation order of 6 i.e. 64-QAM. Hence each RE carries 6 bits.

  16. It’s understandable that parents want to block sites that much, because quite often one can face dirty pics or unpleasant articles, take a look to find more facts about the app!

  17. Hi everybody, I would like to know what I have to do to account for the extended CP in the maximum throughput. If I take the equation for coding rate and assume 6 ofdm symbols (extended CP) I actually get a higher coding rate than using normal CP (normal CP = 0.75 and extended CP = 0.872), what seems wrong to me as it will increase the throughput.