ERR_CONNECTION_REFUSED means your browser tried to connect to a website or service, but the connection was actively rejected. In simple terms, the address was reachable enough to try a connection, but nothing accepted the request on the expected port.
This error is common in Chrome and other browsers. It can be caused by a local browser issue, DNS or proxy settings, a firewall, a VPN, a server that is down, a web service that is not listening, or a website misconfiguration after migration or SSL changes.
Quick Fix
- Check whether the problem affects one site or many sites.
- Reload the page once, then stop retrying repeatedly.
- Open the site in a private or incognito window.
- Disable VPN, proxy, and browser extensions temporarily.
- Restart your browser, device, and router.
- Clear browser cache and cookies.
- Flush DNS cache and try another DNS provider.
- If you own the site, check that the web server is running and listening on the correct port.
- Make sure the firewall is not blocking port 80 or 443.
- If you use Cloudflare or a tunnel, confirm the origin service URL points to the correct port.
What Is ERR_CONNECTION_REFUSED?
ERR_CONNECTION_REFUSED is a browser connection error. It appears when the browser tries to open a TCP connection to a server, but the target host rejects it instead of accepting and continuing the request.
This is different from a timeout.
- Timeout usually means the other side never answered in time.
- Connection refused usually means the other side answered at the network level, but the service on that port was not accepting connections.
You may see this error in cases like these:
- a website is down,
- the web server is stopped,
- HTTPS is configured but nothing listens on port 443,
- a local firewall blocks the request,
- a proxy or VPN breaks the route,
- your browser is pointed to the wrong host or port,
- a reverse proxy cannot reach the backend service.
The message often appears as:
This site can’t be reached
The connection was refused
ERR_CONNECTION_REFUSED
That wording sounds generic, but the root cause is usually practical and testable.
Why ERR_CONNECTION_REFUSED Happens
Most real cases come from a short list of causes.
1. The Website or Service Is Not Running
This is one of the most common causes. The browser reached the target system, but no application accepted the request on the expected port.
Examples:
- Apache, NGINX, or the app server is stopped,
- the backend process crashed,
- the origin container never started,
- a local development server is not running.
2. The Server Is Listening on the Wrong Port
A website may be online, but not on the port your browser expects.
Common examples:
- the app listens on port 8080, but the browser expects 80,
- HTTP works but HTTPS fails because nothing listens on 443,
- a reverse proxy forwards traffic to the wrong backend port,
- a Cloudflare Tunnel points to the wrong service port.
This is a very real cause in tunnel and reverse-proxy setups.
3. A Firewall Is Blocking the Connection
A local firewall or server firewall may reject incoming or outgoing traffic.
This can happen on:
- Windows Defender Firewall,
- macOS firewall tools,
- UFW or iptables,
- hosting firewalls,
- security tools on VPS or dedicated servers.
If the firewall rejects the port, the browser may show ERR_CONNECTION_REFUSED.
4. VPN, Proxy, or Browser Extensions Are Interfering
Sometimes the website is fine and the problem is local.
Typical causes include:
- VPN routing problems,
- manual proxy settings,
- privacy or security extensions,
- local filtering software,
- enterprise traffic inspection tools.
If the error appears on only one device or browser profile, this becomes much more likely.
5. DNS or Hosts File Settings Point to the Wrong Destination
DNS usually causes “not found” style errors, but it can also contribute to ERR_CONNECTION_REFUSED if the domain resolves to a host that exists but is not serving the website properly.
This often happens when:
- the domain points to the wrong IP,
- a local hosts file overrides the real domain,
- staging or old migration records are still in place,
- IPv6 records point to a host that is not configured for the site.
6. The Browser Cache or Session Is Broken
This is not the top cause, but it is common enough to test early.
Cached redirects, cookies, or stale connection state can make one site fail repeatedly in one browser while it works elsewhere.
7. The Web Server Rejects HTTPS or HTTP Incorrectly
Some sites are configured only partially.
Examples:
- HTTP is open, HTTPS is refused,
- the SSL certificate was added but the server never started listening on 443,
- the origin behind Cloudflare refuses secure connections from the proxy.
8. The Site Is Behind a Reverse Proxy or CDN, but the Origin Refuses Connections
If you use Cloudflare, NGINX proxy, HAProxy, Docker, or another gateway, the public site may look fine from the outside while the origin refuses the actual backend connection.
This is common when:
- the backend port is wrong,
- the origin service is down,
- localhost is misused inside containers,
- firewall rules block the proxy-to-origin path.
How to Fix ERR_CONNECTION_REFUSED Step by Step
Start by deciding whether this is a visitor problem, a local machine problem, or a website-owner problem.
1. Check Whether It Happens on One Site or Many
This is the best first filter.
- If only one site fails, that website or its route is likely the issue.
- If many sites fail, your browser, network, VPN, proxy, or local system is more likely at fault.
- If only one device fails, the problem is probably local to that device.
2. Test the Site in a Private Window
Open the same URL in incognito or private browsing.
- If it works there, the issue is likely cache, cookies, or an extension.
- If it still fails, move to network and server checks.
This is one of the fastest real tests for browser-side issues.
3. Disable VPN, Proxy, and Browser Extensions
Temporarily turn off:
- VPN apps,
- manual proxy settings,
- browser proxy extensions,
- security or filtering extensions,
- ad blockers if they modify network behavior.
Then test again.
If the site starts working, one of those layers was blocking or rerouting the connection.
4. Clear Browser Cache and Cookies
If the issue affects one site in one browser, clear cache and cookies for that site first.
Then restart the browser fully and test again.
This is especially useful after domain changes, HTTPS changes, login issues, or local redirect problems.
5. Restart the Browser, Device, and Router
This sounds basic, but it clears a lot of temporary state.
- Close the browser completely.
- Restart the device.
- Restart the router if the network is acting strangely.
- Test the site again.
This helps most when the issue is local and intermittent.
6. Flush DNS Cache and Try Another DNS Provider
If the domain may be resolving to the wrong destination, clear local DNS state and test again.
You can also try switching temporarily to a public DNS provider such as:
- Google DNS
- Cloudflare DNS
This matters most if the issue began after a migration, DNS update, or network change.
7. Check the Hosts File
If the problem affects one site only and started after dev or staging work, check the local hosts file.
A wrong hosts entry can point the browser to:
- an old local environment,
- a dead staging server,
- a private IP not serving the site,
- localhost by mistake.
If the domain resolves locally to the wrong machine, ERR_CONNECTION_REFUSED is very plausible.
8. Check Whether the Web Server Is Running
If you own the site, confirm the web server or app is actually running.
Check:
- NGINX,
- Apache,
- PHP application server,
- Node, Python, Go, or Java app process,
- container status if using Docker.
If the service is stopped, start it and retest.
9. Make Sure the Service Is Listening on the Right Port
A working app on the wrong port still causes failure.
Check:
- port 80 for HTTP,
- port 443 for HTTPS,
- any custom internal port behind a reverse proxy,
- whether the proxy points to that same port.
This is one of the most common server-side causes.
10. Check Firewall Rules
Inspect both local and server-side firewalls.
Look for blocked or refused traffic on:
- 80,
- 443,
- backend service ports,
- proxy-to-origin communication paths.
If a firewall is rejecting rather than silently dropping the traffic, the browser may show ERR_CONNECTION_REFUSED instead of a timeout.
11. Test HTTP and HTTPS Separately
Try both versions if appropriate:
http://example.comhttps://example.com
If one works and the other is refused, the issue is usually port binding, SSL listener setup, or a proxy/origin mismatch.
12. If You Use Cloudflare or a Tunnel, Check the Origin Service Port
This matters a lot in proxied setups.
Make sure:
- the tunnel points to the real service port,
- the origin app is listening on that port,
- container networking is not pointing at the wrong localhost context,
- the backend has not moved after deployment.
A wrong service URL is a very common reason for refused origin connections.
13. Check Reverse Proxy Upstreams
If you use NGINX, HAProxy, Traefik, or Apache as a proxy, inspect the backend target.
Check for:
- wrong upstream IP,
- wrong port,
- backend service down,
- Docker service name mismatch,
- localhost used in the wrong network namespace.
14. Review Recent Changes First
This is often the fastest route to the cause.
Ask what changed right before the error started:
- DNS changes,
- SSL changes,
- hosting migration,
- new firewall rule,
- Cloudflare or proxy setup,
- server restart,
- container or app deployment.
Most ERR_CONNECTION_REFUSED cases begin right after one of those changes.
Advanced Troubleshooting
Compare Different Networks and Devices
Test the same site from:
- another browser,
- another device,
- mobile data,
- a different Wi-Fi connection.
This quickly shows whether the issue is local, network-specific, or truly site-wide.
Check Server Bindings
On the server side, verify that the app is bound to the expected interface.
Common mistakes include:
- the service listens only on
127.0.0.1when it should be exposed more broadly, - the reverse proxy expects a port the app never opened,
- the app binds only to IPv4 while traffic arrives via IPv6,
- the listener is attached to the wrong hostname or socket.
Inspect Logs Instead of Guessing
Check:
- web server error logs,
- application logs,
- firewall logs,
- proxy logs,
- Cloudflare or tunnel logs if relevant.
Refused connections often leave a much clearer trace in logs than in the browser.
Check Docker and Container Networking
This is a very common source of refused connections.
Typical mistakes:
- the container is down,
- the published port is wrong,
- the reverse proxy points to the wrong container port,
- the service listens only on localhost inside the container.
Check ISP or Enterprise Network Interference
If the site works elsewhere but not on one corporate or ISP network, the network itself may be blocking or redirecting access.
This is less common than local browser issues, but it does happen.
Prevention Tips
- Keep web servers and app services monitored.
- Document which ports each service actually uses.
- Keep firewall rules simple and reviewed after changes.
- Test both HTTP and HTTPS after migrations.
- Verify reverse proxy and tunnel targets after deployments.
- Avoid stale local hosts file entries on admin machines.
- Use one canonical public URL consistently.
- Monitor origin health behind Cloudflare and reverse proxies.
The best prevention is simple: make sure the right service is running, listening on the right port, and reachable through every layer in front of it.
When to Contact Support
Contact your hosting provider if:
- the website is down only on your domain,
- the server is not listening on 80 or 443,
- firewall rules may be blocking traffic,
- you need access to logs or network configuration you cannot change.
Contact your network admin if:
- the site works on mobile data but not on the office network,
- proxy or enterprise filtering may be involved,
- multiple websites are refused only on one managed environment.
Focus on local troubleshooting if:
- the issue affects one browser only,
- private browsing changes the result,
- VPN or proxy settings are active,
- the hosts file may have been edited before.
FAQ
What does ERR_CONNECTION_REFUSED mean?
It means the browser tried to connect to a host and port, but the target system refused the connection instead of accepting it.
Is ERR_CONNECTION_REFUSED a browser problem or a server problem?
It can be either. Sometimes the cause is local, such as a VPN, proxy, extension, DNS override, or firewall. Other times the website server or backend service is down or not listening on the expected port.
How do I fix ERR_CONNECTION_REFUSED fast?
Start by checking whether the problem affects one site or many, then test in a private window, disable VPN and proxy tools, clear cache, flush DNS, and if you own the site, confirm the web server is running and listening on the correct port.
Can Cloudflare or a tunnel cause ERR_CONNECTION_REFUSED?
Yes. If the tunnel or proxy points to the wrong backend port, or the origin service is not listening, the origin connection can be refused.
Why does ERR_CONNECTION_REFUSED happen on one site only?
Usually because that site is down, misconfigured, blocked by a firewall, pointing to the wrong destination, or exposing the wrong port for the requested protocol.
Final Thoughts
ERR_CONNECTION_REFUSED usually looks vague, but the real cause is often simple: the browser reached a network target, and that target did not accept the connection on the requested port.
Start with scope. One site or many. One device or all. Then check browser state, VPN or proxy settings, DNS, firewall rules, and whether the service is actually running and listening. That order solves most ERR_CONNECTION_REFUSED cases much faster than random troubleshooting.