How to Fix ERR_CONNECTION_TIMED_OUT in Chrome
ERR_CONNECTION_TIMED_OUT is the error Chrome displays when it sends a connection request to a server and receives no response before a built-in waiting period expires. Unlike a reset, where something actively kills the connection, a timeout is a silence: your packets left the computer, but no answer came back in time. Chrome gives up and tells you the server “took too long to respond.”
It helps to tell the three connection errors apart. ERR_CONNECTION_REFUSED is an instant, explicit “no” — a machine answered but nothing is listening. ERR_CONNECTION_RESET is an abrupt mid-stream termination. ERR_CONNECTION_TIMED_OUT is a slow nothing: the request vanished into the network and never returned. That silence points the investigation outward — toward the path between you and the server, the DNS that names it, or the server itself.
Six root causes cover almost every real-world timeout: the site is genuinely down, your local network or ISP is the bottleneck, stale DNS is sending you to the wrong IP, a dead proxy is swallowing the request, Chrome is giving up too early on a legitimately slow link, or the server itself is overloaded. The steps below address each in order, from the quickest wins to the deeper server-side checks.
Common Causes at a Glance
| Likely Trigger | Root Cause | First Action |
|---|---|---|
| Only one site fails, others load fine | Site is down or blocking you | Check a down-detector; try later |
| All sites slow or timing out | Local network or ISP problem | Test another network; restart router |
| Started after a DNS or IP change | Stale DNS records | Flush DNS; renew IP |
| VPN or proxy enabled | Dead/overloaded proxy | Disable proxy/VPN and retry |
| Slow but reachable server | Chrome gives up too early | Disable QUIC; raise client timeout |
| You own the server | Overloaded or misconfigured server | Check load, DB, firewall, limits |
Step 1: Check if the Site Is Down
Before assuming the problem is on your end, verify whether the site is down for everyone. A timeout is the natural symptom of a server that has crashed or is unreachable globally. Paste the URL into a down-detection service such as downforeveryoneorjustme.com or istheservicedown.com. You can also ask a friend on a different network to try it.
If the site is down for everyone, there is nothing to fix on your side — you simply have to wait for the operator to restore it. If it is up for others but timing out for you, move on to the next steps. Checking this first saves you from spending an hour troubleshooting your own network for a problem that originates on the server.
Step 2: Test a Different Network
If the site works for others but not for you, the next question is whether your local network is the bottleneck. The cleanest test is to switch networks entirely: enable a mobile hotspot on your phone and connect your computer to it, then reload the page. If the site loads on the hotspot but not on your usual Wi-Fi, the issue lies with your router, your ISP, or the routing path between them and the server.
Restart your router and modem first — a surprising number of timeouts vanish after a reboot clears stale NAT state. If you are on Wi-Fi, switch to Ethernet to rule out wireless interference. If the problem follows you across every network you try, including mobile data, the cause is more likely DNS, a proxy, or a regional block — covered in the next steps.
Step 3: Flush DNS and Renew Your IP
Stale or corrupted DNS entries are a classic cause of timeouts. If your computer cached an old IP for a domain — one that no longer serves the site, or that is firewalled — your requests go to a dead address and time out. Flushing the DNS cache and renewing your IP forces the system to fetch fresh records.
# Windows (run in Command Prompt)
ipconfig /flushdns
ipconfig /release
ipconfig /renew
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Linux (systemd-resolved)
sudo resolvectl flush-caches
Consider switching to a faster, more reliable public resolver while you are at it. Cloudflare (1.1.1.1) and Google (8.8.8.8) are good choices, and using DNS-over-HTTPS in Chrome (Settings > Privacy and security > Security) can bypass ISP DNS interference entirely.
Step 4: Check Proxy Settings
A proxy that points at a dead or overloaded server will silently swallow your requests until they time out — you never get a refusal, just silence. This often happens when a VPN client crashes without cleaning up its proxy entry, or when a system proxy is left configured for a network you are no longer on.
On Windows go to Settings > Network & Internet > Proxy and turn off “Use a proxy server.” On macOS check System Settings > Network > Details > Proxies. Inspect environment variables on Linux and macOS:
# Show active proxy variables
echo "http_proxy=$http_proxy"
echo "https_proxy=$https_proxy"
# Clear them for the current shell
unset http_proxy https_proxy all_proxy no_proxy
Disable VPN clients and any Chrome extension that proxies traffic. If disabling the proxy fixes the timeout, re-enable items one at a time to find the culprit, then either fix or remove it.
Step 5: Increase the Connection Timeout in the Browser
Chrome does not expose a simple “connection timeout” slider, but several settings influence how quickly it gives up. The experimental QUIC protocol, for example, can cause timeouts on networks that block UDP. Disabling it forces Chrome to fall back to TCP, which is more forgiving on restrictive networks:
# In Chrome's address bar, open:
chrome://flags/#enable-quic
# Set "Experimental QUIC protocol" to Disabled, then Relaunch.
Also try switching the Secure DNS (DNS-over-HTTPS) provider under Settings > Security, and clear Chrome's host cache at chrome://net-internals/#dns. For developers hitting an API that is legitimately slow, raise the timeout in your own code instead of relying on the browser default:
// fetch with a 60-second timeout via AbortController
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), 60000);
try {
const res = await fetch('https://api.example.com/data', { signal: controller.signal });
const json = await res.json();
console.log(json);
} catch (err) {
console.error('Request failed or timed out:', err);
} finally {
clearTimeout(timeout);
}
// axios: set a custom timeout in milliseconds
axios.get('https://api.example.com/data', { timeout: 60000 });
These changes give slow-but-reachable servers the extra seconds they need to respond.
Step 6: Check Server-Side Issues
If you own or operate the server, the timeout may originate there. A server that is overloaded, stuck on a slow database query, or hitting a resource limit will accept the TCP connection but never finish the HTTP response in time. Start by checking system load and resource usage:
# Linux: overall load and top processes
uptime
top -b -n 1 | head -20
# Memory and disk
free -h
df -h
# Web server error logs (Nginx / Apache)
sudo tail -n 100 /var/log/nginx/error.log
sudo tail -n 100 /var/log/apache2/error.log
Look for common culprits: a database query that takes seconds, a PHP/Node worker pool that is exhausted, a reverse proxy whose upstream timeout is shorter than the backend needs, or a firewall rate-limiting rule that drops packets under load. Increase the relevant timeouts (for example, Nginx's proxy_read_timeout) only after you have addressed the underlying slowness — otherwise you are just masking a deeper performance problem.
Diagnostic Tools: ping, traceroute, and curl
These three tools pinpoint where along the path the timeout occurs. Run them in order and read the output to narrow down the fault.
# 1. ping — basic reachability and latency
ping -n 20 example.com # Windows
ping -c 20 example.com # macOS / Linux
# 2. traceroute — find the hop where packets stop
tracert example.com # Windows
traceroute example.com # macOS / Linux
# mtr gives a live, repeating view (install separately)
mtr --report example.com
# 3. curl — measure exactly how long each phase takes
curl -o /dev/null -s -w "dns:%{time_namelookup}s connect:%{time_connect}s ttfb:%{time_starttime}s total:%{time_total}s\n" https://example.com
# 4. DNS resolution check
nslookup example.com # Windows
dig example.com # macOS / Linux
How to interpret the results: if ping fails entirely, the host is unreachable — check DNS or a total outage. If traceroute stops at a specific hop (often your ISP or the destination's edge), the block is there. The curl timing breakdown is the most precise: a large connect time points to a network or firewall problem, while a large ttfb (time to first byte) with a fast connect points to a slow server.
Quick Reference: Causes and Fixes
| Symptom | Root Cause | Fix |
|---|---|---|
| One site times out, others fine, down for everyone | Server is down | Wait for recovery; check status page |
| All sites time out on one network | Local network or ISP | Restart router; test another network |
| Timeout after DNS or IP change | Stale DNS records | Flush DNS; renew IP; switch resolver |
| Timeout with VPN/proxy on | Dead or overloaded proxy | Disable proxy/VPN; clear proxy env vars |
| Reachable but Chrome gives up early | QUIC or short browser timeout | Disable QUIC; raise client timeout |
| Slow TTFB on your own server | Overloaded backend / DB | Check logs, load, queries, limits |
Frequently Asked Questions
How long is Chrome's connection timeout?
Chrome does not publish a single fixed timeout, and the value varies by connection phase and protocol. In practice, users see ERR_CONNECTION_TIMED_OUT after roughly 20 to 30 seconds of no response for a connection attempt. There is no supported setting to change this directly; the practical workaround is to fix the underlying slowness or, for your own API calls, set an explicit timeout in your code.
Is ERR_CONNECTION_TIMED_OUT my fault or the server's?
It can be either. If only one site is affected and it is down for everyone, the server is at fault. If all sites are slow or timing out, the problem is usually your network, ISP, or DNS. Testing another network (Step 2) and checking a down-detector (Step 1) will quickly tell you which side owns the problem.
Why does only one website time out while others load instantly?
When a single site is the only one timing out, the cause is usually server-side downtime, a regional block, or DNS returning a bad IP for that domain specifically. Flush your DNS, try a public resolver, and test over a VPN or mobile network — if it loads via VPN, your ISP or region is likely blocking or misrouting traffic to that host.
Can a VPN cause ERR_CONNECTION_TIMED_OUT?
Yes. A VPN that routes you through an overloaded or distant server adds latency and can cause requests to exceed the timeout window. A VPN that has disconnected but left a stale proxy entry is even more common — your traffic goes nowhere and times out. Disable the VPN and clear any proxy settings to test whether it is the cause.
Conclusion
ERR_CONNECTION_TIMED_OUT is fundamentally a silence: your request left but no answer returned in time. That silence usually comes from one of six places — a down site, a slow local network or ISP, stale DNS, a dead proxy, Chrome giving up too early, or an overloaded server. Start with the quick wins: confirm the site is not globally down (Step 1) and test another network (Step 2). Most timeouts are resolved there. When they are not, the diagnostic tools — especially curl's timing breakdown — will tell you exactly where the silence begins, and the remaining steps give you the fix for that specific failure point.