Soft 404 in Google Search Console: How to Fix
A "Soft 404" in Google Search Console means the page returns HTTP 200 OK - so technically the server says "here's the page" - but the actual content looks like an error page, empty template, or placeholder. Google detects the mismatch and treats the URL as if it were a real 404, excluding it from the index. Soft 404s are especially common on e-commerce out-of-stock pages, JavaScript apps, and generic redirect-to-homepage setups.
What this GSC status means
Google fetched the URL and received an HTTP 200 response, but the rendered page content looks empty, nearly empty, or explicitly signals "not found" (phrases like "Sorry, the page you requested", "Page not found", "We couldn't find what you're looking for"). Google's algorithm concludes the URL does not actually represent meaningful content and excludes it from the index - the same outcome as a real 404, but achieved through content analysis rather than status code.
Common causes
- Out-of-stock or discontinued products returning 200 with a "no longer available" message instead of 404/410.
- A custom 404 page that returns HTTP 200 instead of a proper 404 status.
- Category or search result pages with zero matching items, showing "No results found" at 200.
- JavaScript-rendered pages where Googlebot sees an empty div shell before hydration.
- URLs that redirect via JavaScript (window.location) rather than a proper 301 redirect.
- Thin pages with fewer than ~100 words of unique content - Google treats them like error pages.
- Auto-generated pages (paginated empties, tag pages with no posts, expired events) that should not exist.
How it affects indexing
Soft 404 URLs are excluded from the index and get no organic traffic. They also waste crawl budget every time Google revisits them, and at scale they lower the site-level quality signal - sites with many soft 404s often see suppressed rankings on other pages too. For e-commerce, soft 404s on out-of-stock items specifically drain visibility from product inventory that never returns.
How to diagnose
Open Page indexing in GSC, click "Soft 404", and look at the URL pattern - are they all from the same template (product pages, category archives, search results)? Run URL Inspection on a sample and view the rendered HTML. Check: does the page have real content? Does it say "not found" or similar error phrases? Test with curl to confirm the HTTP status is 200 and not a proper 404. Fetch the page in an incognito browser and count the unique visible text.
How to fix
1. Pages that genuinely do not exist: return HTTP 404 (or 410 Gone for permanent removal), not 200. 2. Out-of-stock products: keep the page with real content and a status message, or 301 to a related product/category. 3. Custom error pages: make sure the server returns 404, not 200. Configure Apache, nginx, or your framework accordingly. 4. JavaScript apps: implement server-side rendering (SSR) or static generation (SSG) so Googlebot sees real content. 5. Remove phrases like "not found", "sorry", "does not exist" from live pages that are not actually error pages. 6. For thin pages: expand the unique content, or noindex, or consolidate with 301. 7. Empty category/search pages: noindex them or return 404 when no results exist. 8. Remove soft 404 URLs from sitemap.xml - only submit pages with real content. 9. In GSC Page indexing, after fixing, click "Validate Fix" to trigger Google recheck.