A soft 404 is a page that tells visitors the content is not there, or shows almost nothing, while the server answers with status 200 OK. Google expects a missing page to answer 404 or 410. When the status says “fine” but the page looks like an error, Google labels it a soft 404 and keeps it out of the index.
In Search Console it appears in Indexing → Pages as Soft 404. Of the 24 sites SignalCrawler audited in September and October 2026, 4 answered 200 for any address that does not exist, which turns every mistyped or deleted link into a soft 404.
Soft 404 or real 404?
| Real 404 | Soft 404 | |
|---|---|---|
| Status code | 404 (or 410) | 200 |
| What the visitor sees | “Page not found” | “Page not found”, an empty listing, or the homepage |
| What Google does | Drops the URL, no harm to the site | Treats the page as low value, wastes crawling on it |
Common causes
- The site answers 200 for any address. Many single-page apps and some CMS setups show a “not found” view without changing the status code.
- Missing pages redirect to the homepage. Google often treats a redirect of many unrelated URLs to the homepage as a soft 404.
- Empty listings. A category, tag or search page with no items still answers 200.
- Out-of-stock or expired items with the content removed but the page kept.
- Very thin pages, for example a template that loaded without its data.
How to find them
- Export the URLs from the Soft 404 reason in Search Console.
- Open a few in a browser: is the content really missing, or is it there and Google misread the page?
- Test how the site answers an address that cannot exist, such as
/this-page-does-not-exist-123. Check the status in your browser's developer tools (Network tab) or withcurl -I. Anything other than 404 or 410 is a problem for the whole site.
How to fix it
For pages that are really gone: return 404, or 410 if they will never come back. If a close replacement exists (a newer product, a merged article), use a 301 redirect to that specific page instead, never a blanket redirect to the homepage.
For a site that answers 200 for everything: fix it at the server or framework level. In a single-page app, the server must know which routes exist and send 404 for the rest; prerendering a dedicated 404 page and serving it with status 404 is a common solution.
For empty listings: either return 404 when a filter or tag has no items, add noindex to empty states, or stop linking to them.
For pages that are real but thin: add the missing content. If the template failed to load its data, that is a bug to fix, not an SEO setting.
How to check that it worked
- A request to a nonsense URL answers 404 or 410.
- URL Inspection of a fixed page says the page is indexed or, for removed pages, that it returns 404.
- The Soft 404 count in the Pages report drops after Validate fix.
What SignalCrawler checks here
Every audit requests an address that cannot exist and reports a site that answers it with 200. It also flags pages that look like “not found” pages but answer 200, linked URLs that serve a copy of the homepage, canonical tags that point to such pages, and the “not found” page itself when it gives visitors no way back.