Windows 10 automatically recalculates network interface metrics based on link speed and status, overriding manual configurations to prioritize the fastest available connection. To enforce a specific priority for Ethernet or Wi-Fi, you must disable the "Automatic Metric" setting in the adapter's advanced properties or use PowerShell to force a static value. This ensures your traffic routes through the intended interface regardless of bandwidth fluctuations.
Understanding How Windows Calculates Network Metrics
The network metric is a numerical value assigned to each network interface that determines its priority in the routing table. Lower values indicate higher priority. When multiple interfaces are active, Windows selects the one with the lowest metric to route outbound traffic. By default, Windows sets this value automatically based on the interface type and current link speed. For example, an Ethernet connection typically receives a lower automatic metric than Wi-Fi because it is generally faster and more stable.
However, users often encounter situations where they need to override this behavior. Perhaps you have a high-speed Wi-Fi connection that you want to prioritize over a slower Ethernet line, or vice versa. In these cases, manually setting the metric seems like the logical solution. Unfortunately, Windows 10 has a built-in feature called "Automatic Metric" that constantly monitors the network environment. If this feature is enabled, any manual value you enter will be ignored once the system detects a change in link status or speed. The operating system will revert to its calculated value, causing confusion when your expected routing does not occur.
Debugging Windows PC Ethernet Issues provides additional context on how network adapters interact with the operating system, which is relevant when troubleshooting why a specific interface might be behaving unexpectedly.
Disabling Automatic Metric via GUI
The most common reason for manual metrics being ignored is that the "Automatic Metric" checkbox remains selected. You can resolve this by accessing the network adapter settings directly. First, open the Control Panel and navigate to Network and Internet, then Network and Sharing Center. From there, click on Change adapter settings on the left sidebar. Right-click the network adapter you wish to configure (either Ethernet or Wi-Fi) and select Properties.
In the Properties window, locate the item labeled Internet Protocol Version 4 (TCP/IPv4) or Internet Protocol Version 6 (TCP/IPv6), depending on your IP version usage. Click the Properties button next to it. While this dialog box contains basic IP settings, the metric control is actually located in the main adapter properties list, not inside the IP protocol settings. Go back to the main adapter Properties window and click the Configure button near the bottom.
Switch to the Advanced tab in the new window. Scroll through the list of properties until you find Network Address or Link Speed/Duplex, but specifically look for an entry named
Automatic Metric. If this property exists, set its Value to Disabled. Once disabled, the system stops calculating the metric dynamically. You can then look for a property named
Metric in the same list. Set its Value to your desired number, such as 10 for high priority or 50 for low priority. Apply the changes and restart the computer to ensure the routing table updates correctly.
Forcing Static Metrics via PowerShell
If the graphical interface does not expose the Automatic Metric option or if the changes do not persist, PowerShell offers a more direct method to control network interfaces. This approach is particularly useful for scripting or when dealing with complex network configurations. Open PowerShell as an Administrator and run the command
Get-NetAdapter to list all active network interfaces along with their current metrics. Identify the Name or InterfaceIndex of the adapter you want to modify.
To disable automatic calculation and set a static metric, use the
Set-NetIPInterface cmdlet. The syntax requires specifying the interface and setting the
InterfaceMetric parameter. For example, to set a static metric of 20 for an adapter named "Ethernet," you would execute:
Set-NetIPInterface -InterfaceAlias "Ethernet" -InterfaceMetric 20 -AutomaticMetric Disabled
This command explicitly tells Windows to ignore dynamic calculations and adhere to the provided number. Verify the change by running
Get-NetIPInterface again to confirm the metric reflects your input. This method bypasses potential UI glitches and ensures the setting is applied at the kernel level.
Verifying Routing Table Priority
After applying either the GUI or PowerShell methods, it is crucial to verify that the routing table has updated correctly. Use the
route print command in Command Prompt or PowerShell. Look for the Active Routes section and identify entries for your local subnet and default gateway (0.0.0.0). The column labeled "Metric" should reflect the values you assigned. If the metric for your preferred interface is still showing a different value, check if another service, such as a third-party firewall or virtual network adapter, is interfering.
Bridging WiFi and Lan in Windows 10 discusses scenarios where multiple interfaces are combined, which can complicate metric selection and requires careful management of interface priorities.
Sometimes, simply pinging the gateway or testing internet connectivity may not reveal the issue immediately. Use
netstat -r to view the active routing table in a more concise format. Ensure that the path to your destination uses the interface with the lower metric. If problems persist, consider resetting the network stack using
netsh int ip reset followed by a reboot, though this should be a last resort after confirming the automatic metric setting is truly disabled.
Frequently Asked Questions
Why does my manual metric change back to auto?
The change occurs because the Automatic Metric feature is still enabled in the adapter properties. Windows continuously monitors link speeds and adjusts the metric dynamically unless you explicitly disable this feature in the Advanced settings or via PowerShell.
Can I set different metrics for IPv4 and IPv6?
Yes, network metrics are configured per IP version. You must disable automatic metrics and set static values separately for both IPv4 and IPv6 interfaces if you want consistent routing behavior across both protocols.
What happens if two interfaces have the same metric?
If two active interfaces share the same metric, Windows uses secondary criteria, such as the order of installation or specific load-balancing algorithms, to decide which interface handles the traffic. This can lead to unpredictable routing results.
Does disabling automatic metric affect internet speed?
No, disabling automatic metric does not change the physical speed of your connection. It only influences which interface the operating system chooses to send data through when multiple connections are available simultaneously.
How do I reset network metrics to default?
To restore default behavior, re-enable the Automatic Metric property in the adapter's Advanced settings or use the PowerShell command
Set-NetIPInterface -InterfaceAlias "Name" -AutomaticMetric Enabled.