Troubleshooting

ERR_NETWORK_CHANGED: why Chrome says a network change was detected

Network changes detected mid-load make Chrome show ERR_NETWORK_CHANGED. Causes: VPN, Wi-Fi roaming, IPv6, virtual adapters. The fixes, in order.

Published ~7 min read
On this page

Short answer: ERR_NETWORK_CHANGED means your operating system reported a network change while Chrome was loading the page, so Chrome dropped the request. The usual triggers are a VPN connecting or dropping, Wi-Fi switching access points, a changing IPv6 address or a virtual adapter coming and going. Reload first; if it keeps happening, find what flaps. The website is almost never at fault.

Chrome and Edge show it as “Your connection was interrupted” with the line “A network change was detected.” and the code ERR_NETWORK_CHANGED below. Inside a page, a single image, script or API call can fail the same way, and the DevTools console then shows net::ERR_NETWORK_CHANGED. Apps built on Chromium, such as Electron desktop apps, can fail with the same code.

What does ERR_NETWORK_CHANGED mean?

Chromium’s list of network errors gives code -21 a one-line description: “The network changed.” Chrome listens to the operating system’s notifications about network addresses and connections. On Windows, Chromium’s source uses the system’s address-change notification, so an address appearing or disappearing on any adapter counts, virtual adapters included. When such a notification arrives while requests are in flight, Chrome cannot know whether its open connections still lead anywhere, so it cancels them and shows this page. Its network log records the moment as a NETWORK_CHANGED event.

That is why a reload usually works: by then the network has settled and Chrome opens fresh connections. One error after waking a laptop or joining a new Wi-Fi is normal. Errors every few minutes mean something on your machine or network keeps changing.

CodeWhat Chrome sawWhere to look
ERR_NETWORK_CHANGEDThe local network changed during the requestYour device, VPN, Wi-Fi, adapters
ERR_INTERNET_DISCONNECTEDNo network connection at allCable, Wi-Fi, router
ERR_NETWORK_IO_SUSPENDEDAll network activity was suspended, typically by sleepPower settings
ERR_CONNECTION_RESETThe other side or something in between cut the connectionFirewall, proxy, the server
DNS server not respondingName lookups get no answerDNS settings, router

What changes the network under Chrome

TriggerTypical signFirst thing to try
A VPN connecting, reconnecting or droppingErrors when the VPN starts, after sleep, or every few minutes while it is onDisconnect the VPN for a test, then update or reinstall it
Wi-Fi roaming or a weak signalMesh systems and repeaters, a laptop moving between rooms, errors in burstsStay close to one access point, update the Wi-Fi driver
Wired and Wi-Fi at the same timeA docking station or USB-C hub with its own network portUnplug or switch off one of them
IPv6 addresses changingErrors after the router reconnects, or at regular intervalsCheck the router and the IPv6 privacy setting
Virtual adaptersHyper-V, WSL, Docker Desktop, VirtualBox, VMware, VPN TAP or TUN adaptersDisable the ones you do not use
A DHCP lease renewed with a new address, or a router rebootErrors at fixed times of dayA DHCP reservation, restart or update the router
A random hardware address that changesWindows' Random hardware addresses set to Change daily, rotating private addresses on phonesA fixed address for your home network

The last row is easy to miss. A device that presents a new hardware (MAC) address to the router gets a new DHCP lease and often a new IP address with it, which is a network change by any measure. For a network you trust, such as your own home, a fixed private address per network keeps the privacy benefit against other networks without the daily change.

Fixes, in order

  1. 1Reload the page

    Press F5 or Ctrl+R (Cmd+R on a Mac). If it loads and the error does not come back within the hour, it was a one-off: a VPN reconnect, waking from sleep or a router hiccup. Nothing to fix.

  2. 2Test without the VPN

    Disconnect the VPN and browse for ten minutes. If the error stops, the VPN client is the trigger: update it, or uninstall it, restart and install it fresh, which replaces its virtual adapter. Keep one VPN client installed, not two, and try its other protocol if it offers one. Options that reconnect on every network change make Chrome see a change each time.

  3. 3Disconnect adapters you do not use

    On Windows, list them in PowerShell; every adapter whose status flips between Up and Disconnected is a candidate:

    Windows · PowerShell (Disable-NetAdapter as administrator)
    Get-NetAdapter | Sort-Object Status | Format-Table Name, InterfaceDescription, Status, LinkSpeed
    
    # switch off one you do not need, by its Name from the list
    Disable-NetAdapter -Name "VirtualBox Host-Only Network" -Confirm:$false

    The same list is in ncpa.cpl (Network Connections). Leave the vEthernet adapters alone if you use WSL, Hyper-V or Docker Desktop; quit those tools when you do not need them instead. On a laptop with a dock, use either the cable or Wi-Fi, not both.

  4. 4Stabilise the Wi-Fi

    Forget the network and join it again, update the Wi-Fi driver from the laptop’s maker, and in Device Manager, under the adapter’s Power Management tab, clear Allow the computer to turn off this device to save power. With a mesh system, errors in one room only point at roaming between two access points.

  5. 5Flush the DNS cache and Chrome's sockets

    After a change, old addresses and half-dead connections can linger. Run ipconfig /flushdns on Windows (the flush DNS cache guide has the macOS and Linux commands), then open chrome://net-internals/#dns, click Clear host cache, and on chrome://net-internals/#sockets click Flush socket pools.

  6. 6Reset Winsock and TCP/IP on Windows

    If VPN or security software was uninstalled badly, its leftovers in the network stack can keep things unstable. From Command Prompt as administrator:

    Windows · Command Prompt as administrator
    ipconfig /all > %USERPROFILE%\ip-before.txt
    netsh winsock reset
    netsh int ip reset C:\resetlog.txt
    shutdown /r /t 0

    Microsoft describes netsh int ip reset as having the same effect as removing and reinstalling TCP/IP, and a restart is required. It also clears a static IP address, which matters on a server; the DNS server not responding guide explains both commands and that risk.

  7. 7Restart the router, then look at its schedule

    Restart the router and install its firmware updates. If the errors come at fixed times, check whether the router or your provider reconnects the line once a day: each reconnect can bring a new IPv6 prefix, which renumbers every device at home and counts as a change on each of them (a new public IPv4 address stays on the router and is not seen behind NAT).

