DomainLens

Learn

Soft 404s: Pages That Say Not Found and Return 200

A soft 404 is a contradiction: the page says the content is missing and the server says everything is fine. Google believes the server, then notices the page, and reports the mismatch.

Check your site before you start fixing

Run a fresh DomainLens audit and use the report as your priority list.

Run a free SEO audit

What Google is telling you

A soft 404 in Search Console means Google fetched a URL, received a 200 status, and concluded from the content that the page does not really exist. It is not an error in your server logs and it will not appear in any monitoring — the response was technically successful.

Google reports it because the mismatch wastes everyone's time. It keeps recrawling a URL the server insists is fine, and it will not index a page that announces it has nothing.

What the page showsWhat the server sendsVerdict
Real content200Correct
"Page not found"404 or 410Correct
"Page not found"200Soft 404
Empty app shell200Soft 404
Redirect to the home page301 then 200Soft 404
"No results found"200Often soft 404

Where they come from

The SPA case is the one that scales badly. A catch-all route means every typo, every stale external link and every bot probe returns a valid 200 page, so the count grows without limit and never stops.

  • Single-page applications with a catch-all route that serves the app shell for every path.
  • Frameworks rendering a not-found view as an ordinary page without setting the status.
  • Bulk redirects of deleted content to the home page or a category index.
  • Empty search results, empty categories and out-of-stock product pages with nothing left on them.
  • Pages whose content failed to load, leaving a template with no body.

Finding them

  1. 1Open the Pages report in Search Console and read the "Soft 404" group; Google lists the URLs it decided about.
  2. 2Test a URL you know does not exist and read the status line, not the page.
  3. 3Check that your framework's not-found handler sets the status rather than only rendering a view.
  4. 4Look for redirects landing on the home page — those are frequently reported as soft 404s.
  5. 5Review empty-state pages: an empty category with a 200 and no content is indistinguishable from a missing page.
The check that settles it
# Should be 404, not 200
curl -sI https://example.com/definitely-not-a-real-page | head -n 1

# Follow redirects: where does a deleted URL end up?
curl -sIL https://example.com/deleted-page \
  -o /dev/null -w '%{http_code} %{url_effective}\n'

# A 200 at the home page means a soft 404, not a fix.

Fixing the framework, not the page

The fix is always the same shape: the server must send the status. Rendering a nicer not-found page changes nothing, because Google reads the status line first and the content only to detect the contradiction.

In practice that means the route handler needs to set 404 explicitly, and an SPA needs the server to know which routes are real rather than serving the shell for everything.

  • Server-rendered frameworks: return the not-found response, not a rendered view with a default 200.
  • SPAs: have the server return 404 for unknown routes, or prerender known routes and 404 the rest.
  • nginx: use error_page without =200, which silently rewrites the status.
  • Empty categories: keep a 200 if the category is real and currently empty, with content explaining that.
  • Deleted content: 404 or 410, and redirect only where a genuine equivalent exists.

The empty-state judgement call

Not every empty page is a soft 404. A category that legitimately exists and happens to have no products right now should return 200 with content explaining that, because the URL is real and will fill again. An internal search results page with no results should not be indexable at all. The distinction is whether the URL is a real part of your site or a query someone typed. See custom 404 pages for the page itself and HTTP status codes for choosing between 404, 410 and a redirect.

How DomainLens contributes

DomainLens reports the status code a URL returns, which is exactly the field a soft 404 gets wrong and the one a browser hides. Point it at a URL you know is missing: if the audit reports 200, you have reproduced the problem. For finding the broken links that lead there see how to find and fix 404 errors .

What is a soft 404?
A URL that returns 200 while its content indicates the page does not exist. Google detects the contradiction and refuses to index it.
Do soft 404s hurt SEO?
They are not a penalty. They waste crawl budget on URLs that will never be indexed, and at SPA scale that waste is unbounded.
Why does Google report a soft 404 on a page with content?
Usually because the content is very thin, or because it reads as an empty state. Google is judging whether the page has anything worth indexing.
Is redirecting a deleted page to the home page acceptable?
No. Google treats an irrelevant bulk redirect as a soft 404. Redirect only where a genuine equivalent exists, and 404 otherwise.

Check this on your own site

Related resources