net::ERR_CONNECTION_TIMED_OUT (Chrome connection timed out)
The browser tried to open a TCP connection and nobody answered in time. DNS may have worked — the handshake never finished.
How it shows up
net::ERR_CONNECTION_TIMED_OUT
This site can't be reached
example.com took too long to respond
DevTools Network shows the request failed; often no HTTP status line at all — you never got far enough for 502/503/504.
What failed (layer by layer)
- DNS — if this fails you usually see ERR_NAME_NOT_RESOLVED / NXDOMAIN instead.
- TCP connect — SYN sent; no SYN-ACK before the OS/browser timeout → ERR_CONNECTION_TIMED_OUT.
- TLS / HTTP — only reached after TCP succeeds; timeouts here look different (stall after connect, then maybe 504 from a proxy).
vs similar errors
| Error | Means |
|---|---|
| ERR_CONNECTION_TIMED_OUT | TCP connect got no answer in time (drop / black hole) |
| ECONNREFUSED / connection refused | Host reachable; nothing listening (or firewall reject) |
| ETIMEDOUT / connect ETIMEDOUT | Same idea in Node (and many OSes) — connect() timed out |
| ERR_NAME_NOT_RESOLVED | DNS never gave an address |
| TypeError: Failed to fetch | Fetch API umbrella (CORS, offline, TLS, connection…) |
| 502 / 503 / 504 | You did speak HTTP to someone — a gateway answered with a status |
Frequent real causes
- Server down or wrong IP — DNS points at a dead machine; cloud instance stopped.
- Firewall / security group — port 443/80 not open; packets dropped (timeout) rather than rejected (refused).
- Wrong port — https://host:8443 when nothing listens; or HTTP vs HTTPS mismatch that hangs on some middleboxes.
- Client network — captive portal Wi-Fi, corporate egress filter, broken VPN, IPv6 black hole (try forcing IPv4).
- Blocking extension / local filter — rarer for pure connect timeout; more often ERR_BLOCKED_BY_CLIENT.
Diagnose with curl -v
curl -v --connect-timeout 10 https://example.com/
# Watch: DNS resolve → Trying IP:port → Connected to … OR hangs until timeout
curl -4 -v --connect-timeout 10 https://example.com/ # force IPv4
curl -v --connect-timeout 10 https://example.com:443/
# From another network / phone tether to see if it is only your LAN
If curl hangs at “Trying x.x.x.x…” then times out, you have the same class of failure as Chrome’s ERR_CONNECTION_TIMED_OUT. If you get “Connection refused”, fix the listening process/port instead.
Fix checklist
- Confirm the hostname resolves to the IP you expect (
dig/nslookup). - From a second network, retry — isolates local firewall/captive portal/VPN.
- On the server: process listening on 0.0.0.0:443? security group / ufw allow? (dropping → timeout; rejecting → refused).
- Check IPv6: AAAA record to an unroutable address causes long timeouts on some clients.
- For apps: surface a clear offline/timeout UI; retry idempotent GETs with backoff (same spirit as Node ETIMEDOUT).
Related
ETIMEDOUT / connect ETIMEDOUT · localhost refused to connect · ERR_NAME_NOT_RESOLVED · TypeError: Failed to fetch · HTTP 504 Gateway Timeout · HTTP 503 Service Unavailable · 502 Bad Gateway · getaddrinfo ENOTFOUND · Anvil HTTP status
Questions
What does net::ERR_CONNECTION_TIMED_OUT mean?
Chrome timed out while trying to open a TCP connection. The server (or something on the path) never completed the handshake.
How is it different from ERR_NAME_NOT_RESOLVED?
NAME_NOT_RESOLVED is DNS failure. CONNECTION_TIMED_OUT means DNS (usually) worked but TCP connect got no answer.
How is it different from connection refused?
Refused means the host actively rejected the port (nothing listening or REJECT rule). Timed out usually means packets were dropped or never routed.
Is this the same as Node ETIMEDOUT?
Same family: connect timed out. Chrome labels it net::ERR_CONNECTION_TIMED_OUT; Node often says connect ETIMEDOUT.
How do I fix ERR_CONNECTION_TIMED_OUT?
Verify DNS IP, try another network, open the firewall/security group, confirm the process listens on the right port, and check for IPv6 black holes.
Why do I get Failed to fetch in JavaScript instead?
fetch() wraps many network failures in TypeError: Failed to fetch. Check DevTools for the underlying net:: error.
Published .