# The 404 page: the status code, and what the visitor sees

A 404 page has two audiences. Search engines read the status code and nothing else. People read the page and decide whether to leave. Most sites get the second right and the first wrong, and only the first affects the index.

Updated 2026-09-15 · Source: https://porteur.ai/guides/how-to-design-a-404-page

## The status code is what search reads

When a URL does not exist, the server must say so in the response, not only in the text of the page.

```bash
$ curl -sI https://yourproduct.com/does-not-exist | head -n 1
HTTP/2 404

# Wrong, and invisible to a visitor:
HTTP/2 200
```

- 404 means the server has nothing at that URL.
- 410 means it was there and was deliberately removed.
- 200 with an error message is a soft 404, and Google will decide for itself that the page is gone.
- A redirect to the home page is also read as a soft 404, so the old URL is dropped and its links are wasted.

> A single-page app is the usual offender: the router renders a nice error screen and the server answered 200 before the router ever ran.

## The soft 404 trap

Google reports soft 404s in the Page indexing report. They come from four patterns, and all four are yours to fix.

| Pattern | What the server says | The fix |
| --- | --- | --- |
| An error screen rendered by the client | 200 | Return 404 from the server for unknown paths, then render the screen |
| Empty category, search or listing pages | 200 | Give them content, or noindex the empty state |
| A redirect from every missing page to the home page | 301 to a 200 | Redirect only to an equivalent page, otherwise return 404 or 410 |
| A page whose data fetch failed and rendered an empty shell | 200 | Return the right status when the data is missing, and do not render an empty page |

The cost is not a penalty. It is that URLs you did not choose stay in the index looking like real pages, and pages you deleted are reported as decisions you did not make.

## 404 or 410, and when it matters

- 404 for anything the server does not have: typos, guessed URLs, pages that never existed.
- 410 for pages you removed on purpose and will not bring back. It is a clearer signal and can be acted on a little faster.
- Neither is a penalty. A site that has ever deleted a page has 404s, and that is normal.
- Do not return 404 for a page that is temporarily down. Use 503 with a Retry-After header so crawlers come back.

The practical difference is small. The decision that matters is the one before it: does this URL have an equivalent page, or not?

## When a redirect is better than a 404

| Situation | Answer |
| --- | --- |
| The page moved to a new URL | 301 to the new URL, one hop |
| The page was merged into another that answers the same question | 301 to that page |
| A product was discontinued and a close replacement exists | 301 to the replacement |
| A product was discontinued and nothing replaces it | 404 or 410, with the category linked from the error page |
| A campaign URL that will never return | 410 |
| A typo URL nobody links to | 404, and do nothing else |

> The test for a redirect: would the person who clicked the old link be satisfied by the destination? If not, it is a soft 404 dressed as a redirect.

## What belongs on the page a visitor sees

The status code handles search. Now handle the person, who arrived from a stale link or a typo and is one click from leaving.

- A plain sentence saying the page is not here. No joke that delays the answer.
- A search box, if the site has search. This is the single most useful element.
- Links to the main sections, the same ones as the navigation.
- Three or four popular pages, chosen from your own Search Console data rather than guessed.
- A link to contact or support, for the person who followed a link from your own email.
- The site's normal navigation and footer, so the page is a place rather than a dead end.

Keep the design in the site's own vocabulary. A 404 page that looks like a different website reads as a broken site rather than a missing page.

## Finding the 404s that matter

1. **Export Not found from the Page indexing report** Google lists the URLs it tried and failed to fetch. Most will be noise.
2. **Mark the ones with external links** The Links report shows your top linked pages. A 404 with links is equity sitting in a dead end.
3. **Mark the ones that had clicks** Filter the Performance report by page over sixteen months. A URL that used to bring people deserves a redirect.
4. **Crawl your own site for internal links to 404s** Links inside your own pages pointing at dead URLs are the easiest fix and the most embarrassing to leave.
5. **Check the sitemap** A sitemap listing 404s tells Google to keep fetching them. Remove them.

Everything left after those four filters is a typo nobody links to. Let it return 404 forever and spend the hour elsewhere.

## Testing your 404 page

1. **Request a nonsense URL** Ask for the headers only and read the first line. It must say 404, on the live site, not on your machine.
2. **Test a nonsense URL in every section** Frameworks often handle the root correctly and a dynamic route incorrectly, so try /guides/nonsense and /product/nonsense too.
3. **Test with the trailing slash and in mixed case** These take different code paths more often than anyone expects.
4. **Inspect one in Search Console** The URL Inspection tool reports the status Google saw, which settles any argument with your own browser.
5. **Watch the Page indexing report** Soft 404 should trend to zero. If it does not, a template is still answering 200 for missing content.

## Questions

### Do 404 errors hurt SEO?

No, not in themselves. Every site that has deleted a page has 404s and Google expects them. What hurts is a 404 on a URL with links or traffic, a soft 404 that returns 200, or internal links pointing at dead pages.

### Should I redirect all my 404s to the home page?

No. Google reads a mass redirect to the home page as a soft 404, so the URLs are dropped anyway and their links are wasted. Redirect to an equivalent page, or return 404 or 410.

### What is the difference between 404 and 410?

404 says the server has nothing at that URL. 410 says it was removed on purpose and will not return. Google treats both as gone and may act on 410 slightly faster.

### My 404 page looks right but Search Console reports soft 404. Why?

Because the server answered 200 before your page rendered. Check with a headers request rather than in the browser. Client-rendered apps do this by default unless the server is told to return 404 for unknown paths.

### Should the 404 page be noindexed?

It does not need to be. A correct 404 status keeps it out of the index by itself. Adding noindex to a page that already returns 404 changes nothing.

## Read next

- [How to fix 404 errors reported in Search Console](https://porteur.ai/guides/how-to-fix-404-errors-in-google-search-console): Decide which 404s to fix, find the ones with links or traffic, choose redirect, restore or 410, clean internal links and sitemaps, and revalidate.
- [Soft 404: when a page says 200 and Google reads not found](https://porteur.ai/guides/soft-404): Soft 404 means your server says 200 but the page reads like an error or empty. See where it shows in Search Console and fix each case fast.
- [Delete or redirect an old page: 301, 404 or 410](https://porteur.ai/guides/delete-or-redirect-old-pages): Decide per page: 301 if a clear equivalent exists, else 404 or 410. Check links and clicks first, avoid home page redirects, and monitor what Google drops.
- [HTTP status codes for SEO: what each one tells Google](https://porteur.ai/guides/http-status-codes-for-seo): See how 2xx, 3xx, 4xx and 5xx codes change crawling and indexing, when to use 301 vs 302, handle soft 404s, 503 for maintenance, and how to check URLs.
- [Build a redirect map: one old URL, one new URL, tested](https://porteur.ai/guides/redirect-map): A practical redirect map: where to find old URLs, how to match them, store the table, apply 301s, and test every row for one hop and a 200.
- [410 Gone](https://porteur.ai/glossary/410-gone): 410 Gone means you deleted a URL on purpose and it will not return. Here is when to use 410 vs 404 or 301, how Google treats it, and what to fix.
- [Broken link](https://porteur.ai/glossary/broken-link): A broken link sends people and crawlers to an error. See the types, where to find them, and the exact fixes for a small site.

Paste your URL and the free check reads your site like a crawler in about thirty seconds, including the dead links and the pages that answer when they should not. Free check: https://porteur.ai/
