A soft 404 is a page that tells visitors it does not exist, or shows almost nothing, while telling search engines everything is fine with a 200 OK status. Google notices the mismatch, treats the URL as an error anyway, and reports it as a soft 404 in Search Console. Soft 404 errors waste crawl budget, keep real pages out of the index and confuse your reporting. The fix is to make the status code tell the truth.
What Is a Soft 404?
Every HTTP response has a status code. A missing page should return 404 Not Found (or 410 Gone if it was removed on purpose). A soft 404 returns 200 OK instead, so to a crawler it looks like a real, working page, until Google reads the content and sees "Page not found", "No results" or an almost empty template.
| Real 404 | Soft 404 | |
|---|---|---|
| Status code | 404 or 410 | 200 OK |
| What the visitor sees | A not-found page | A not-found page, or an empty or thin page |
| What Google does | Drops the URL from the index over time | Detects the error itself, reports a soft 404, and may keep recrawling |
| Is it a problem? | No, it is correct behavior | Yes, it wastes crawls and muddies index data |
A real 404 is not something to fear. Removed pages should return one. The HTTP status codes guide explains when to use each code.
Common Causes of Soft 404 Errors
- Single-page apps with a catch-all route. The server returns
index.htmlwith status 200 for every path, and the JavaScript router renders a "not found" view. This is the most common cause of soft 404 errors on modern sites. - Custom 404 pages served with status 200. A CMS or server config shows a friendly error page but forgets to set the status.
- Empty search, category or tag pages. "0 results found" pages with nothing else on them.
- Out-of-stock or discontinued products that show a near-empty template.
- Redirecting everything to the homepage. Mass-redirecting removed URLs to the homepage instead of a relevant page; Google often treats those as soft 404s too.
- Thin pages. Pages with so little content that Google reads them as an error, even though nothing is technically missing.
How to Fix a Soft 404
Start in Search Console under Indexing, Pages, then the "Soft 404" row. Export the list and sort each URL into one of three groups: the page is really gone, the page moved, or the page should exist and be indexed. Each group has a different fix.
1. The page is really gone: return a real 404 or 410
Make the server send the correct status. Use 410 Gone when you removed the content on purpose and it is not coming back; Google tends to drop 410s a little faster. In frameworks with server rendering, this is usually one function call:
2. Fix the single-page app catch-all
If your app is client-rendered, the server needs to know which paths exist. Options, from best to simplest: server-render or pre-render your routes so unknown paths get a real 404; configure the host so only known routes fall back to index.html; or, as a last resort, add <meta name="robots" content="noindex"> in the client-side not-found view so Google at least does not index it.
3. The page moved: use a 301 to the closest match
Redirect to the most relevant replacement (the new version of the product, the parent category), not to the homepage. Keep redirects to a single hop; check them with the redirect checker and the redirect chain guide.
4. The page should exist: give it real content
If Google flagged a page you want indexed as a soft 404, it looks too thin. Add the content that makes the page useful: product details, alternatives for out-of-stock items, popular results on empty search pages, or a description on empty category pages. For a filtered or search page that should not be indexed, add noindex instead.
5. Stop linking to dead URLs
Internal links to removed pages keep sending crawlers back. Update or remove them; see how to fix broken links and scan your site with the broken link checker.
6. Validate the fix
Check each fixed URL's status code, then use "Validate fix" on the soft 404 row in Search Console. Validation takes days to weeks.
Soft 404 vs Crawled Currently Not Indexed
Both mean Google read the page and did not index it. A soft 404 means Google thinks the page is an error; crawled currently not indexed means Google thinks it is a real page that is not worth indexing yet. Thin pages can land in either bucket, which is why the content fix overlaps. See how to fix crawled currently not indexed for the quality side.
How Scanverra Helps
Scanverra does not label pages as soft 404s, because that is Google's judgment and needs Search Console data. It does cover the checks you need around a soft 404 fix: the redirect checker shows the exact status code and redirect chain a URL returns, so you can confirm a removed page now sends a 404, 410 or a single 301; the broken link checker finds internal links that still point at dead URLs; and the SEO Optimizer flags thin content and noindex settings on pages you want indexed.