A soft 404 is a URL that returns status 200 but shows content that looks like an error, an empty result or almost nothing. Google detects this and treats the page as not found, so it isn't indexed. Fix it by returning a real 404 or 410 for pages that don't exist, redirecting moved content to its new URL, or adding real content to pages that should exist.
Why soft 404s happen
| Cause | Example | Fix |
|---|---|---|
| Custom "not found" page with status 200 | The template shows an error but the server says OK | Return a real 404 status |
| Empty category or search result | "No products found" | Noindex empty states, or 404 when the category no longer exists |
| Out-of-stock product with no content | Only a title and "unavailable" | Keep useful content, link to alternatives, or redirect if gone for good |
| Very thin pages | A few words and a template | Add real content or remove the page |
| Redirects to the homepage | Deleted pages sent to / | Redirect to a relevant page, or return 404/410 |
| Content loaded only by JavaScript, failing for Googlebot | Rendered page is empty | Serve key content in the HTML; check the rendered view |
How to find soft 404s
- Open the Page indexing report in Search Console and look for Soft 404.
- Open a few examples with URL Inspection and look at the rendered page.
- Group them by template: categories, products, search pages, old articles.
- Fix the template, not each URL one by one.
Choosing the right fix
- The page should exist and has value: add substantial content, then request reindexing.
- The content moved: 301 redirect to the specific new URL, not to the homepage.
- The content is gone for good: return 404 or 410. That's a correct answer, not an error to hide.
- The page is useful for users but not for search: keep it and add noindex.
Why redirecting everything to the homepage doesn't help
It's a common shortcut after a site cleanup. Google often treats mass redirects of unrelated pages to the homepage as soft 404s anyway, so you gain nothing and confuse users who expected the original content.
Soft 404s and indexing services
Status-code checks can't catch soft 404s, because the server says 200. That's a limit of any automated check, including ours: @IndexForgeBot filters real 404s, redirects, noindex, robots.txt blocks and foreign canonicals, but a page that returns 200 with almost nothing on it will pass the check and still likely be dropped by Google. Fix thin and empty pages before sending them.
Soft 404 or crawled – not indexed?
The two are related. A soft 404 is Google saying "this looks like an error page". "Crawled – currently not indexed" is Google saying "this is a real page, but not worth keeping". Thin pages can land in either one. See the guide on crawled – not indexed for the quality side.
How to test a template before it goes live
Most soft 404s come from templates, so test the template states, not individual URLs. Open an empty category, a search with no results, a deleted product and a removed article on a staging copy, and check two things for each: the status code the server returns, and what the rendered page actually shows. Every state that shows "nothing here" should either return a real 404 or 410, or carry noindex if users need it. Fixing this once in the template prevents thousands of soft 404s later.
Validating the fix
After you change the template, use "Validate fix" on the Soft 404 issue in Search Console. Google rechecks the affected URLs over the following days or weeks. URLs that now return 404 move to "Not found", which is the correct outcome for pages that don't exist. Pages that got real content should move into the index after recrawling.
Soft 404s in online shops
Shops produce soft 404s at scale: discontinued products, empty filters, seasonal categories, search pages. A sensible policy:
- Discontinued product with a replacement: 301 to the replacement.
- Discontinued with no replacement but useful information: keep, mark unavailable, link alternatives.
- Gone with nothing useful: 404 or 410.
- Temporarily out of stock: keep the page as is, with a clear status.
- Empty filter results: noindex, or don't link to empty combinations.
Soft 404s on JavaScript sites
If content is loaded by JavaScript and the request fails for Googlebot, or takes too long, the rendered page can look empty. Google then flags it as a soft 404 even though users see everything. Check the rendered HTML and screenshot in URL Inspection. Serving the main content in the initial HTML avoids the problem.
Is a real 404 bad for SEO?
No. A 404 for a page that doesn't exist is the correct answer. Google drops it from the index and moves on. Problems come from 404s on pages that should exist, and from links pointing to 404s, which waste the link. Converting real 404s into fake 200s only creates soft 404s.
Finding soft 404 candidates before Google does
- Crawl your site and sort pages by word count. Very short pages are candidates.
- Look for identical titles like "Not found" or "No results" on 200 pages.
- Check templates for empty states: categories, tags, search, out-of-stock products.
When Google gets it wrong
Occasionally a legitimate short page, like a contact page or a product with little text, is flagged. Add context that makes the page clearly useful, then request reindexing. If it's flagged again and the page is fine for users, it may simply not be valuable enough to index, which is Google's call.
Status codes and what Google does with them
| Status | Google's reaction |
|---|---|
| 200 | Indexes the content, unless it looks empty (soft 404) |
| 301, 308 | Indexes the target; treats the move as permanent |
| 302, 307 | Follows; may keep the original URL longer |
| 404, 410 | Drops the URL from the index |
| 5xx | Retries later; slows crawling if frequent |
Custom 404 pages, done right
- Return a real 404 status, not 200.
- Explain that the page doesn't exist, in plain words.
- Link to the homepage, search and main sections.
- Keep the site's navigation so visitors don't leave.
Soft 404s on backlinks
A page that links to you can be a soft 404 too: an expired listing, an empty profile, a removed article replaced by a generic "not available" message. The server still returns 200, so automated checks pass, but Google treats the page as missing and your link with it. When a backlink stays unindexed and every technical check passes, open the page and look at what it actually shows.
Soft 404 checklist
- Missing pages return 404 or 410, not 200
- Empty states are noindexed or not linked
- Deleted content redirects to a relevant page, not the homepage
- Thin pages get real content or are removed
- Main content is present in the initial HTML
Soft 404s after a site migration
Migrations produce soft 404s in two ways. Old URLs without a matching new page get redirected to the homepage or a top category, which Google often treats as a soft 404. And new pages that load content from an API that isn't ready yet show empty templates for the first crawls. Map old URLs to their closest real equivalent, return 404 or 410 when there isn't one, and check rendered pages on the live site, not only on staging, right after the switch.
How soft 404s affect crawling
Each soft 404 is a URL that Google fetches, renders and then discards. On a small site this costs little. On a site with thousands of empty filter pages or expired listings, it takes crawl time away from pages that should be indexed, and new content gets discovered more slowly. Returning real status codes lets Google stop visiting those URLs as often.
Soft 404s in search features
Pages flagged as soft 404 don't appear in regular results, image results or other features. If you notice an important page missing everywhere, check the Page indexing report for this status before looking for ranking problems.
A quick test with curl
curl -s -o /dev/null -w "%{http_code}\n" https://yoursite.com/this-page-does-not-exist
If a made-up URL returns 200 instead of 404, your site creates soft 404s for every mistyped link. Fix the server or CMS setting before anything else.
Common questions
Are soft 404s bad for my site?
They waste crawl time and keep those URLs out of the index. A handful is normal; thousands point to a template problem.
Should I return 404 or 410 for deleted pages?
Both work. 410 says "gone on purpose" and may drop out slightly faster. 404 is fine for most cases.
Can a soft 404 come back as indexed?
Yes, once the page has real content and Google recrawls it.
Why does Google flag a page that has content?
The content may be too small relative to the template, or the rendered version Googlebot sees may differ from what you see in a browser.
Have links stuck outside the index?The bot checks every URL first and charges $0.01 only for links that go through. 10 free to start.
Open the bot