Skip to main content
SEO

Soft 404

Published:

A soft 404 is a URL that returns HTTP 200 but shows a “not found” message, an empty page or a page with no main content. The server says everything is fine, while the content says there is nothing here.

Google detects these pages from their content, excludes them from Search and lists them in the Search Console Page indexing report with the reason “Soft 404”. The right fix depends on whether the content is gone, has moved, or still exists and simply failed to render.

What causes soft 404s

  • An empty internal search results page, or a listing with no items.
  • A server-side failure, such as a missing include file or a broken database connection, after which the template shows an error with a 200 status.
  • A JavaScript app with client-side routing that renders “not found” for a URL that does not exist while the server still answers 200.
  • A page whose resources did not load for Googlebot, for example blocked by robots.txt, too slow or too large, so it renders blank.
  • Redirecting many old URLs to one irrelevant page, such as the home page. Google states this might be treated as a soft 404.

Why soft 404s matter

A URL flagged as a soft 404 does not appear in search results. If it is a valuable page that only renders badly, you lose it from the index without any error on the server side.

If the page really is empty, the 200 status misleads users and crawlers. Google lists soft 404 pages among the URLs that, on large sites, can take crawling away from more important pages. On a small site the effect is usually minor, but a misleading status is still worth fixing.

How to fix a soft 404

SituationWhat to do
The content is gone and has no replacementReturn 404 or 410. A custom error page can help users, as long as the server returns 404.
The content moved or has a clear equivalentRedirect with a 301 to that specific URL, not to the home page.
The content exists, but Google sees a blank pageCheck the rendered page in the URL Inspection tool. Unblock resources and fix rendering errors.
The page is empty by design, such as no resultsAdd content that helps users, or keep it out of the index with noindex.
Content removed with no replacement
HTTP
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8
Content moved to a new URL
HTTP
HTTP/1.1 301 Moved Permanently
Location: https://example.com/shoes/womens-sneakers

Soft 404s in JavaScript apps

When routing happens in the browser, the server cannot always return the right status. Google suggests two options: a JavaScript redirect to a URL for which the server returns 404 (such as /not-found), or adding a robots noindex meta tag to the error page. If your framework renders pages on the server, the simplest fix is to return 404 from the server directly.

Redirect to a URL served with 404
JavaScript
const res = await fetch(`/api/products/${id}`);
if (res.status === 404) {
  // The server answers /not-found with a 404 status
  window.location.href = '/not-found';
} else {
  renderProduct(await res.json());
}

How to check for soft 404s

  1. Open the Page indexing report in Search Console and find the reason “Soft 404”.
  2. For a few sample URLs, run a live test in the URL Inspection tool and look at the screenshot and HTML of the rendered page.
  3. Compare the server’s status code with what users see, for example with curl -I.
  4. Pick the fix: 404 or 410, a 301 to an equivalent, or repair the content and rendering. After deploying, start fix validation in the report.
A soft 404 candidate
Example
$ curl -I https://example.com/product-that-does-not-exist
HTTP/2 200

# The page shows “Product not found”, but the server returns 200.

Sources & further reading

Check your site’s indexing signals

Insight analyses public SEO signals including HTTP statuses, redirects, noindex and canonicals, then orders findings by priority.