Introduction
As a WiFi admin, you are probably familiar with WiFi Data Rates and the concept of DRS (Dynamic Rate Switching/Shifting/Selection).
Numbers like 6Mbit/s, 54MBit/s, 144MBit/s, 300MBit/s and 400MBit/s all look pretty familiar – but what are they based on?
The numbers are not random at all – the data rates of OFDM PHYs (802.11a, 802.11g, 802.11n, 802.11ac) are all based on the same single formula, which consists of 5 variables:
 Data Subcarriers (number of subcarriers that transmit modulated data)
 Modulation (amount of bits each data subcarrier can represent; predefined mix and match possibilities with coding)
 Coding (defines how much of the modulated data is useful data and how much of it is for error correction; predefined mix and match possibilities with modulation)
 Spatial Streams (number of unique MIMO data streams that can be sent in parallel)
 Symbol Interval Time (the sum of Data Interval Time + Guard Interval)
I’d like keep this blogpost short and sexy, and just show how you can calculate the different data rates based on these numbers.
In the following days and weeks, I’m going to publish additional blogposts, where I’ll explain the different variables thoroughly, and link them in this blogpost.
Formula
With the variables described above, the following formula is used to calculate OFDM data rates:
Data Subcarriers * Modulation * Coding * Spatial Streams / (Data Interval Time + Guard Interval) = Data Rate in Bits/Microsecond = Data Rate in Mbit/s
Possible Values Of Variables

802.11a 
802.11g 
802.11n 
802.11ac 
Data Subcarriers 
48 
48 
52 108 
52 108 234 468 
Modulation & Coding 
BPSK 1/2 BPSK 3/4 QPSK 1/2 QPSK 3/4 16QAM 1/2 16QAM 3/4 64QAM 2/3 64QAM 3/4 
BPSK 1/2 BPSK 3/4 QPSK 1/2 QPSK 3/4 16QAM 1/2 16QAM 3/4 64QAM 2/3 64QAM 3/4 
BPSK 1/2 QPSK 1/2 QPSK 3/4 16QAM 1/2 16QAM 3/4 64QAM 2/3 64QAM 3/4 64QAM 5/6 
BPSK 1/2 QPSK 1/2 QPSK 3/4 16QAM 1/2 16QAM 3/4 64QAM 2/3 64QAM 3/4 64QAM 5/6 256QAM 3/4 256QAM 5/6 
Spatial Streams 
1

1

1 2 3 4

1 2 3 4 5 6 7 8 
Symbol Interval Time 
4us

4us

4us 3.6us 
4us 3.6us 
As you can see in the table above, Data Subcarriers, Symbol Interval Time and Spatial Streams are fixed values for 802.11a & 802.11g. Only Modulation and Coding are variable – therefore only a small number (8) of different data rates are possible for these PHYs.
In 802.11n & 802.11ac, all 5 numbers are variable and can be mixed almost randomly, leading to a massive amount of different possible data rates, making it impossible to keep all of them in mind:
Examples
To wrap this blogpost up, here are the calculations of the 5 data rates I mentioned at the beginning of this blogpost:
Calculation 
Data Rate 
Description 
48 * 1 * 1/2 * 1 / (3.2u + 0.8u) 
6Mbit/s 
Lowest possible Data Rate for 802.11a & 802.11g 
48 * 6 * 3/4 * 1 / (3.2u + 0.8u) 
54Mbit/s 
Highest possible Data Rate for 802.11a & 802.11g 
52 * 6 * 5/6 * 2 / (3.2u + 0.4u) 
144.4Mbit/s 
Highest possible Data Rate for 802.11n, where Channel Width = 20MHz, Spatial Streams = 2, Guard Interval = Short 
108 * 6 * 5/6 * 2 / (3.2u + 0.4u) 
300Mbit/s 
Highest possible Data Rate for 802.11n, where Channel Width = 40MHz, Spatial Streams = 2, Guard Interval = Short 
108 * 8 * 5/6 * 2 / (3.2u + 0.4u) 
400Mbit/s 
Highest possible Data Rate for 802.11ac, where Channel Width = 40MHz, Spatial Streams = 2, Guard Interval = Short 
From the above the coding rate with modulation
64QAM 1/2, 64QAM 3/4, 64QAM 5/6.
I found some website lists as
64QAM 2/3, 64QAM 3/4, 64QAM 5/6.
Which one is correct? Thanks
Hi
You’re absolutely right – this was a typo on on my behalf!
Thank you for pointing this out, I updated the table.
48 * 1 * 1/2 * 1 / (3.2u + 0.8u)
here ,
48 no of subcarrier
1 this represents what i am not getting ??
1/2modulation & coding
1spatial stream
pls explain little details
Hi
Sorry for the late response.
This “1” is the number of bits that each subcarrier can represent – it is the modulation.
In your example, it is either a “0” or a “1”, therefore it represents only 1 bit (BPSK or Binary Phase Shift Keying).
With a higher modulation, say 16QAM, a subcarrier is able to differentiate between 2^4 bits (16 different numbers “0000”, “0001”, “0010”, … “1111”), therefore the number in the calculation would be a “4” for the 4 bits it can modulate.
You can read more about Modulation and QAM in the following Aruba Blog:
https://blogs.arubanetworks.com/solutions/mobility/whatisqam/