# ERR_CONNECTION_REFUSED

> DNS worked and your browser found an address, but nothing at that address accepted the connection.

Source: https://cwp.sg/errors/err-connection-refused/  
Author: Ben Johnson  
Last verified: 2026-08-04

**Also seen as:** This site can't be reached, connection refused, ERR_CONNECTION_TIMED_OUT

## What it means

This is one step further along than [DNS_PROBE_FINISHED_NXDOMAIN](/errors/dns-probe-finished-nxdomain/). There, the name didn't resolve at all. Here it resolved fine — your browser got an IP address and tried to connect to it — and got no usable answer.

Two variants worth telling apart, because they mean different things:

- **`ERR_CONNECTION_REFUSED`** — something answered and actively said no. A machine is there; nothing is listening on that port, or a firewall rejected it outright.
- **`ERR_CONNECTION_TIMED_OUT`** — nothing answered at all. The packets went into a void. Usually a firewall dropping traffic silently, or the address points at nothing.

Refused is faster and more informative. Timed out means you waited for a response that never came.

## Why it happens

### The DNS record points at the wrong address

An old `A` record left over from a previous host, or a typo'd IP. The name resolves perfectly to a server that has nothing to do with you.

This is the most common cause after a migration where DNS wasn't fully updated.

### The web server isn't running

On a VPS or a home server, the machine is up but Apache, nginx or Caddy isn't. Nothing is listening on port 80 or 443, so connections are refused.

### A firewall is blocking the port

Either on the server or between you and it. Home internet providers frequently block inbound 80 and 443, which is the usual reason a [home-hosted site](/guides/how-to-host-a-website/from-home/) works locally and not from outside.

### You're being blocked specifically

A security plugin or the host's brute-force protection banned your IP after repeated failed logins. The site works for everyone else, which makes it look like a local network problem.

## How to fix it

### 1. Check what the DNS record points at

```
dig +short example.com @1.1.1.1
```

Compare that with the IP your host gave you. If they don't match, the record is stale — fix it and see [pointing a domain at your host](/guides/how-to-host-a-website/point-a-domain-to-your-host/).

Use the [DNS propagation checker](/tools/dns-propagation-checker/) to confirm what the wider internet sees rather than your own cached copy.

### 2. Test whether anything is listening

```
curl -sSv --max-time 8 https://example.com 2>&1 | head -5
nc -zv example.com 443
```

`Connection refused` means the address is right but nothing is serving. `Connection timed out` means traffic isn't arriving at all — that's a firewall, not a web server.

### 3. Confirm it isn't just you

Load the site on mobile data with wifi off, or ask someone elsewhere.

If it works for them, your IP is blocked or your local network is interfering. Check your host's security settings for a ban list before changing anything on the server.

### 4. Restart the web server, if it's yours

On a VPS or home server:

```
sudo systemctl status nginx     # or apache2, caddy
sudo systemctl restart nginx
sudo ss -tlnp | grep -E ':80|:443'
```

That last command lists what is actually listening. Empty output for those ports is your answer.

On shared hosting you have no control here — if nothing is listening, that's an outage to report, not something to configure.

### 5. Check the port isn't blocked upstream

If you're hosting from home, confirm your provider allows inbound 80 and 443. Many residential plans block them permanently, and no amount of router configuration works around it. Test from outside your own network — a site loading on your own wifi proves nothing.

## On CWP hosting specifically

On CWP this error should only appear during the first minutes after account creation, while DNS is being published for a new subdomain.

If a custom domain shows it, the DNS record is almost certainly pointing somewhere other than us — check the **Domains** page for the values you should be using, then verify with the propagation checker.

---

Content Website Platform (cwp.sg) operates the free hosting it writes about; see https://cwp.sg/about/ for the methodology and the commercial disclosure.
