Soft 404
A soft 404 is a page that returns an HTTP 200 (success) status code even though it has no real content or tells visitors the page doesn't exist. Google evaluates such pages by their content, treats them as errors, and excludes them from its index while empty URLs mistaken for valid responses waste crawl resources.
- A soft 404 returns a 200 (success) status code despite having no real content, so Google reads the page and treats it as an error in practice.
- It shows up as "Soft 404" in Google Search Console's Page Indexing report, and the URL is dropped from the search index.
- Empty search-results pages, broken database connections, missing server-side includes, and JavaScript that never loads are the usual culprits.
- The correct fix depends on the case: serve a 404 or 410 if the page is gone, a 301 redirect if it moved, and check rendering if the content actually exists.
- Empty URLs mistaken for 200 get crawled instead of pages with unique content, wasting crawl budget.
Overview
A soft 404 is a page that shows visitors a "page not found" message or a blank screen while the server still returns an HTTP 200 (success) status code. The status code looks fine, but the actual content is an error, so Google analyzes the page and concludes that it effectively doesn't exist. Google Search Console flags these URLs as "Soft 404" in the Page Indexing report and leaves them out of the search index.
The core problem is the mismatch between the status code and the real content. A page that is genuinely missing should return a 404 (not found) or 410 (gone) so crawlers recognize it clearly; returning 200 instead leads crawlers to mistake the URL for a valid page. As a result, empty URLs get crawled repeatedly in place of pages with unique content, wasting the site's crawl coverage.
Common Causes
Google's documentation lists several typical situations that produce a soft 404.
- Empty search-results pages that return a "no results found" message with a 200 status even though there are no matches
- Pages whose body is empty because the database connection dropped
- Pages where a missing server-side include (SSI) file prevents the main content from rendering
- Pages that look empty because JavaScript failed to load or render
- Deleted product or post URLs that display a message like "this product no longer exists" with a 200 status
Correct Handling
Google recommends three approaches depending on the situation.
| Situation | Recommended response | Why |
|---|---|---|
| The page is permanently removed with no replacement | 404 (not found) or 410 (gone) | Tells search engines unambiguously that the URL doesn't exist and shouldn't be indexed |
| The page moved or has a clear replacement | 301 (permanent redirect) | Points search engines to the new location without breaking the user's navigation |
| The content actually exists | Inspect rendering with the URL Inspection tool | Diagnoses whether missing resources or rendering errors make the page look empty |
The key is to return an accurate 404 or 410 for missing pages instead of a 200. If an empty search-results page or a deleted product page is still returning 200, change the server configuration to emit the appropriate status code.
# Apache .htaccess — return 410 for a deleted path
Redirect 410 /old-product/
# Nginx — return 410 for a specific path
location = /old-product/ {
return 410;
}Basis
The official Google Search Central documentation defines a soft 404 as a case where a URL shows content indicating the page doesn't exist while simultaneously returning a 200 (success) status code. It also explains that when the algorithm detects an error page based on its content, it removes the URL from search, and that these duplicate or empty URLs can be crawled in place of pages with unique content, limiting a site's crawl coverage. For diagnosis, it advises using Search Console's URL Inspection tool to verify the actual returned status code and the rendered content.
Action Checklist
- Check the "Soft 404" entries in the Search Console Page Indexing report.
- Open each URL in the URL Inspection tool to review the actual returned status code and the rendered body.
- If a missing page returns 200, change the server to return 404 or 410.
- If a page moved or was replaced, connect the new location with a 301 redirect.
- For pages that render their body with JavaScript, confirm that crawlers can see the content.
- Tidy up status codes and indexing rules so empty search-results and filter pages don't become indexable.