errors.x7.al › Browser & network

ERR_CONNECTION_RESET

ERR_CONNECTION_RESET is a browser message that means the connection to a website was closed abruptly after it had already started. Unlike a refusal, where nothing ever connects, here the connection was accepted and then dropped mid-conversation. Chromium browsers (Chrome, Edge, Brave, Opera) show the exact string ERR_CONNECTION_RESET, while Firefox reports the same event as “The connection was reset”.

Advertisement

What it means

Every web request runs over a TCP connection. To close one, a machine sends a packet with the RST (reset) flag set. The browser reads that as “this conversation is over, right now” and shows ERR_CONNECTION_RESET. Crucially, the reset happens after the handshake, so your computer did reach something — it was the data exchange that was torn down.

That detail matters because it tells you the network path itself works. A DNS failure or a dead route would give a different message such as ERR_NAME_NOT_RESOLVED or ERR_CONNECTION_TIMED_OUT. Here the packets moved; something decided to end the session. The reset can come from the website's own server, from a load balancer that threw away a stale keep-alive connection, or from anything sitting between you and the server: a corporate proxy, a VPN, a firewall, or antivirus software that inspects encrypted traffic.

It is often intermittent. A page may load once and fail the next time, which points away from a hard block and towards a device that only interferes with certain packets — the classic sign of an MTU mismatch or of a scanner that mishandles larger TLS records.

Common causes

  • A proxy, VPN or corporate content filter is terminating the connection on purpose.
  • An MTU or MSS mismatch (common with VPN and PPPoE links) causes bigger packets to be dropped and reset.
  • Antivirus or firewall software that scans HTTPS traffic interferes with the TLS session.
  • The server itself restarted, crashed a worker, or closed an idle keep-alive connection at the exact moment you sent a request.
  • Corrupt local browser state — a broken extension, stale sockets, or a half-broken HTTP/2 or QUIC session.

How to fix it

  1. Reload and retry. Press Ctrl+Shift+R to bypass the cache. If it works now and then, the problem is intermittent and the steps below usually pin it down.
  2. Rule out the browser. Open the site in a private window, or in a second browser. In Chromium, visit chrome://extensions and disable extensions, especially ad blockers and security add-ons. If the private window works, an extension is the culprit.
  3. Disconnect VPN and proxy. Turn off any VPN and set a direct connection. On Windows you can clear a stale proxy from an elevated prompt:
    netsh winhttp reset proxy
    ipconfig /flushdns
  4. Pause HTTPS-scanning security software. Temporarily disable your antivirus's “HTTPS scanning” or “web shield” feature, reconnect, and test. Remember to switch it back on afterwards.
  5. Test and adjust MTU / reset the network stack. Find the largest packet that gets through, then set the interface MTU a little lower:
    ping -f -l 1472 8.8.8.8
    netsh interface ipv4 set subinterface "Ethernet" mtu=1400 store=persistent
    If settings appear broken, reset the stack with netsh int ip reset and restart. On macOS, run sudo ifconfig en0 mtu 1400 for a quick test.
Advertisement

How to prevent it

Keep your browser and network drivers current, and avoid stacking multiple traffic-shaping tools at once. A VPN, a third-party firewall and an antivirus web filter all rewriting the same packets is the most common recipe for random resets. If you must use a VPN, pick one that does not force an unusually large MTU, and stick to networks you trust.

On the server side, if the resets happen for many visitors, the fix is not in the browser at all. A load balancer or reverse proxy with an idle timeout shorter than the client's keep-alive window will reset connections that were quietly waiting, and an overloaded worker will drop others. Checking the server logs for resets, and matching the proxy's keep-alive timeout to the application's, removes a whole class of these errors before they reach your users.

Advertisement