Geonode logo
Network errors

How to Fix ERR_CONNECTION_CLOSED in Chrome

See whether the close came during TLS setup, after your request or in a proxy tunnel, then fix that side.

Updated

TL;DR

ERR_CONNECTION_CLOSED means the site, a proxy or a program in between closed Chrome's connection normally before the page arrived. The quickest fix is the proxy and firewall check that Chrome's error page suggests for this code, followed by a reload.

How Chrome and its tools report the close

Chrome's page names the site you asked for, even when a proxy did the closing.

WhereWhat you see
Chrome error pageThis site can't be reached. www.example.com unexpectedly closed the connection. ERR_CONNECTION_CLOSED
Chrome DevTools, Network panel Status column(failed) net::ERR_CONNECTION_CLOSED
Chrome console, failed fetch() requestFailed to load resource: net::ERR_CONNECTION_CLOSED
fetch() in the page's JavaScriptTypeError: Failed to fetch
Puppeteer page.goto()net::ERR_CONNECTION_CLOSED at https://www.example.com
Playwright page.goto()page.goto: net::ERR_CONNECTION_CLOSED at https://www.example.com/

Why this happens

The other end said goodbye the normal way, but while Chrome still expected data.

Chrome got a TCP FIN, the normal end-of-data signal, during TLS setup for an HTTPS page or while awaiting an HTTP/2 server's answer. The site's server can send it, and so can a proxy on the way.

Diagnose your ERR_CONNECTION_CLOSED first

Two checks need no terminal; the curl checks show at which step the connection closed.

  • Try the page from a second device on this Wi-Fi network; if it opens there, something on this computer ends the connection.

  • Open two other HTTPS sites; if they fail with the same code, this device or network is the cause, not that one site.

  • Run curl -v with the https:// address; if the output stops right after 'Client hello', the connection closed during TLS setup.

  • If curl -v fails only after 'Request completely sent off', the site's server read your request and then dropped the connection.

  • Behind a proxy, add -x and its address; 'CONNECT tunnel established' followed by a failure means the tunnel closed after the proxy opened it.

Solutions ranked by effectiveness

Fix your computer's settings first, then the proxy route; a NetLog helps when neither is the cause.

  1. Most common fix

    Follow Chrome's proxy and firewall suggestions

    Applies when only this computer fails. These are the checks Chrome's error page lists for this code once you click Details.

    1. If you never chose a proxy, turn off every proxy in your system's network settings.

    2. In your firewall or antivirus settings, let Chrome access the network.

    3. If Chrome already has that permission, remove the entry, add it again, then reload.

  2. Check next

    Ask your proxy provider to check the tunnel

    Applies when you use a proxy on purpose and the curl check shows its tunnel closing. Its operator can check whether the proxy or the site closed first.

    1. Save the curl -v output, with the time and the site's address.

    2. Send it to your proxy provider, or to IT for a work proxy.

    3. If the site itself refuses the proxy's traffic, only its owner can change that.

  3. If nothing else works

    Record a NetLog and share it

    Applies when the checks above find nothing. A NetLog stores Chrome's network events and proxy settings for the failing load, ready for someone else to read.

    1. Open chrome://net-export and keep the default Strip private information log mode.

    2. Click Start Logging to Disk, then reproduce the error in a second tab.

    3. Click Stop Logging and send the file to the site's owner or your IT team.

Stop the ERR_CONNECTION_CLOSED from coming back

Habits for Chrome users, server owners and scripts, so closes get rarer and easier to trace.

  1. Have HTTP/2 servers you run send a graceful GOAWAY before closing; Chrome then resends requests the server never processed.

  2. In Puppeteer, log request.failure().errorText for failed requests, so closes, resets and empty responses are counted apart.

  3. Set Chrome's proxy in one place; a policy, a launch flag, an extension and the system can each supply one.

Check the proxy on its ownGeonode's free proxy checker lists each proxy's status, protocol and latency.
Try residential proxies

Related errors

Learn more

FAQ

It is Chrome's network error -100: a clean, orderly close of the connection arrived at a moment when Chrome was still waiting for data, so nothing could be shown.

Both follow a normal close. ERR_EMPTY_RESPONSE, under "This page isn't working", means the server read the request and sent nothing back over HTTP/1.1; a close during the TLS handshake, or the same silence over HTTP/2, shows ERR_CONNECTION_CLOSED.

No. A reset is an abrupt RST packet; this error follows a normal FIN. Behind a proxy, Chrome sees only how the proxy ends its side; in our local test, a proxy turned a site's reset into a close.

Yes. If the proxy accepts CONNECT and the connection then ends before the site's certificate arrives, Chrome shows this code. A proxy that hangs up before answering CONNECT gives ERR_EMPTY_RESPONSE; one Chrome cannot reach or finish TLS with, ERR_PROXY_CONNECTION_FAILED.

No. A close is a signal the other side sends; a timeout means nothing came back in time, which Chrome reports as ERR_CONNECTION_TIMED_OUT for a connection attempt or ERR_TIMED_OUT for other steps.

Network Error Logging lets your site ask Chrome to report failed requests to an endpoint you choose, and this error arrives as type tcp.closed. Chrome must first receive that policy in an earlier response from your site.

Talk it through on Discord

Geonode's Discord community shares guides and tips, with support from the Geonode team.