A 404 is the most misread status code on the web, because it looks like failure and is actually evidence of success: the DNS resolved, the connection opened, TLS completed, the server received your request and composed a reply. Everything worked. The server simply has nothing at that path. That distinction decides whether you are looking at a broken link or a broken site.
What the server is telling you ¶
HTTP 404 Not Found means the origin understood the request and found no resource at that URL. It says nothing about whether the resource ever existed, and by design it does not distinguish "never existed" from "deleted last week" — that is what 410 Gone is for, and almost nobody uses it.
The practical consequence: a site returning 404 is up. If every page of a site returns 404, the site is answering but serving nothing, which usually means a broken deploy or a misconfigured document root rather than an outage.
404 vs. the errors it gets confused with ¶
| What you see | What actually happened | Site up? |
|---|---|---|
| 404 Not Found | Server answered; no resource at that path | Yes |
| NXDOMAIN | The domain itself does not resolve | No — nothing to connect to |
| 500 | Server tried to answer and crashed | Answering, but broken |
| 503 | Server is up but refusing work | Deliberately unavailable |
| Browser "can't reach this page" | No HTTP response at all | Unreachable from you |
Is it the link, or the site? ¶
Check the site's root, not the page you landed on. If example.com/ returns 200 and example.com/some/page returns 404, the site is fine and the link is stale. If the root also 404s, something structural is wrong with the deployment.
A probe from outside your network settles it in a few seconds — if our four probe methods all get a 404 on the root, everyone is getting it, not just you.
Common causes, in the order they actually occur ¶
- A stale link — the page moved and no redirect was left behind. The single most common cause, and entirely the site's to fix.
- A typo in the path, including a trailing slash the server treats as a different URL.
- Case sensitivity — most Linux origins treat
/Aboutand/aboutas different paths; most Windows origins do not. - A broken deploy — files did not land where the web server expects them. This is the one that 404s the whole site.
- Routing that fell through in a single-page app or framework, where the server has no handler for a client-side route on a hard refresh.
If it's your site ¶
Redirect, do not delete. A 301 from the old URL to the nearest useful page preserves whatever search ranking and inbound links the old path had; a bare 404 throws both away. Add a redirect for every URL you retire, and check the redirect chain afterwards to make sure it lands in one hop rather than bouncing through three.
Serve a real 404 status on your not-found page. A "page not found" screen that returns HTTP 200 is a soft 404: search engines index it, and monitoring tools report the URL as healthy.
FAQ ¶
Does a 404 mean the website is down?
No, and this is the useful part. A 404 proves the server is reachable and responding. Check the site's homepage — if that loads, the site is up and only that one URL is missing.
Why do I get a 404 when the page loads for someone else?
Usually a cache: a CDN edge near you cached the 404 from when the page genuinely did not exist. Hard-refresh, or check from a different network. If a probe from outside your network gets a 200, the stale copy is on your side of the path.
Is 404 bad for SEO?
A handful is normal and harmless — the web has always had dead links. What hurts is 404ing URLs that have inbound links or rankings, because both are discarded rather than transferred. Redirect those.
What is a soft 404?
A page that says "not found" in its text but returns HTTP 200. Search engines flag them because the status contradicts the content, and uptime monitors count them as successful checks. Return a real 404.