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)

  1. DNS — if this fails you usually see ERR_NAME_NOT_RESOLVED / NXDOMAIN instead.
  2. TCP connect — SYN sent; no SYN-ACK before the OS/browser timeout → ERR_CONNECTION_TIMED_OUT.
  3. TLS / HTTP — only reached after TCP succeeds; timeouts here look different (stall after connect, then maybe 504 from a proxy).

vs similar errors

ErrorMeans
ERR_CONNECTION_TIMED_OUTTCP connect got no answer in time (drop / black hole)
ECONNREFUSED / connection refusedHost reachable; nothing listening (or firewall reject)
ETIMEDOUT / connect ETIMEDOUTSame idea in Node (and many OSes) — connect() timed out
ERR_NAME_NOT_RESOLVEDDNS never gave an address
TypeError: Failed to fetchFetch API umbrella (CORS, offline, TLS, connection…)
502 / 503 / 504You did speak HTTP to someone — a gateway answered with a status

Frequent real causes

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

  1. Confirm the hostname resolves to the IP you expect (dig / nslookup).
  2. From a second network, retry — isolates local firewall/captive portal/VPN.
  3. On the server: process listening on 0.0.0.0:443? security group / ufw allow? (dropping → timeout; rejecting → refused).
  4. Check IPv6: AAAA record to an unroutable address causes long timeouts on some clients.
  5. 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 .

Try it

Related guides

Newest guides