Guides
7 min readUpdatedThis site can't be reached: what each Chrome error code means
Quick answer
"This site can't be reached" is a page Chrome draws itself when no HTTP response arrived: the name did not resolve, or the connection was refused, timed out or reset before the server said anything. The grey code under the message, such as ERR_CONNECTION_REFUSED or DNS_PROBE_FINISHED_NXDOMAIN, names the layer that failed. Read it first, run the one test that matches it, then decide whether the fix belongs to you or to the site owner.
01What does "This site can't be reached" mean?
Chrome shows this page when no HTTP response arrived: it could not resolve the name, could not open a connection, or lost the connection before the server answered. No web server, CDN or application wrote the page, so the site's own error pages cannot explain it.
Chromium's source shows why the heading says so little: it is shared by ERR_NAME_NOT_RESOLVED, ERR_CONNECTION_REFUSED, ERR_CONNECTION_TIMED_OUT, ERR_CONNECTION_RESET, ERR_CONNECTION_CLOSED, ERR_ADDRESS_UNREACHABLE and DNS probe results such as DNS_PROBE_FINISHED_NXDOMAIN. The grey code under the message is the real diagnosis. A failed TLS handshake gets its own heading, "This site can't provide a secure connection", a certificate that fails verification shows "Your connection is not private", and a redirect loop or an empty response shows "This page isn't working".
02Which Chrome error code do you have?
Find the code under the message. The middle columns say which step of loading a page failed; the last column is the test that confirms it. Chrome's wording is quoted from its error-page strings.
| Code under the message | Chrome says | Layer that failed | Usual cause | First test |
|---|---|---|---|---|
| DNS_PROBE_FINISHED_NXDOMAIN | Check if there is a typo in ... | DNS | The name does not exist: typo, expired domain, missing record | nslookup the name; NXDOMAIN confirms it |
| ERR_NAME_NOT_RESOLVED | ...'s server IP address could not be found | DNS | No address came back: missing record, failing resolver, local blocklist | Compare two resolvers, or the DNS lookup tool |
| ERR_INTERNET_DISCONNECTED | No internet | Your network | Wi-Fi, cable, router or captive portal | Open any other site |
| ERR_CONNECTION_REFUSED | ... refused to connect | TCP | Nothing listens on the port, or a firewall rejects | Test-NetConnection or curl -v on port 443 |
| ERR_CONNECTION_TIMED_OUT | ... took too long to respond | TCP or network | Packets silently dropped: firewall, wrong address, overloaded server | curl --connect-timeout, then mtr |
| ERR_ADDRESS_UNREACHABLE | ... is unreachable | Routing | No route from your network, for example a broken IPv6 or VPN route | Retry on another network |
| ERR_CONNECTION_RESET | The connection was reset | TCP or TLS | A reset from security software, a VPN, a middlebox or the server | Another network, and curl |
| ERR_EMPTY_RESPONSE | didn't send any data | Server | The server or proxy closed the socket without answering | curl -v: Empty reply from server |
| ERR_SSL_PROTOCOL_ERROR | This site can't provide a secure connection | TLS | The handshake broke, often plain HTTP on port 443 | openssl s_client; see the ERR_SSL_PROTOCOL_ERROR guide |
| ERR_TOO_MANY_REDIRECTS | redirected you too many times | HTTP | A redirect loop between proxy, server and CMS | curl -sIL; see the redirect loop guide |
03Is the problem on your side or the website's?
Test from a second network before changing any setting: open the address on a phone using mobile data. If the site fails there too, the problem is the site's, and nothing on your computer will fix it. If it loads, the cause is your device or your network.
- Fails on every network and device: the site, its DNS or its hosting. Check its status page and report it.
- Fails on one network only: the router, the provider's resolver, a company filter or a VPN.
- Fails on one device only: its DNS cache, hosts file, proxy settings, extensions or security software.
04How to fix "This site can't be reached" as a visitor
Work from the cheapest step to the most disruptive and stop as soon as the page loads. In PowerShell, Test-NetConnection reports TcpTestSucceeded as False when the name resolves but the port does not answer, which separates a DNS fault from a connection fault.
- Check the address for typos, and try it with and without www.
- Reload once, then try a private window, which disables most extensions.
- If no site loads at all, restart the router and modem.
- Turn off the VPN or proxy, or switch from Wi-Fi to mobile data.
- Clear Chrome's DNS cache: open chrome://net-internals/#dns and press Clear host cache.
- Flush the operating system's DNS cache with the commands below.
- Try another DNS resolver, in Chrome's secure DNS setting or the network settings.
- If only HTTPS sites fail, pause the security software's HTTPS scanning and retry.
# Windows (Command Prompt or PowerShell): flush the DNS cache
ipconfig /flushdns
# Windows PowerShell: does the name resolve, and does port 443 answer?
Resolve-DnsName example.com
Test-NetConnection example.com -Port 443
# macOS (Terminal): flush the DNS cache
sudo killall -HUP mDNSResponder05How site owners can test each layer
Test from outside your own network, one layer at a time: DNS, the TCP connection, TLS, then HTTP. The first layer that fails is where the fix belongs. The curl timing line covers all four in one request.
Behind a CDN or reverse proxy, also run the last command. It connects straight to the origin with the real hostname, which separates an origin fault from an edge or DNS fault.
# DNS: does the name resolve on two public resolvers?
nslookup example.com 1.1.1.1
dig +short example.com A @8.8.8.8
# DNS, TCP, TLS and first byte in one request
curl -sS -o /dev/null -w 'dns %{time_namelookup}s connect %{time_connect}s tls %{time_appconnect}s first byte %{time_starttransfer}s http %{http_code}\n' https://example.com/
# TLS on its own, with SNI and a hostname check
openssl s_client -connect example.com:443 -servername example.com -verify_hostname example.com -brief </dev/null
# the origin directly, bypassing the CDN
curl -sv -o /dev/null --resolve example.com:443:203.0.113.10 https://example.com/06What each failure looks like in curl
Every row was reproduced on Debian 12 against reserved test names and local test listeners. The exit code is what scripts and monitoring checks see. Chrome and curl use different TLS libraries, so the Chrome column is the nearest match rather than an exact one.
| curl prints | Exit code | Nearest Chrome code |
|---|---|---|
| Could not resolve host: nonexistent.invalid | 6 | ERR_NAME_NOT_RESOLVED or DNS_PROBE_FINISHED_NXDOMAIN |
| connect to ... failed: Connection refused (shown with -v) | 7 | ERR_CONNECTION_REFUSED |
| Failed to connect ... Timeout was reached | 28 | ERR_CONNECTION_TIMED_OUT |
| Recv failure: Connection reset by peer | 56, or 35 during the TLS handshake | ERR_CONNECTION_RESET |
| Empty reply from server | 52 | ERR_EMPTY_RESPONSE |
| SSL routines::wrong version number | 35 | ERR_SSL_PROTOCOL_ERROR |
| Maximum (N) redirects followed | 47 | ERR_TOO_MANY_REDIRECTS |
07Common server-side causes and how to fix them
When every visitor sees a connection error, the cause is usually a recent change: a DNS edit, a firewall rule, a service that did not come back after a restart, or a sudden surge of traffic.
- DNS: a record lost in a migration, nameservers changed at the registrar before the zone was set up at the new DNS host, an expired domain, or a broken DNSSEC signature.
- Refused: the service is stopped, listens only on 127.0.0.1, or a firewall rejects port 443. Check with ss -ltnp on the server; the guide to ports explains its output.
- Timed out: a firewall or cloud security group drops traffic, the A record points at an unused address, or the server is overloaded. The firewall configuration guide covers the rules.
- Sudden timeouts for everyone with no change made can be an attack: a SYN flood fills the connection queue. The signs of a DDoS attack help confirm it.
- Resets only in recent Chrome: some servers and middleboxes cannot read a TLS ClientHello split over several packets, which post-quantum key exchange makes common; tldr.fail documents the bug.
Questions
Frequently asked questions
Sources
Sources and verification
Every curl message, exit code and DNS answer in this guide was reproduced with curl 7.88.1, dig and nslookup 9.18 and OpenSSL 3.0.22 on Debian 12 against example.com, reserved test names and local test listeners, October 2026. The Windows and macOS commands follow Microsoft's and Apple's documentation and were not run.
- 01net_error_list.h: Chromium network error codes · Chromium
- 02localized_error.cc: which error page each code gets · Chromium
- 03error_page_strings.grdp: error page headings and messages · Chromium
- 04net_error_info.h: DNS probe results · Chromium
- 05Get help with common error messages in Chrome · Google Chrome Help
- 06curl man page: --connect-timeout, --max-redirs and exit codes · curl
- 07Test-NetConnection · Microsoft Learn
- 08ipconfig · Microsoft Learn
- 09Reset the DNS cache in OS X · Apple Support
- 10tldr.fail: servers that fail on a large TLS ClientHello · tldr.fail
Last updated