How to Configure TCP Window Auto-Tuning Level in Windows 11 Using PowerShell

The transmission of data over Transmission Control Protocol (TCP) connections relies on a sliding receive window to regulate how many bytes of unacknowledged data a sender can transmit before waiting for an acknowledgement (ACK). In early networking architectures, TCP receive windows were constrained to 64 kilobytes (KB) due to a 16-bit header limit. Modern operating systems implement TCP Window Scale options (RFC 1323) combined with TCP Window Auto-Tuning to dynamically expand the receive buffer up to several megabytes based on the network path’s Bandwidth-Delay Product (BDP). However, aggressive auto-tuning can introduce bufferbloat or fail on legacy enterprise routers, while disabled auto-tuning caps modern gigabit fiber connections to a fraction of their potential speed. This article explains how to inspect, configure, and optimize TCP Window Auto-Tuning levels in Windows 11 using PowerShell.

Understanding TCP Window Auto-Tuning in Windows 11

In Windows 11, the TCP/IP stack continuously monitors round-trip times (RTT), packet delivery intervals, and memory pressure. Through the AutoTuningLevelLocal parameter, the kernel dynamically scales the TCP receive buffer to maximize network throughput:

  • Bandwidth-Delay Product (BDP): Computed as Bandwidth (bytes/sec) × RTT (seconds). A 1 Gbps connection communicating across a 50 ms latency transatlantic link requires a receive buffer of over 6.25 megabytes (MB) to achieve maximum line rate.
  • Dynamic Scaling: When auto-tuning is enabled, Windows dynamically advertises larger window sizes to the remote server, preventing the sender’s transmission pipeline from stalling while waiting for acknowledgements.
  • Bufferbloat and Legacy Firewall Compatibility: On congested networks with undersized intermediate router buffers, excessive window expansion can cause latency spikes (bufferbloat). Additionally, older hardware firewalls that do not recognize TCP window scaling flags can reject or drop enlarged packets.

Inspecting Current TCP Auto-Tuning Settings

To inspect your active TCP transport configurations, open an elevated Windows PowerShell console (Run as Administrator) and execute Get-NetTCPSetting:

Get-NetTCPSetting | Select-Object SettingName, AutoTuningLevelLocal, CongestionProvider, ScalingHeuristics

Windows organizes TCP properties into transport profiles (such as Internet, Datacenter, Compat, and Custom). Focus on the Internet setting profile, which governs standard web, streaming, and cloud network traffic:

Get-NetTCPSetting -SettingName "Internet" | Format-List SettingName, AutoTuningLevelLocal, MinRtoMs, InitialCongestionWindowMss

The AutoTuningLevelLocal attribute indicates the active level applied to incoming TCP connections.

Understanding AutoTuningLevelLocal Configuration Modes

Windows 11 supports five distinct auto-tuning modes via PowerShell:

  • Normal (Default): Dynamically scales the receive window up to 16 MB based on bandwidth and delay measurements. This is the optimal setting for high-speed broadband and fiber connections.
  • Restricted: Permits the receive window to grow beyond the baseline 64 KB, but limits aggressive expansion to mitigate bufferbloat on variable high-latency wireless links.
  • HighlyRestricted: Enforces very conservative growth, increasing window size only when packet loss is virtually zero.
  • Disabled: Locks the receive window to the default Maximum Segment Size (MSS) baseline (64 KB). Window scaling is disabled completely. This setting resolves connectivity issues caused by outdated routers or non-compliant legacy firewalls, but caps maximum throughput.
  • Experimental: Aggressively expands the receive window beyond standard operational thresholds, designed for extreme high-bandwidth, high-latency research links.

Configuring TCP Auto-Tuning Level via Set-NetTCPSetting

To adjust the auto-tuning level across the standard Internet profile, use the Set-NetTCPSetting cmdlet.

1. Restoring the Optimal Default (Normal): If auto-tuning was previously disabled by third-party “network optimizer” utilities resulting in throttled download speeds, restore normal operation:

Set-NetTCPSetting -SettingName "Internet" -AutoTuningLevelLocal Normal

2. Configuring Restricted Mode for Stable Latency: If your connection suffers from bufferbloat or inconsistent ping spikes during heavy downloads, configure restricted scaling:

Set-NetTCPSetting -SettingName "Internet" -AutoTuningLevelLocal Restricted

3. Disabling Auto-Tuning for Legacy Network Compatibility: When troubleshooting legacy corporate VPNs or older hardware switches that fail to negotiate window scaling, disable auto-tuning temporarily:

Set-NetTCPSetting -SettingName "Internet" -AutoTuningLevelLocal Disabled

4. Applying Across All Profiles: To apply a consistent tuning level across all active TCP profiles simultaneously (including Datacenter and Custom profiles), pipe the query directly into the modifier:

Get-NetTCPSetting | Set-NetTCPSetting -AutoTuningLevelLocal Normal

Verifying Configuration and Testing Throughput

Confirm that the setting was applied successfully by re-querying the TCP setting table:

Get-NetTCPSetting -SettingName "Internet" | Select-Object SettingName, AutoTuningLevelLocal

To evaluate the real-world impact of the configuration:

  1. Run a standardized network speed and bufferbloat test before and after modifying the setting.
  2. Observe that when AutoTuningLevelLocal is set to Normal, high-bandwidth fiber connections achieve full line-rate downloads, whereas Disabled typically caps throughput significantly below connection capacity.
  3. Monitor active TCP connections and negotiated window sizes in PowerShell using Get-NetTCPConnection -State Established.

By tailoring the TCP Window Auto-Tuning level via PowerShell, Windows 11 administrators can ensure maximum network throughput while maintaining compatibility across diverse enterprise routing environments.

Get the best tech tips delivered straight to your inbox.

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