ERR_CONNECTION_REFUSED: What It Means and How to Fix It

Appears on: Chrome, Edge. ERR_CONNECTION_REFUSED means the target server is reachable but actively rejected your browser's connection. The fix depends on whether the site is legitimately down or a local proxy/firewall is blocking you.

What Connection Refused Means Technically

ERR_CONNECTION_REFUSED means your browser sent a TCP SYN packet to the destination IP and port, and received a TCP RST (reset) back immediately. That RST is an active rejection — the destination host is reachable at the IP level, but nothing is listening on that port, or a firewall on the host is configured to reject (not just drop) connections to it.

This is a precise and immediate response, which distinguishes it from ERR_CONNECTION_TIMED_OUT. A timeout means packets are being silently dropped — by a firewall set to DROP rather than REJECT, by a router that cannot reach the host, or by a host that is completely offline. A refused connection means the host is alive and actively saying no.

Refused vs Timed Out: Key Distinction

ErrorTCP BehaviorWhat It MeansTypical Cause
ERR_CONNECTION_REFUSEDSYN → RST (immediate)Host alive, port closed or firewall REJECTService not running, wrong port, firewall rule
ERR_CONNECTION_TIMED_OUTSYN → no responsePackets dropped silentlyFirewall DROP rule, host offline, routing failure

Most Likely Causes (Ranked)

  1. The web server process on the remote host has crashed or is not running
  2. The service is running on a different port than expected (e.g., server moved from port 80 to 8080)
  3. A firewall on the server is set to REJECT connections to the web port
  4. The server's IP address changed and DNS is still pointing to the old IP
  5. A local firewall or antivirus is blocking outbound connections to the destination
  6. A proxy server is misconfigured or offline
  7. The site has blocked your specific IP address
  8. localhost refused — you are trying to reach a local development server that is not running

Diagnosis Steps

Check if the server is up

Visit downdetector.com or isitdownrightnow.com and search for the site. Also check the site's official status page if it has one (e.g., status.github.com, status.slack.com). If many users are reporting the same problem, the server itself is the issue — stop local troubleshooting and wait.

Test from another network

Switch to your phone's cellular data and try loading the site. If it loads on cellular but not on your home connection, your ISP, router, or local firewall is blocking the connection. If it fails on cellular too, the server is down or has blocked a broader range of IPs.

Test the port directly

For advanced diagnosis, use telnet hostname 443 or nc -zv hostname 443 to test whether port 443 is open on the server. If you get "Connection refused" immediately, port 443 is closed or firewalled on the server side. If the command hangs with no output, the connection is timing out — which suggests filtering rather than a down service. On Windows, enable Telnet via "Turn Windows features on or off" or use PowerShell: Test-NetConnection -ComputerName hostname -Port 443.

Check if DNS is resolving to the correct IP

Run nslookup site.com and note the IP address returned. If the site recently migrated servers, DNS may still point to the old IP where no web server is running. Try flushing your DNS cache (ipconfig /flushdns on Windows, sudo dscacheutil -flushcache on macOS) and retest. If you have access to another DNS resolver (8.8.8.8), query it too: nslookup site.com 8.8.8.8 — compare the IPs to verify you are not getting a stale cached record.

Check proxy and extension settings

Open an incognito window and try the site — incognito disables extensions by default. If incognito works, a browser extension (ad blocker, privacy tool, firewall extension) is blocking the site. Disable extensions one at a time to find the culprit. Also verify no proxy is set at chrome://settings/system.

Localhost Refused vs Remote Refused

If the URL starts with localhost, 127.0.0.1, or a private IP (192.168.x.x, 10.x.x.x), the refused connection means a local application or development server is not running on that port. Start the application server (npm start, python manage.py runserver, docker compose up, etc.) and confirm it is listening on the expected port. Run netstat -ano | findstr :3000 (Windows) or ss -tlnp | grep 3000 (Linux/macOS) to see what is actually listening on that port number.

Still Not Fixed? Rule Out Your Connection

Run a speed test — if download, upload, and ping come back normal, the refused connection is specific to this site rather than your network. If the speed test also fails, troubleshoot your connection first.

Frequently Asked Questions

Why do I get ERR_CONNECTION_REFUSED on one site only?

Either that specific site's server is down, the site has blocked your IP, your ISP is blocking that particular destination, or DNS is resolving to the wrong IP. Testing from cellular data quickly identifies whether the block is on your local network or global.

What is the difference between ERR_CONNECTION_REFUSED and ERR_CONNECTION_TIMED_OUT?

Refused is fast and definitive — the host is reachable but the port is closed or rejected. Timed out is slow (usually 30+ seconds) — packets are being dropped silently, suggesting the host is offline, unreachable, or behind a DROP firewall rule. If the error appears instantly, it is a refusal; if the browser spins for a long time before showing the error, it is a timeout.

Does ERR_CONNECTION_REFUSED affect my speed test?

Only if the speed test server itself is refused. If SpeedTestHQ loads and runs fine, your internet connection is healthy and the refused connection is specific to the other site or service you were trying to reach.

Related Guides

More From This Section