Outrings
Accessibility, mobile and presentation

What does a good 404 page need?

The right status code first, then a way out. Most 404 pages fail on the first one and nobody notices.

3 min read
Short answer

It must return an actual 404 status code, say plainly that the page does not exist, and give the visitor a route onward — search, main sections, or a likely intended destination. A "soft 404" that returns status 200 is the most damaging and least visible failure.

The status code comes first

A page that says "not found" while returning HTTP 200 is a soft 404. To a browser it looks fine; to everything else it is a real page with real content.

  • Search engines index it, filling the index with duplicate "not found" pages.
  • Crawl budget is spent on pages that do not exist.
  • Link checkers report broken links as working.
  • Analytics record them as successful page views.
curl -sI https://yoursite.com/this-does-not-exist | head -1

That must return HTTP/2 404. If it returns 200, that is the first thing to fix — and single-page applications produce this by default, because the server returns the app shell for every path.

What the page should contain

  1. Say what happened, plainly. "This page does not exist" beats "Oops!"
  2. Say what to do. The visitor wanted something; help them get it.
  3. Offer search, if you have it.
  4. List the main sections. On a small site, list everything — it is often the fastest route.
  5. Guess intelligently. If the path resembles something real, offer it.
  6. Keep your navigation. A 404 stripped of the site chrome is a dead end.

Handle the other errors too

404 gets attention and the others are left as the server default — a bare white page with a line of text, which reads as a broken site.

CodeWhat to say
403This path is not readable, and that is deliberate. Nothing is wrong on your side.
429Rate limited. State the limit and when it resets.
500Something broke here, not in what you sent. Trying again often works.
503Temporarily unavailable — maintenance or load.
504A request took too long. Say what timed out.

One template reading the status code covers all of them, which is far less work than it sounds.

Two things to avoid. Do not redirect 404s to the homepage — the visitor loses the information that the page is gone, and search engines treat it as a soft 404. And do not make the error page clever at the expense of clear: somebody arriving here is already mildly frustrated, and a joke that delays the route onward makes it worse.

Prevention

  • Redirect with 301 when you move content permanently. A redirect is better than a good 404.
  • Use 410 Gone for content deliberately removed — it tells search engines to drop it faster.
  • Watch the 404 report in Search Console, and your own logs, for patterns.
  • Fix your own broken internal links first. They are entirely within your control and are a large share of most sites' 404s.

What our audit reports about this

Every item below is measured directly, not inferred. Run it against your own site and the result names the exact rule or header responsible.

  • Whether a request for a non-existent path returns a genuine 404 rather than a 200.
  • Whether the error page retains navigation and offers a route onward.
  • Broken internal and external links found on the audited page.
  • Redirect chains and their status codes.

For agents and scripts, the same measurement is at /api/v1/infra?url=yoursite.com — see the API documentation.

Related questions

Should I redirect 404s to the homepage?

No. It hides the fact that the page is gone, disorients the visitor, and search engines treat a redirect-to-homepage as a soft 404 anyway. Serve a real 404 with useful links.

What is the difference between 404 and 410?

404 means not found, possibly temporarily. 410 means deliberately and permanently gone. Search engines drop 410 content faster, so use it when you have genuinely removed something.

Do 404s hurt SEO?

Not in themselves — they are a normal part of the web. What hurts is soft 404s returning 200, and large numbers of broken internal links, which signal neglect and waste crawl budget.

Read next

All 50 guides · How every check works · API for agents