If IPv6 addresses keep changing

Devices create temporary IPv6 addresses for privacy and replace them regularly, and a router that gets a new prefix from the provider renumbers every device at once. If the errors line up with those changes, fix the router side first: many routers can keep the prefix stable across reconnects. As a test on Windows, you can switch off temporary addresses, at the cost of that privacy feature:

Windows · Command Prompt as administrator
netsh interface ipv6 show privacy
netsh interface ipv6 set privacy state=disabled
# undo: netsh interface ipv6 set privacy state=enabled

Unchecking IPv6 on the adapter, a tip in many guides, is not a good fix: Microsoft advises against disabling IPv6 that way, and it hides the cause instead of finding it.

Find out what is changing

When the error keeps coming back, catch the change in the act. Each system can show you live, or log, when an address or a connection changes:

Windows · PowerShell · recent connects and disconnects
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-NetworkProfile/Operational'; Id=10000,10001} -MaxEvents 20 |
  Format-Table TimeCreated, Id, Message -AutoSize -Wrap
# 10000 = a network connected, 10001 = a network disconnected
Linux · live, stop with Ctrl+C · then NetworkManager's log
ip -ts monitor address link

# what NetworkManager did in the last hour, on desktops that use it
journalctl -u NetworkManager --since "1 hour ago" --no-pager | grep -iE 'state change|dhcp'
macOS · Terminal · live, stop with Ctrl+C
route -n monitor

Compare the timestamps with the moment the error appeared. In Chrome itself, open chrome://net-export, start logging, reproduce the error, stop, and open the file in the NetLog viewer the page links to: each NETWORK_CHANGED event marks a change Chrome reacted to, next to the request it killed.

On phones and tablets

  • Wi-Fi to mobile data and back. Features that switch to mobile data when Wi-Fi is weak (Wi-Fi Assist on iPhone, similar options on Android) change the network mid-load. Turn them off for a test, or move closer to the router.
  • VPN apps and DNS filtering apps usually install a VPN profile and behave like a desktop VPN: if the error follows them, update or remove them.

Is it ever the website or your server?

Almost never. Chrome decides on this error on the visitor’s device, from the visitor’s own network notifications, and the server sees at most a request that broke off. If visitors report it, there is nothing to change in nginx or the application. Errors that do start on the server side look different, such as ERR_CONNECTION_RESET. A few cases where your own infrastructure is involved:

  • Your own VPN server. With a self-hosted VPN, the client adapter coming and going is the change Chrome reports. WireGuard tends to cause fewer of these, because its tunnel interface stays up while the network underneath changes; our WireGuard on a VPS guide sets one up.
  • Headless Chrome on a server. Puppeteer or Playwright scripts get net::ERR_NETWORK_CHANGED when interfaces or addresses on the host change during a navigation, for example while a VPN or a container network comes up. Retry the navigation; the target site is not to blame.
  • A home server or PC that others connect to. Give it a static IP address or a DHCP reservation, so a lease renewal does not change its address.

Frequently asked

What does ERR_NETWORK_CHANGED mean?

Your operating system reported a network change, such as an IP address appearing or disappearing, while Chrome was loading the page, so Chrome cancelled the request. The cause is on your device or network, not on the website, and a reload usually works.

Why do I keep getting 'A network change was detected'?

Something on your device or network keeps changing: a VPN that reconnects, Wi-Fi roaming between access points, cable and Wi-Fi connected at the same time, virtual adapters from Hyper-V, WSL, Docker or VirtualBox, changing IPv6 addresses, or a random hardware address that changes daily. Test without the VPN first, then disable the adapters you do not use.

Does netsh winsock reset fix ERR_NETWORK_CHANGED?

Sometimes, when leftovers of uninstalled VPN or security software unsettle the network stack. Run netsh winsock reset and netsh int ip reset as administrator and restart. The second command also clears a static IP address, so do not run it on a server you reach remotely.

Related articles

All troubleshooting