Soft 404s: how to find pages Google treats as empty
A soft 404 returns 200 but Google decides the page has nothing worth indexing. Here is how to spot them in Search Console, why they happen, and how to fix each cause.
A soft 404 is a page that answers with a normal 200 status code but has so little content that Google decides to treat it like a 404 anyway. It will not show up in search results, no matter how well you optimize the title or the copy on it, because Google has already written it off as an error page in disguise.
What counts as a soft 404
The server tells the browser everything is fine, but the page itself looks broken to a crawler. Common patterns:
- An out-of-stock product page with no description, price, or alternative left on it
- A search results page that found nothing and shows only "no results"
- A thin placeholder page auto-generated for a category with no products yet
- A page that redirects client-side to a generic error or home page, but the original URL still returns 200
- A deleted blog post whose URL now serves a near-blank template
Google Search Console reports these under Indexing as "Soft 404," separate from real 404s and from server errors. That label means Googlebot fetched the page, read it, and concluded it does not deserve a spot in the index.
Why soft 404s happen
Most soft 404s come from a mismatch between what the URL promises and what the page delivers. A few root causes show up over and over:
- The page was deleted or unpublished but the URL was never redirected or set to return a real 404
- A template renders the same near-empty shell for any ID that does not match a record, instead of returning an actual error status
- JavaScript-rendered content fails to load for the crawler, so the initial HTML is close to blank
- A faceted or filtered URL happens to match zero results, and the empty-state message is the entire page
That last one matters for any site with filters or search built into the UI. Every empty filter combination is a candidate URL for a soft 404, and on a large catalog that can add up to thousands of them.
How to find soft 404s
- Open Search Console and go to Indexing, then Pages. Look for the "Soft 404" reason under the not-indexed section
- Export the affected URLs and sort by path pattern. Soft 404s cluster: most come from one template or one section, not a random scatter
- Spot-check a handful with the URL Inspection tool and view the rendered HTML, not just the source, to see what Googlebot actually saw
- Crawl the same list with a standard SEO crawler and compare the reported status code (should be 200) against the rendered word count and visible content
If you do not have a live sample yet, log file analysis can help too: pages Googlebot visits once and never revisits are worth checking for this pattern, even before Search Console flags them.
How to fix each cause
The fix depends on whether the page should exist at all.
- Page is gone for good: return a real 404 or 410 status, not a 200 with an empty template
- Page moved: send a 301 redirect to the closest live equivalent
- Page is temporarily empty (out of stock, sold out event): keep it live with useful content, such as related products, an email-me-when-available option, or links to similar items, and keep the status at 200 since the URL is legitimate
- Empty filter or search result: either noindex the zero-result state, or block that specific parameter combination from being crawled, so it never gets evaluated as a thin page in the first place
- Content fails to render for crawlers: fix server-side rendering or pre-rendering so the meaningful content is in the initial HTML response
A 200 status is a promise that something is there. A soft 404 is Google catching you breaking that promise.
When not to worry
A handful of soft 404s on a large site is normal churn, not a crisis. Products go out of stock, sections get retired, and Google adapts. The pattern worth acting on is volume: dozens or hundreds of URLs sharing the same template or the same root cause. Fix the template once and the whole cluster clears up together, instead of patching pages one at a time.
Start with the Search Console export. Group the URLs by pattern, find the one or two templates responsible for most of them, and match each to a cause above. That single pass usually clears the bulk of the list, and it stops new soft 404s from accumulating behind it.