How to Find and Fix Soft 404s (the Error Google Under-Reports)

📅 Sep 22, 2026•⏱️ 5 min•👤 Saad — Founder & Developer

A real 404 is a 404: the server says "not found" and everyone knows it. A soft 404 is the slyer problem — a page that returns HTTP 200 "OK" while containing no useful content: an empty category, a deleted product's landing page, a tag page with zero posts, a search page with zero results. Search engines have to classify these, and they do not do it consistently — which is why soft 404s can sit in your index for months while your crawl report stays quietly clean. This post covers what they are, why the report under-reports them, and a six-step process to find and fix the ones on your site.

What a soft 404 actually is

Two conditions together: the page returns a 200 status, and the content is missing, empty, or nearly a duplicate of your homepage. Classic generators of soft 404s:

The harm is indirect but real: wasted crawl budget on pages that go nowhere, a diluted index (Google keeping pages that add no value), and — the worst case — a genuine content page being mistaken for a soft 404 and dropped. The last one is why you should fix soft 404s deliberately instead of discovering them as missing pages in Search Console.

Why the crawl report under-reports them

Three reasons, all structural:

  1. Classification is probabilistic, not rule-based. Google's classifier looks at signals (thin content, low link popularity, "not found" language, similarity to the homepage) and makes a judgment call. Pages that are borderline — a little text, some links, a plausible title — get classified as real content, full stop.
  2. The "not found" wording helps and hurts. A page that literally says "Page not found" is more likely to be flagged. A thin page that says "Welcome to our new section, coming soon" is less likely to be caught — it reads like content.
  3. Sampling. Crawl diagnostics do not re-classify every URL on every crawl. A soft 404 that was classified as "fine" at last check is not re-judged until something triggers it.

Practical consequence: a clean crawl report does not mean you have no soft 404s. You have to hunt them with your own process — the next section is that process.

Six steps to find and fix them

  1. Export your index. In Search Console, fetch the list of indexed URLs (the "Pages" report → export, or the site: query for smaller sites). This is the population to audit — what Google actually believes exists.
  2. Spot-check for empties. Sample the index — the long tail first (deep category paths, old dates, parameter URLs). Any URL that loads to an empty shell, a "coming soon," or your homepage content is a soft 404 candidate. Tools like Screaming Frog or a simple crawl script speed this up, but a manual sample of 50–100 URLs catches most real problems.
  3. Fix the status codes — the core fix. Every true empty page must return HTTP 404 (or 410 for permanently gone), not 200. This is a server/template change, not a content change: the CMS or framework must be told that "no items in this collection" renders a 404, not a styled empty page. This one step is what converts a soft 404 into a real 404, and real 404s are handled correctly and consistently.
  4. Decide what each URL should be, not just what it should return. For every soft 404 you find, the options are: (a) return a real 404, (b) 301 to the closest living page (a category that was merged → its parent; a deleted product → its category), or (c) noindex it if it should exist but not be indexed (zero-result search pages: 200 + noindex, or better, 404). The redirect is right when a user genuinely searching for that content has a clear destination; the 404 is right when they do not.
  5. Handle the generators, not just the instances. If you found 200 empty tag pages, fixing them one by one will fail — the next post-deletion creates 201. Fix the template logic: empty collections render 404/410 by construction, and zero-result search is noindexed by construction. One change, all current and future instances.
  6. Verify the change took. Re-crawl the fixed URLs and confirm the new status. In Search Console, use the URL Inspection tool on a sample to watch the status update (it is not instant — classification changes can take days to weeks). Keep the URLs out of your sitemap the moment they become 404s: a sitemap listing dead URLs is a signal that contradicts itself and slows the cleanup.

The sitemap and robots half of the problem

Two hygiene items that interact with soft 404s specifically. First, your sitemap should list only live, useful pages — every empty or gone URL in the sitemap tells Google "this exists and matters," which is the opposite of what you want. Audit the sitemap against the index list from step 1. The Sitemap Generator rebuilds a clean one from your live URL list in a minute. Second, your robots.txt should not be accidentally blocking the pages you need Google to see the 404 on — and a site that blocks its own soft-404 URLs from crawling is, by definition, never going to get them re-classified. The Robots & OG Generator produces a clean baseline to diff against. And if you have a lot of thin pages that should exist but not be indexed, the sitemap guide covers the full hygiene pass.

How to test your fix (the incognito method)

Before you trust any tool's report: open an incognito window (so no personalization or cache), navigate to a fixed URL, and check the network response — not just what the page looks like. A page that looks empty but returns 200 is still a soft 404 waiting to happen. The response code is the whole game: 404 for gone, 301 for merged, 200+noindex for "exists but not for the index."

The reference

Google's documentation on crawl errors — Fix crawl errors in Search Console — is where the soft-404 classification behaviour is described from Google's side, including the warning that soft 404s are a judgment call. Read it as the source for "why my report disagrees with my site" — the disagreement is the expected behaviour, not a bug.

FAQ

Generate a Clean Robots.txt →

S
Saad
Founder & Developer — Faisalabad, Pakistan. I build ToolWow's tools and write its guides. Questions or corrections? Email me — I read everything and reply within a day.
⌘ESC