How to Configure UDP Segmentation Offload on Network Adapters in Windows 11 Using PowerShell

Modern internet and local network communication increasingly relies on high-throughput UDP protocols, such as HTTP/3 over QUIC, WebRTC video streaming, and VPN tunnels like WireGuard. Historically, while TCP has benefited from hardware Large Send Offload (LSO) to segment large memory buffers directly on the network card, UDP lacked native hardware segmentation support, forcing the Windows CPU to chop large UDP datagrams into small MTU-sized packets in software. Starting with modern NDIS revisions, Windows 11 incorporates UDP Segmentation Offload (USO). USO delegates the fragmentation and segmentation of large UDP payloads (up to 64 KB) directly to compatible network hardware controllers. However, when paired with outdated network card firmware or virtual switch drivers, USO can lead to dropped UDP packets or connection stalls. Using PowerShell, you can inspect and configure USO settings across all network adapters.

Understanding UDP Segmentation Offload (USO) in Windows 11

When UDP Segmentation Offload is active on a Windows 11 network adapter:

  • Hardware Datagram Segmentation: Applications passing large UDP buffers (such as QUIC streaming engines) avoid CPU-bound packet division. The physical NIC segments the buffer into MTU-compliant UDP packets in hardware.
  • Hardware Checksum Generation: The network adapter automatically computes and writes UDP and IP checksums for each segment simultaneously.
  • Reduced CPU Interrupts: Offloading segmentation dramatically reduces CPU utilisation during gigabit and multi-gigabit UDP transfers.
  • Troubleshooting Role: If client applications experience packet loss with modern protocols like QUIC, cloud gaming (e.g. Xbox Cloud Gaming), or VPN clients, disabling USO forces Windows to segment UDP datagrams in software, bypassing faulty hardware implementations.

Inspecting Active USO Settings with Get-NetAdapterUso

To audit whether UDP Segmentation Offload is supported and active on your system’s network cards, open an elevated PowerShell prompt and execute Get-NetAdapterUso:

Get-NetAdapterUso

The command lists all network adapters alongside their IPv4 and IPv6 USO capabilities:

Name                   IPv4Enabled IPv6Enabled IPv4MaxOffloadSize IPv6MaxOffloadSize
----                   ----------- ----------- ------------------ ------------------
Ethernet               True        True        65536              65536
Wi-Fi                  False       False       0                  0
vEthernet (Default)    True        True        65536              65536

To inspect a single network interface by name:

Get-NetAdapterUso -Name "Ethernet"

If IPv4Enabled or IPv6Enabled reflects True, the hardware controller actively handles UDP segmentation up to the indicated maximum offload size (typically 65,536 bytes).

Disabling UDP Segmentation Offload via PowerShell

If you encounter dropped UDP packets, broken QUIC web connections, or erratic throughput in high-speed streaming applications, disable USO across both IPv4 and IPv6 using Disable-NetAdapterUso:

Disable-NetAdapterUso -Name "Ethernet"

To disable USO exclusively for IPv4 while maintaining IPv6 hardware offloading:

Disable-NetAdapterUso -Name "Ethernet" -IPv4

To disable USO exclusively for IPv6:

Disable-NetAdapterUso -Name "Ethernet" -IPv6

Verify that the operational status has transitioned to False:

Get-NetAdapterUso -Name "Ethernet"

The change applies immediately at the NDIS miniport driver level without requiring an adapter restart or system reboot.

Enabling UDP Segmentation Offload via PowerShell

To restore hardware USO offloading after driver upgrades or performance testing, use the Enable-NetAdapterUso cmdlet:

Enable-NetAdapterUso -Name "Ethernet"

To explicitly enable both IPv4 and IPv6 offloading:

Enable-NetAdapterUso -Name "Ethernet" -IPv4 -IPv6

Confirm that the offload engine is active:

Get-NetAdapterUso -Name "Ethernet"

Inspecting Driver-Level Advanced Properties

In addition to NetAdapter cmdlets, network card vendors (such as Intel, Realtek, or Marvell) expose USO toggles in the driver’s advanced properties. You can inspect these driver-specific registry settings using Get-NetAdapterAdvancedProperty:

Get-NetAdapterAdvancedProperty -Name "Ethernet" | Where-Object { $_.DisplayName -match "UDP Segmentation|USO" }

If present, you can modify the driver property directly in PowerShell using Set-NetAdapterAdvancedProperty:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Segmentation Offload (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Segmentation Offload (IPv6)" -DisplayValue "Enabled"

Testing UDP Throughput and Packet Health

After modifying USO settings, verify connection performance and datagram stability:

  1. Run an iPerf3 UDP throughput benchmark to test high-speed datagram delivery:
    iperf3.exe -c 192.168.1.50 -u -b 1G -t 30
  2. Evaluate the loss percentage reported by the iPerf3 receiver. When USO operates cleanly, packet loss drops significantly and host CPU usage remains low.
  3. Inspect UDP error statistics using netstat -s -p udp to verify that receive and output errors are not incrementing during heavy streaming.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.