What Is a Soft 404?
A soft 404 is a URL that returns a 200 OK success code while serving a page Google reads as missing, empty, or broken. It is not a server fault.
A soft 404 is a URL that returns a 200 OK success code while serving a page Google reads as missing, empty, or broken. It is not a server fault and it is not a 404. Your logs record a healthy response. Google records a page with nothing on it, and quietly stops indexing the URL.
Why soft 404s matter more than real ones
Soft 404s fail silently. A hard 404 surfaces in uptime monitoring, error logs and status dashboards. A soft 404 passes every one of those checks, because the server is doing precisely what it was told to do. The page loads. The status is 200. Nothing alerts.
What breaks is discovery. Google drops the URL from the index, and because the pattern almost always lives in a template rather than a single page, the same judgement lands on every URL built from it. Out-of-stock products, empty search results, expired listings and thin tag archives disappear in batches, with no deploy to blame. The first symptom is usually a traffic decline nobody can trace, which is why it pays to know which pages actually earn traffic before you start hunting for a cause.
How Google decides a page is empty
None of this happens at request time. Your server has already finished its work and returned a valid response. The classification is made later, during indexing, when Google compares that response against the content it actually rendered.
- The response arrives clean. The URL returns 200 OK, the HTML parses, and nothing anywhere in your stack records a problem.
- The page is rendered. Google executes the JavaScript, so a template that loads its content client-side is judged on the rendered output rather than the raw source.
- The rendered content is assessed. A page with a header, a navigation menu, a footer and no main content is a shell, and it gets read as one.
- Absence language is weighted. Copy such as product not found, no longer available, or sorry, nothing matched your search tells Google what the status code did not.
- The URL is labelled. It appears in the Page indexing report in Search Console under the Soft 404 reason, grouped with every other URL judged the same way.
- The judgement spreads. Because these faults are template-level, the report typically exposes a URL pattern rather than an isolated page.
Hold on to the contrast with a hard 404. A genuine not-found response is unambiguous and needs no interpretation from anyone, which is why the way a real 404 behaves is the cleaner outcome whenever the page is genuinely gone. Ambiguity is the entire problem here: you have given Google a signal that contradicts itself, and Google resolves the contradiction in favour of what it can see.
| What the URL returns | How Google is likely to classify it |
|---|---|
| 200 with a full page of relevant content | Indexed on merit, like any other page |
| 200 with an out-of-stock shell and no alternatives | Soft 404 |
| 200 with an empty internal search results page | Soft 404 |
| 404 or 410 with a branded error page | Not found, handled correctly |
| 301 to a closely matching replacement URL | Redirect followed, signals consolidated |
| 301 to the homepage from a deleted product | Soft 404 |
The blunt version
The industry default when a URL stops working is a redirect to the homepage. It is the worst option on the table, and Google documents exactly why: a redirect to an irrelevant page is itself treated as a soft 404. You have not fixed anything. You have moved the problem into your redirect map, where it is harder to find and nobody thinks to look.
There are three correct responses. Which one applies depends on the page, not on what is quickest to ship.
Use a real status code when the content is gone and is not coming back: 404 for gone, 410 when you want to say so more firmly. Use content when the URL deserves to exist. An out-of-stock product page carrying the specification, the price, the restock position and links to alternatives is a page; the same URL showing one line reading currently unavailable is not. Use a redirect only when a specific replacement covers the same intent, one to one, never many to one.
The homepage redirect survives because it is fast to implement and it makes the error report go quiet. That is the appeal. Nothing is repaired; the symptom simply stops being visible on a dashboard someone reviews monthly. If you are auditing this properly, work through the crawlability and indexation basics first, because soft 404s are nearly always a template decision rather than a page-level accident.
Example
Say a fashion retailer retires 3,000 seasonal product URLs at the end of a season. The template keeps rendering: header, navigation, size guide, footer, and one line in the main column reading This product is no longer available. The status code stays at 200, because nobody changed it. Search Console reports a climbing Soft 404 count over the following weeks, and the category pages linking to those URLs lose impressions too, since their internal links now point at pages Google has stopped trusting. Nothing broke. No deploy failed. The template did exactly what it was built to do, and the fix is a decision about which of those 3,000 URLs deserve real content, which deserve a 410, and which have a genuine successor worth a redirect.
FAQ
Is a soft 404 an error on my server?
No. Your server is returning exactly what it was told to return, which is why nothing appears in uptime monitoring or error logs. The soft 404 label is Google’s judgement about the content it rendered, applied after the fetch, and it shows up only in the Page indexing report in Search Console.
Should I redirect soft 404s to my homepage?
No. Google treats a redirect to an irrelevant page, the homepage included, as a soft 404 in its own right. Redirect only where a specific page covers the same intent as the one you removed. Otherwise return 404 or 410, or give the URL content worth indexing.
How do I find soft 404s on my site?
Open the Page indexing report in Google Search Console and look for the Soft 404 reason, which groups the affected URLs and usually exposes a template. Cross-check with a crawl: filter for 200 responses carrying thin main content or phrases such as not available and no results found.
Related terms
- Crawled – Currently Not Indexed — the status for a page Google read in full and judged not worth indexing, rather than empty.
- Dynamic Rendering — the workaround Google no longer recommends, and a frequent source of shells served to crawlers.
- 404 error — the honest version of the same message, delivered at the status code instead of in the copy.
A soft 404 is not a bug to be silenced with a redirect; it is Google telling you the page has nothing on it. Decide whether that URL deserves content or a real status code, then implement the decision at the template rather than one URL at a time.