The word “soft” means the error is in the content, not the status code. The server says the page loaded fine (200 OK), but what Google sees looks like an error page: “Sorry, nothing found”, an empty product grid, or a page with a header, footer and nothing in between. Google labels these “Soft 404” in Search Console and keeps them out of the index.
Why it matters
Soft 404s waste crawling on pages that will never rank, and they can hide real problems. Bean & Barrel Coffee might see a batch of soft 404s for category pages like /shop/decaf/ that show “No products found” after the decaf range sold out. Visitors who land there from an old link get nothing useful. If the store had hundreds of empty filter combinations, Google would spend time crawling them instead of the products that matter.
Common causes
- A custom “page not found” template that returns 200 instead of 404.
- Empty category, tag or search result pages.
- Out-of-stock or discontinued products with all content removed.
- Many old URLs redirected to the homepage or an unrelated page.
- Pages that rely on JavaScript to load their content, where the script fails for Googlebot so the rendered page looks blank.
How to fix each type
| Situation | Fix |
|---|---|
| Page is gone for good | Return a real 404 or 410 status |
| Page moved or has a close substitute | Use a 301 redirect to it |
| Category is temporarily empty | Keep the page, add useful text and links to related products, or noindex it until stock returns |
| Page is too thin | Add real content, or merge it with a stronger page (see thin content) |
| JavaScript content not rendering | Check the rendered HTML in URL Inspection and fix the script or render key content on the server |
Common mistakes
Redirecting a deleted product to the homepage feels tidy, but Google often reports the result as a soft 404 anyway because the homepage isn’t a replacement for the product. Point the redirect to the closest category or a successor product instead.
How to check
In Search Console, open the Page indexing report and look for “Soft 404”. Use URL Inspection on a sample to see the rendered page as Google saw it. Site Audit tests whether your site returns a real 404 for a missing URL and flags thin pages, so you can catch both kinds before Google does.
curl -s -o /dev/null -w "%{http_code}" https://www.example.com/this-page-does-not-exist/
If that command prints 200, your not-found template is producing soft 404s across the site.