← All posts

Soft 404s: The Invisible Indexing Killer

Soft 404s: The Invisible Indexing Killer

A soft 404 is a page that tells the server one thing and the visitor another. The server returns a 200 status code, which means “here is a page”. The content says, in effect, “there is nothing here”. Google notices the contradiction, treats the page as an error, and declines to index it. That is what makes the soft 404 the invisible indexing killer: nothing in your CMS looks broken, your logs show a clean 200, and the page simply never appears in Google results.

What a soft 404 actually is

A real 404 is honest. The server admits the page does not exist, the browser shows an error, and Google removes the URL or never adds it. A soft 404 is the same emptiness wearing a success code.

The common shapes are all familiar once you know to look for them:

  • A custom “page not found” template that a developer wired up to return 200 instead of 404.
  • A product page whose product was deleted, leaving a polite “no longer available” message.
  • A category or archive page with zero items in it.
  • An internal search results page with no results, generated for every query anyone links to.
  • A JavaScript application that loads its HTML shell with a 200, then renders an error state in the browser.

Google’s Page indexing report has a dedicated status for this, labelled Soft 404: a URL that returns a success code together with a page telling the user it does not exist. For most site owners, that report is the first place the problem becomes visible.

How Google detects a soft 404

Google reads the content, not just the header. If the words on the page say “not found”, “unavailable” or “no longer exists”, or if the main content is missing or so thin that the page is indistinguishable from an error template, Google can classify it as a soft 404 regardless of the status code.

One pattern deserves its own warning: redirecting deleted pages to the home page. It feels tidy, and it preserves the visitor. But Google’s documentation treats a redirect to a page that is not a genuine substitute as a soft 404 as well. The old URL is not consolidated into the home page; it is quietly written off. If a page is gone and nothing replaces it, an honest 404 or 410 serves you better than a hopeful redirect.

Soft 404s are one member of a larger family. If your pages are clean 200s with real content and still not getting picked up, the causes are usually elsewhere: see six reasons Google declines to index a page that looks fine.

How to find the ones you already have

Search Console is the direct route. The Page indexing report groups affected URLs under the Soft 404 status, and the URL Inspection tool shows what Google concluded about any single page at its last crawl.

The report has one limit worth knowing: it tells you what Google decided the last time it looked. It does not keep watching afterwards. A page can be fixed, or quietly regress into a soft 404 after a template change, and the report catches up on its own schedule.

This is also where a soft 404 differs from a hard error in a way that matters if you use a submission tool. AIndexify’s preflight check catches pages that return a real 404, carry noindex, or are blocked by robots, and refunds the credit without billing a check. A soft 404 passes that preflight, because the server reports success. What exposes it is the follow-up: each submitted URL is checked against live Google results on a schedule, and a page that still reads “Not indexed as of” a date weeks after submission is telling you Google looked and chose not to keep it. The status will not say why, but it turns a silent problem into a visible one.

Three honest fixes

Every soft 404 resolves into one of three situations, and each has one correct answer.

The page should exist. Give it real content. An empty category needs products or removal; a thin page needs enough substance to be distinguishable from an error template. Then ask Google to look again.

The page is genuinely gone. Return a real 404 or 410. This is not a failure state to engineer around; it is the correct signal, and it lets Google clean up the URL properly.

The page moved or was replaced. Redirect with a 301 to the page that genuinely replaces it, one a visitor would accept as the same thing. Not the home page, not the nearest category, unless that truly is the substitute.

For JavaScript applications, fix the status at the server: a route that does not exist should return 404 from the server, not a 200 shell that fails in the browser.

One thing no fix list should promise: resubmitting a soft 404 does not rescue it. Submitting asks Google to look, it does not oblige Google to keep what it finds, and what it finds is what you fixed or did not fix. The wider mechanics of getting pages crawled, judged and kept are covered in the ultimate guide to Google indexing.

Fix the pages, then verify the outcome rather than assuming it. If you want to see which of your URLs Google is actually returning, submit your URLs and read the dates for yourself.

Sources