ERR_CONNECTION_REFUSED in Chrome: what it means and how to fix it

ERR_CONNECTION_REFUSED means the computer you tried to reach answered, but rejected the connection instead of accepting it. If many sites fail, check your proxy, VPN, security software and browser. If only one site or your own server fails, the service is probably not running or not listening on that port.

Applies to:Google ChromeMicrosoft Edge and other Chromium browsers
On this page

What it means

ERR_CONNECTION_REFUSED is Chromium network error -102, defined as "a connection attempt was refused." In practice your browser asked to open a connection, the other machine replied, and the reply was a TCP reset (RST) instead of an accepted handshake. That differs from a timeout, where nothing answers at all.

Chrome's own wording is vague: the page didn't let Chrome connect, or the page is blocked. The cause can be on your side or the server's side. A quick way to tell: if only one site or port fails, look at the server. If many sites fail at once, look at your network, proxy, VPN or security software.

Symptoms and causes

You are likely dealing with this problem if:

  • Chrome shows an error page that names ERR_CONNECTION_REFUSED.
  • Only one site or one port fails while other sites load normally (usually a server-side cause).
  • Many sites fail at the same time (usually a proxy, VPN, security software or network cause).
  • A local development site such as localhost does not open (usually the app is not running or uses another port).

The usual causes, most common first:

Nothing is listening on that address and port
The service is stopped, has crashed, or you are using the wrong port. This is the most common cause, especially on localhost and dev servers.
The service listens on 127.0.0.1 only
A program bound to the loopback address accepts connections from its own machine but refuses everyone else.
A firewall rejects the connection
A rule that actively rejects traffic with a TCP reset (for example an iptables REJECT with tcp-reset) produces this error. It can be on the server or in security software on your device.
Proxy or VPN problems on your device
A proxy setting that points to something offline or blocked, or a misbehaving VPN, may cause refusals for many sites.
Stale or wrong DNS
A cached or incorrect DNS answer may send you to the wrong IP address or port.
Extensions, malware or a Chrome conflict
A bad extension, malware or a browser problem can interfere with connections.
Service could not start on a privileged port
If a service cannot bind a port below 1024 without permission, it never opens the port, so connections to it are refused.

How to fix it

Work through these in order. They start with the quickest, safest checks and move to deeper repairs; stop as soon as the problem is gone.

1.Check the address and your connection

Easy

Typos and a flaky connection are the cheapest things to rule out, and they tell you whether the problem is one site or many.

  1. Check the URL for typos, including the port number, and reload the page.
  2. Try a few other sites to see whether only one fails or all of them do.
  3. Restart your modem and router. On public Wi-Fi, sign in through the network's login page.
  4. Update Chrome and restart it.

2.Test in Incognito and without extensions

Easy

If the site loads in Incognito, an extension or stored browser data is the likely cause.

  1. Open an Incognito window and load the same address.
  2. If it works, open Extensions from the Chrome menu, turn all extensions off, then turn them back on one at a time to find the culprit.
  3. Clear browsing data (history, cookies and cache) from the Chrome menu under Delete browsing data.

3.Check proxy and VPN settings

Easy

A proxy that is offline or misconfigured may make many sites fail at once.

  1. Turn off your VPN temporarily and reload the page.
  2. On Windows, open Internet Options > Connections > LAN settings and untick Use a proxy server for your LAN.
  3. On a Mac, open the system proxy settings and untick all proxy protocols.

4.Check that security software is not blocking Chrome

ModerateChanges settings

Firewalls and antivirus can block connections that they consider unsafe.

Before you start: Do not leave protection off. If you pause third-party antivirus only to test, turn it back on right after.

  1. On Windows, open Windows Security > Firewall & network protection and confirm Chrome is not blocked.
  2. If you use third-party security software, check its block list for Chrome or the site.

5.Flush DNS and try another DNS server

Moderate

A stale DNS entry may send Chrome to the wrong address or port.

  1. On Windows, open Command Prompt and flush the DNS cache.
    Command Prompt
    ipconfig /flushdns
  2. If that does not help, set your DNS servers to 8.8.8.8 and 8.8.4.4, or to 1.1.1.1 and 1.0.0.1, in your network adapter settings.

6.Reset Chrome settings

ModerateChanges settings

A last browser-side step if everything above failed and other browsers load the site fine.

Before you start: Resetting disables extensions and clears temporary data. Your bookmarks and saved passwords are kept, but sign-in sessions on some sites may be lost. Reinstall only as a final option.

  1. Open Chrome Settings > Reset settings and choose to restore settings to their original defaults.
  2. Reload the page.

7.If it is your own server or localhost: check the listener and firewall

AdvancedChanges settings

When one port refuses and the browser is fine, the service is usually down, bound to the wrong address, or rejected by a firewall rule.

Before you start: Changing firewall rules or bind addresses can expose a service to the network. Note the existing rules before you edit them and only open what you need. Commands below are for Linux.

  1. See what is listening on the port (replace 8080).
    Terminalneeds sudo / root
    ss -tlnp | grep ":8080"
  2. Check the service and start it if it is stopped (replace myapp).
    Terminalneeds sudo / root
    systemctl status myapp
    systemctl start myapp
  3. If the listener shows 127.0.0.1, change the application's bind address to 0.0.0.0 or the correct interface, then restart it.
  4. Look for a rule that rejects the port with a TCP reset, and remove or adjust it.
    Terminalneeds sudo / root
    iptables -L INPUT -n --line-numbers | grep 8080
  5. Test from the client machine to confirm the result.
    Terminal
    curl http://HOST:8080
    nc -zv HOST 8080
  6. If the service fails to start because it wants a port below 1024, avoid running it as root, which is discouraged. Use a port above 1024 (optionally behind a reverse proxy on the standard port), or give the service only the right to bind low ports. With systemd, run systemctl edit myapp and add the lines below, then restart the service.
    Configrun as administrator
    [Service]
    AmbientCapabilities=CAP_NET_BIND_SERVICE

8.Confirm a refusal with a packet capture

Advanced

Shows whether the server really sends a reset (refusal) or stays silent (timeout, a different problem).

  1. Capture traffic for the host and port while you retry the connection. A refusal shows a SYN followed by an RST; a timeout shows repeated SYNs with no reply. Replace eth0, HOST and PORT.
    Terminalneeds sudo / root
    tcpdump -i eth0 -n 'tcp and host HOST and port PORT'

Check that it worked

  • The page loads in Chrome without the ERR_CONNECTION_REFUSED message.
  • For your own server, curl or nc to the host and port connects instead of being refused.
  • Other sites still load normally after any proxy, DNS or firewall change.

If it still fails

  • Try the same address in another browser and on another device or network (for example a phone on mobile data) to decide whether the problem is your device, your network or the server.
  • If only one site fails everywhere, the site may be down or blocking you. Contact its owner or support.
  • If you run the server, run the tcpdump check to confirm a reset is really sent, then review the service log and firewall rules.
  • If many sites fail on only one network, contact your ISP or network administrator.

Questions

How is ERR_CONNECTION_REFUSED different from ERR_CONNECTION_TIMED_OUT?

With a refusal the other machine answers with a reset. With a timeout nothing answers at all, so the browser waits and gives up.

Why does localhost give this error?

Most often the app is not running, or it is running on a different port than the one in your address.

Sources

  1. Fix connection and loading errors in ChromeOfficial · Google
  2. net_error_list.h (Chromium source)Official · Chromium project
  3. ERR_CONNECTION_REFUSED: The best solutions when dealing with this Chrome error · IONOS
  4. How to Troubleshoot TCP Connection Refused Errors · OneUptime