← Back to Blog

Soft-404 Detector — the pages that return 200 but signal 'not found'

Soft-404 Detector — the pages that return 200 but signal 'not found'

Part of the AEO / GEO / AI-search audit tool stack. See the pillar post for the full catalog of sibling audits and where this one fits in the lineup.

A soft 404 is the worst kind of technical-SEO bug: it's invisible to tools that only check status codes. The URL returns HTTP 200. The sitemap contains it. Everything looks clean. But when a human lands on the page, there's no content — just a "No results found" or "This product is no longer available" or a near-empty template.

Google is very good at detecting these. Their quality models classify soft 404s and demote or deindex them silently. You don't get a notification. The URL just... stops ranking.

The Soft-404 Detector crawls your sitemap and flags every URL that looks like a soft 404 regardless of HTTP status.

The seven soft-404 patterns

1. Status 200 with "not found" text

Explicit <title>, <h1>, or body content containing: "not found", "no results", "sorry, that page", "page doesn't exist", "404", "does not exist". Flagged as SOFT-404.

2. Status 200 with "out of stock" / "no longer available"

Product pages that went out of stock but kept the URL live instead of redirecting or 404-ing. Flagged as SOFT-404 if schema still says @type: Product but offers.availability is OutOfStock with no alternative.

3. Status 200 with <100 words of content

Thin content below Google's "thin content" threshold. Flagged as THIN.

4. Status 200 with empty main element

Main, article, or #content element exists but is empty or has only whitespace/boilerplate. Flagged as EMPTY.

5. Status 200 with boilerplate-only

Page is all header + footer + sidebar, no unique body. Detected by comparing to the site's template (if crawled). Flagged as BOILERPLATE.

6. Status 200 with redirect-via-JS

Server returns 200 but a JS window.location.href = … fires in <head>. Flagged as JS-REDIRECT (tool also tests the resulting URL).

7. Status 200 with meta-refresh

Server returns 200 but <meta http-equiv="refresh"> fires immediately. Same as above.

Why this matters

Google's crawler mostly handles these correctly on its end — it deindexes them. The problem for you is:

  1. Crawl budget — Googlebot still wastes time fetching soft 404s. Large sites lose significant crawl capacity.
  2. Sitemap quality — soft 404s in your sitemap signal to Google that your sitemap isn't trustworthy, which affects how aggressively the rest of your URLs get crawled.
  3. Internal linking — pages still linking to soft-404 URLs waste internal PageRank.
  4. User trust — users arriving from older search results hit empty pages, bounce, and cost you.

How to use it

  1. Go to /tools/soft-404-detector/
  2. Paste your sitemap URL (or site root — tool auto-discovers)
  3. Tool crawls up to 100 URLs, rate-limited
  4. Report groups findings by pattern
  5. Export CSV for prioritization

For product pages that went out of stock, the right move is:

  • Short-term out-of-stock (weeks): keep live, update schema availability, add a "notify me" signup
  • Permanent discontinuation: 301 redirect to the category or closest alternative
  • SKU retirement where no alternative exists: 410 (Gone) or 404, not soft-404

Related reading

Fact-check notes and sources

This post is informational, not SEO-consulting advice. Mentions of Google, Googlebot, and similar products are nominative fair use. No affiliation is implied.

← Back to Blog

Accessibility Options

Text Size
High Contrast
Reduce Motion
Reading Guide
Link Highlighting
Accessibility Statement

J.A. Watte is committed to ensuring digital accessibility for people with disabilities. This site conforms to WCAG 2.1 and 2.2 Level AA guidelines.

Measures Taken

  • Semantic HTML with proper heading hierarchy
  • ARIA labels and roles for interactive components
  • Color contrast ratios meeting WCAG AA (4.5:1)
  • Full keyboard navigation support
  • Skip navigation link
  • Visible focus indicators (3:1 contrast)
  • 44px minimum touch/click targets
  • Dark/light theme with system preference detection
  • Responsive design for all devices
  • Reduced motion support (CSS + toggle)
  • Text size customization (14px–20px)
  • Print stylesheet

Feedback

Contact: jwatte.com/contact

Full Accessibility StatementPrivacy Policy

Last updated: April 2026