HTTP Status Codes Explained
Every time you load a page, the server replies with a three-digit code. Here's what those numbers mean — and which ones actually mean a site is down.
When your browser (or our checker) requests a page, the web server answers with an HTTP status code. It's a short, standardized way of saying "here you go," "it moved," "you can't do that," or "something broke." The codes are grouped into five families by their first digit, and once you know the families, the individual codes make sense at a glance.
The five families at a glance
| Range | Family | Meaning |
|---|---|---|
| 1xx | Informational | Request received, still processing (rarely seen) |
| 2xx | Success | The request worked — the site is up |
| 3xx | Redirection | The resource moved; follow the new location |
| 4xx | Client error | Something about the request was wrong |
| 5xx | Server error | The server failed — often a real outage |
On IsDownOrOnline, we treat any 2xx or 3xx response as "online," because both mean the server is reachable and responding normally. Codes in the 4xx and 5xx ranges may indicate a problem — though, as you'll see, not always.
2xx — Success
- 200 OK — the standard "everything worked" reply. The page loaded.
- 204 No Content — the request succeeded but there's nothing to return (common for background requests).
- 206 Partial Content — the server is sending part of a file, as when resuming a download or streaming video.
A 2xx code is the clearest possible sign that a site is up.
3xx — Redirection
- 301 Moved Permanently — the page has a new permanent home; browsers and search engines update accordingly. Extremely common (for example,
http→https). - 302 Found / 307 Temporary Redirect — the resource is temporarily elsewhere.
- 304 Not Modified — the page hasn't changed since you last fetched it, so the browser uses its cached copy. This is a speed optimization, not an error.
Redirects are normal and healthy. A site that returns a 301 or 302 is up; it's just pointing you to the right address.
4xx — Client errors
- 400 Bad Request — the server couldn't understand the request (often a malformed URL).
- 401 Unauthorized — you need to log in or provide credentials.
- 403 Forbidden — you're not allowed to access this, even with credentials. Bot-protection systems often return 403 to automated checkers while letting normal browsers through.
- 404 Not Found — the specific page doesn't exist. Importantly, a 404 means the server is up — it answered — just that this one URL is missing.
- 429 Too Many Requests — you've been rate-limited for sending too many requests too quickly.
4xx codes describe a problem with the request, not necessarily the site's health. A 404 or 403 from a checker doesn't always mean the site is down for regular visitors — which is one reason results can differ from your own browser. See our FAQ for why this happens.
5xx — Server errors
- 500 Internal Server Error — a catch-all for "the server hit an unexpected problem." Frequently caused by a bug or a bad deploy.
- 502 Bad Gateway — one server got an invalid response from another it depends on; common with proxies and load balancers.
- 503 Service Unavailable — the server is temporarily unable to handle the request, often due to overload or maintenance.
- 504 Gateway Timeout — an upstream server took too long to respond.
5xx codes are the ones that usually mean a genuine outage. If you're seeing 500, 502, 503, or 504, the site itself is struggling — and there's typically nothing you can do but wait. Our guide on why websites go down covers the causes behind these errors.
What about no code at all?
Sometimes a request gets no response: the connection times out or is refused outright. That often means the server is completely unreachable — down, overwhelmed, or blocked at the network level — or that DNS couldn't find it in the first place. Our checker reports these as offline, since nothing answered.
The bottom line
When you check a site, glance at the family first: 2xx and 3xx mean it's up, 5xx usually means it's genuinely down, and 4xx means "it answered, but rejected this particular request." Combine that with whether the result matches your own browser, and you'll almost always know what's going on.
Check a site and see its status code: