How to Check If a Website Is Down
A page that will not load is either the site, your network, or a typo. Work through these checks in order and you will know which one in a couple of minutes.
Updated
Try it now: Website Status Checker. It runs in your browser, with no signup.
Step 1: separate a typo from an outage
Check the address first. A wrong subdomain, a missing letter or http:// on a site that only serves https:// looks exactly like an outage. Paste the address into the Website Status Checker, which tests it from your own browser and network and shows whether the server answered.
Step 2: is it down for everyone or only for you?
A single check only tells you what your connection can reach. To compare, try another network, such as mobile data, or ask a colleague in another location to load the page. If it works elsewhere, the problem is local: your DNS cache, a VPN, a proxy, a firewall or your ISP.
- Turn off the VPN or proxy and reload.
- Try a different DNS resolver such as 1.1.1.1 or 8.8.8.8.
- Flush the local DNS cache (ipconfig /flushdns on Windows, sudo dscacheutil -flushcache on macOS).
- Open the page in a private window to rule out extensions and cached redirects.
Step 3: read the HTTP status code
If the server answers, the status code says what kind of problem it is.
- 200 OK: the page loaded. A blank page after this is a front-end problem, not an outage.
- 301, 302, 307, 308: the address redirects. Follow the redirect target.
- 401 Unauthorized and 403 Forbidden: the server is up but refuses you, often because of missing credentials or a blocked IP.
- 404 Not Found: the server is up but that path does not exist.
- 429 Too Many Requests: you are being rate limited.
- 500 Internal Server Error: the server is up but the application failed.
- 502 Bad Gateway and 504 Gateway Timeout: a proxy or load balancer could not get a good answer from the application behind it.
- 503 Service Unavailable: the server is overloaded or in maintenance.
Step 4: test from the command line
curl shows the status code and timing and separates DNS, connection and TLS failures.
# Status code and total time
curl -s -o /dev/null -w "%{http_code} %{time_total}s\n" https://example.com
# Headers only, with connection details
curl -I -v https://example.com
# DNS only
dig +short example.comChecking from code
A HEAD request is enough to read the status. In Python the standard library raises an exception for 4xx and 5xx answers, so catch it.
import urllib.request, urllib.error
def status(url):
req = urllib.request.Request(url, method="HEAD")
try:
with urllib.request.urlopen(req, timeout=10) as r:
return r.status
except urllib.error.HTTPError as e:
return e.code # the server answered with 4xx or 5xx
except Exception as e:
return str(e) # DNS, TLS or timeout problemWhat a browser-based checker can and cannot tell you
A checker that runs in your browser can only report what your own connection can reach. Many sites do not let other pages read their response, so the tool may confirm that the server answered without showing the exact status code. It is a quick first check, not a worldwide uptime monitor. For continuous monitoring from several regions, use a dedicated uptime service.
Frequently asked questions
Why does a site load for others but not for me?
The cause is usually local: a stale DNS cache, a VPN or proxy, a blocked route at your ISP, or a firewall rule. Test from another network to confirm.
What does a 503 error mean?
The server is reachable but cannot handle the request right now, usually because of overload or maintenance. It is normally temporary.
What is the difference between a 502 and a 504?
Both come from a gateway or proxy. A 502 means it received an invalid answer from the application behind it; a 504 means that application did not answer in time.

