MCS, or Modulation and Coding Scheme, is a way to ā⦠[evaluate] the quality of the RF environment – the RF media that devices are working in, which is reflected in every single transmissionā (from MCS Table and How To Use it).
The matrix of those various measurements is called an MCS table. From that matrix, you can derive the MCS index of a given radio network configuration. An excellent table can be found at mcsindex.com. Whenever I refer to ālooking at the tableā in this post, thatās what Iām referring to, so if you havenāt clicked to open that link, do so now!
Windows doesnāt show you your MCS index. The quickest text-based format to show Wi-Fi data in Windows comes courtesy of the ānetshā command:
> netsh wlan show interface
The problem is that Windows will show you your raw data rate, but itās missing certain information. Hereās some Windows output:
Name : Wi-Fi
Description : Intel(R) Wi-Fi 6 AX201 160MHz
GUID : f6cbd34e-3469-46c4-b6f8-47c02af70e48
Physical address : 94:e2:3c:83:c8:27
Interface type : Primary
State : connected
SSID : Starbucks WiFi
AP BSSID : e2:cb:ac:92:24:ff
Band : 5 GHz
Channel : 149
Network type : Infrastructure
Radio type : 802.11ac
Authentication : Open
Cipher : None
Connection mode : Auto Connect
Receive rate (Mbps) : 400
Transmit rate (Mbps) : 400
Signal : 96%
Profile : Starbucks WiFi
QoS MSCS Configured : 0
QoS Map Configured : 0
QoS Map Allowed by Policy : 0
I see that my Receive rate (aka Rx, aka DL/downlink) and Transmit rate (aka Tx, aka UL/uplink) are both 400 Mbps. But what does that mean? Looking at the MCS table, it indicates that a rate of 400 can mean only one thing… Iām using:
- 2 spatial streams (NSS, or āNumber of Spatial Streamsā)
- 256-QAM
- 5/6 coding
- 40 MHz channel
- 400μs guard interval (GI)
⦠therefore my MCS index is 9⦠easy! The only information I need from Windows here is the fact that my āRadio typeā is 802.11ac, which means Iām using VHT (Wi-Fi 5), not HE (802.11ax/Wi-Fi 6) or EHT (802.11be/Wi-Fi 7).
Hereās another example:
Name : Wi-Fi
Description : Intel(R) Wi-Fi 6 AX201 160MHz
GUID : f6cbd34e-3469-46c4-b6f8-47c02af70e48
Physical address : 94:e2:3c:83:c8:27
Interface type : Primary
State : connected
SSID : Flowers By Irene
AP BSSID : 4c:43:41:04:1c:bc
Band : 5 GHz
Channel : 149
Network type : Infrastructure
Radio type : 802.11ax
Authentication : WPA3-Personal (H2E)
Cipher : CCMP
Connection mode : Auto Connect
Receive rate (Mbps) : 864.7
Transmit rate (Mbps) : 1201
Signal : 95%
Profile : Flowers By Irene
QoS MSCS Configured : 0
QoS Map Configured : 0
QoS Map Allowed by Policy : 0
Hosted network status : Not available
In this case, my downlink data rate is 864.7 and my uplink rate is 1201. Unfortunately my DL is pretty ambiguous. Looking at the MCS table…
- 864.7 Mbps could mean:
- MCS 4 on EHT at 1 SS / 16-QAM / ¾ coding / 320 MHz / 0.8μs GI
- MCS 8 on HE/EHT at 1 SS / 256-QAM / ¾ coding / 160 MHz / 0.8μs GI
- MCS 2 on EHT at 2 SS / QPSK / ¾ coding / 320 MHz / 0.8μs GI
- MCS 4 on HE/EHT at 2 SS / 16-QAM / ¾ coding / 160 MHz / 0.8μs GI
- MCS 8 on HE/EHT at 2 SS / 256-QAM / ¾ coding / 80 MHz / 0.8μs GI
- ⦠etc
- 1201 Mbps could mean:
- MCS 11 on HE/EHT at 1 SS / 1024-QAM / ā coding / 160 MHz / 0.8μs GI
- MCS 11 on HE/EHT at 2 SS / 1024-QAM / ā coding / 80 MHz / 0.8μs GI
In the scenarios above, what are the most logical conclusions? First, most modern mobile client stations have 2 radio chains and therefore likely 2 spatial streams (aka 2Ć2:2, meaning 2 Tx radio chains Ć 2 Rx radio chains : 2 spatial streams). In the 864.7 Mbps scenario, we can probably disregard the first two that have only 1 spatial stream. We can also disregard option 3, because we can see from the Windows output that itās 802.11ax, aka HE, so itās clearly not EHT. Unfortunately, there is no way to tell which MCS value we truly have, without querying the driver or doing a packet capture. With a data rate of 1201 Mbps, on the other hand, itās obviously MCS 11, though Windows doesnāt tell us if itās an 80 or a 160 MHz channel width. But if we assume it is also 2 spatial streams, we determine the channel width is then 80 MHz. If we āback applyā that logic to the downlink, we can reasonably guess the downlink is MCS index 8, because the DL and UL bandwidth would be the same. Therefore:
- UL is MCS 11
- DL is MCS 8
I just had to show one more thing. I work for Calix, so I am privy to the some wiz-bang Wi-Fi systems (in this case, the GigaSpire 7u10t). I also have a Minisforum MS-01 Workstation Core i9-13900H with a Wi-Fi 7 PCIe card with 6 GHz, 320 MHz bandwidth, which shows as:
>netsh wlan show interface
There is 1 interface on the system:
Name : Wi-Fi
Description : TP-Link Wi-Fi 7 PCIe Adapter
GUID : 7467bdb0-9d6f-4ee7-aa37-59285d91e6f7
Physical address : fc:b0:de:cd:7e:0b
Interface type : Primary
State : connected
SSID : Flowers By Irene
AP BSSID : c2:43:41:04:1c:bd
Band : 6 GHz
Channel : 37
Network type : Infrastructure
Radio type : 802.11be
Authentication : WPA3-Personal (H2E)
Cipher : CCMP
Connection mode : Profile
Receive rate (Mbps) : 5764.8
Transmit rate (Mbps) : 5764.8
Signal : 88%
Profile : Flowers By Irene
QoS MSCS Configured : 0
QoS Map Configured : 0
QoS Map Allowed by Policy : 0
and my Calix Speed & Performance Insights server yield 3.4Ć2.6 Gbps over Wi-Fi… š„

As for the DL/UL rate? Itās the highest possible score for 2 spatial streams at:
MCS 13 on EHT at 2 SS / 4096-QAM / ā coding / 320 MHz / 0.8μs GI
In the near future, I will do the same MCS fiddling on macOS. Hint: macOS gives you the MCS index, but withholds certain other information, so we will still have some (different) detective work to do!