Skip to content
← All articles Soft 404: What It Means and How to Fix It

Soft 404: What It Means and How to Fix It

The page answers 200 and reads like "nothing found". Why a crawl never finds these, where they come from in single-page apps, and what to return instead.

A soft 404 is a page that tells the visitor "nothing found" while telling the server "everything is fine". Search Console defines it as a request that "returns a user-friendly 'not found' message but not a 404 HTTP response code". The mismatch is the whole problem: the status says the page exists, the content says it does not, and Google has to decide which to believe.

That makes it the one indexing problem a crawl cannot find. Every other status is visible in a status column — a 403 to Googlebot, a 404, a redirect chain. A soft 404 answers 200, so a crawl of your site, including a crawl with our own site crawler, will show a healthy page. The signal is in the content, not the header.

How Google decides a page is a soft 404

The crawling documentation states the rule inside the 2xx row: Google considers the content for processing, and "If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error." The same page adds the part people skip: "For Google Search, an HTTP 2xx (success) status code doesn't guarantee indexing."

So there is no list of banned phrases and no threshold published. What is documented is the direction of the judgement: content that reads like an error, or has nothing in it, is treated as an error no matter what the header said. Search Console's own advice follows from that — "We recommend returning a 404 response code for truly 'not found' pages and adding more information on the page to let us know that it is not a soft 404."

Where soft 404s come from

PageWhy it reads as an error
Empty category or filter combinationThe template renders, the listing is empty. For a reader and for Google the page has no subject.
Out-of-stock product kept onlinePrice, description and buy button are gone; what is left is a notice.
Internal search results with no matches"Nothing found for your query" is literally an error message, served with 200.
Removed page redirected to the home pageThe request was for something specific and the answer is a different page. The original URL still has no content behind it.
Single-page app that fails to load dataThe shell renders, the content never arrives, and the status was 200 before any of that happened.
Expired listing, past event, closed vacancyThe page survives with one line explaining it is over.

Single-page apps are the common case now

Client-side routing cannot set a status code, because the status was decided when the shell was served. Google documents this directly and names two strategies to avoid soft 404 errors in single-page apps:

  • redirect in JavaScript to a URL for which the server responds with a 404 — for example /not-found;
  • add <meta name="robots" content="noindex"> to error pages with JavaScript.

The same document explains why the problem arises at all: "All pages with a 200 HTTP status code are sent to the rendering queue, no matter whether JavaScript is present on the page." The shell gets its 200 long before anyone knows whether the data exists.

How to find them

  1. Start with Search Console, because only it knows. The page indexing report has a status named exactly "Soft 404". Our indexing cleanup groups those URLs so you can see whether it is one template, one folder or the whole catalogue.
  2. Look at the page as Google rendered it. Search Console's advice is to run a live URL inspection and open "View tested page" for a screenshot. An empty block there, where your browser shows products, is the answer.
  3. Check what the page contains after rendering. If the rendered text is a heading and one sentence, it will read as an error regardless of intent. The page analyzer shows what is actually on the page.
  4. Watch the pages that still earn clicks. Some soft 404s have traffic and inbound links. Organic 404 finds URLs that still receive search traffic while answering like an error — those get a redirect, not a delete.

What to return instead

The fix depends on why the page is empty, not on what is convenient.

SituationCorrect response
The page is genuinely gone404, or 410 if you know it will not return. Google's recommendation for truly not-found pages is explicit.
The content moved301 to the page that answers the same request — not to the home page.
Product is temporarily out of stockKeep 200, keep the description and specifications, say when it returns. The page still has a subject.
Category is empty but the section existsKeep 200 and add content: description, related categories, nearby filters. Or noindex it while it is empty.
Internal search resultsBlock them in robots.txt. They should not be crawled at all.
Error state in a single-page appOne of the two documented strategies above — a redirect to a real 404 URL, or a noindex added in JavaScript.

The rest of the status-code decisions, including when 410 beats 404, are collected in our reference of HTTP status codes.

What changes after the fix

A page that starts answering 404 leaves the index, which is the point. Expect the count under "Soft 404" to fall and the count under "Not found (404)" to rise — that is the fix working, not a new problem. Pages you filled with content instead stay at 200 and have to be re-crawled and re-assessed, and Google publishes no timescale for that. The one thing worth watching for is a soft 404 count that does not move at all: it usually means the template was fixed on one page and not on the hundred others built from it.

FAQ

Short answers to the most common questions from this article.

What is a soft 404?
A page that returns a success status while showing a "not found" message. Search Console describes it as a request that returns a user-friendly "not found" message but not a 404 HTTP response code.
Is a soft 404 bad for SEO?
The page will not be indexed, and crawling is spent on URLs that answer nothing. A 2xx status does not guarantee indexing — Google states that directly — so the success code buys nothing here.
Why does a crawler not find soft 404s?
Because the server answers 200. Status-based checks, including a site crawl, see a healthy page. The signal is in the content, which is why the page indexing report and a live rendering test are the tools that work.
How do I fix a soft 404 in a single-page app?
Google documents two options: redirect in JavaScript to a URL that the server answers with a 404, or add a robots noindex meta tag to the error state with JavaScript.
Should I redirect soft 404s to the home page?
No. The request was for something specific and the home page does not answer it. Redirect to the page that covers the same subject, or return 404 and let the URL go.
An out-of-stock product became a soft 404 — delete it?
Not if the product returns. Keep the description, specifications and photographs, and say what happened. The page is a soft 404 only while its content reads like an error message.