Soft 404 Errors

What soft 404 errors are, why Google flags pages that return 200 OK but have no content as soft 404s, how to find them in Search Console, and how to fix them.

First published: Jun 27, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #11 in HTTP Errors#22 in HTTP Status Codes#184 in Technical SEO#249 on the site
1 evidence signal on this page

A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a code your server sends — it's a label Google applies after comparing the response code against the rendered content, and it treats the page like a 404 for indexing. Common causes: deleted pages that don't 404, out-of-stock or discontinued products, empty internal search results, thin JavaScript-rendered pages, and irrelevant redirects. The fix is to make the code match the content: return a real 404/410 when a page is gone, 301 to something genuinely relevant, or add real content when the page should stay live.

TL;DR — A soft 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing. is a classification, not a status code. The server returns a success code (usually 200), but the rendered content reads as empty or “not foundA 302 (\"Found\") is a temporary redirect: it forwards users to a new URL while telling search engines the original URL should stay in the index. It's a weak canonicalization signal, not the zero-equity dead end of SEO folklore.,” so Google overrides the 200 and treats the URL like a 404 for indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed.. It still costs you: the page isn’t indexed, and repeated re-crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor. of URLs that never actually resolve can add up on larger sites — Google doesn’t publish a universal crawl-budget cost. Root causes cluster into four buckets — deleted pages that don’t 404, thin or empty auto-generated pages, irrelevant redirectsA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., and renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. failures (often JS). Google’s current documentation names missing server-side includes, broken database connections, empty internal search results, and unloaded JavaScript as detection triggers. The fix decision tree has three branches: gone → 404/410; moved → 301 to something relevant; should exist → add real content and re-test. noindex does not fix it.

What a soft 404 actually is

Search ConsoleA free Google service that reports how a site performs in Google Search and surfaces problems with how Google crawls, indexes, and serves it. It's first-party data straight from Google — but you don't need it to appear in results. applies this label after evaluating the response and content; the label is distinct from what appears in server logsLog file analysis is reading a web server's raw access logs to see exactly which URLs search engine crawlers actually requested, when, how often, and what status code they got. Unlike crawl tools or Search Console, logs are the unsampled, ground-truth record of what really happened.. Evidence for this claim Google may classify a success response as a soft 404 when rendered content suggests an error or has little usable content. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: HTTP status codes The appropriate fix depends on whether the URL should exist. Evidence for this claim Google recommends an accurate 404 or 410 for missing pages, a relevant redirect for moved pages, or substantive content for valid pages. Scope: Google Search Console report terminology and documented Search behavior; the label alone may not prove the underlying root cause. Confidence: high · Verified: Google: Soft 404 errors

In my Ahrefs guide to HTTP status codes, I put it this way:

“Most 2xxs will allow pages to be indexed. However, 204s will be treated as soft 404s and won’t be indexed. Soft 404s may also be URLs where the server says it is successful (200), but the content of the page says it doesn’t exist. The code should have been a 404, but the server says everything is fine when it isn’t. This can also happen on pages with little or no content.”

That’s the whole thing in a nutshell. The server says 200, the content says “nothing here,” and Google resolves the contradiction in favor of the content. Google’s own HTTP status codes doc describes the same mechanic under the 2xx table: it considers the content for processing, and “if the content suggests an error… an empty page or an error message, Search ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance. will show a soft 404 error404 Not Found is the HTTP client-error status code a server returns when it can't find the requested URL — RFC 9110 defines it as no current representation, or unwillingness to disclose one. A \"hard 404\" actually returns the 404 status; a \"soft 404\" returns a success code (like 200) for a page that's really gone. 404s are normal and expected: the fact that some URLs 404 doesn't affect your site's other, successful pages, and Google de-indexes 404'd URLs over time (probably retrying for some period, less and less often)..” Google’s dedicated crawling-errors troubleshooting page spells out the definition even more directly: a soft 404 is a URL that “returns a page telling the user that the page does not exist and also a 200 (success) status code.”

So a soft 404 is not a status code your server can return. It’s a label search engines apply after comparing the response code (some 2xx) against the rendered page. That precision matters, because a lot of writing about this treats “soft 404” like an error code — it isn’t. (A sibling code, 204 No Content, gets swept into the same bucket, and 404 vs 410 is a separate distinction worth understanding — a 410 says “gone” a touch more emphatically than a 404.)

Why it still costs you even though it’s not a penalty

There’s no ranking penalty for a soft 404. But there’s a real cost, and a likely one:

  1. The page isn’t indexed. Google drops it (or never adds it), so it can’t rank, and any links pointing at it may not pass value through.
  2. It can waste crawl activity, especially at scale. Because the server keeps returning a success code instead of a 404/410 that tells crawlersA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. “don’t bother,” Google has less signal to stop re-requesting the URL. Google’s documentation doesn’t publish a universal crawl-budget cost, percentage, or ranking effect from this — the practical impact is largest when a site has many soft-404’d URLs, not a guaranteed per-page penalty.

How Google detects them

Detection happens at render time: Google fetches the page, runs the JavaScript, and evaluates the resulting content and available resources against the response code. Google’s current troubleshooting documentation names specific triggers: a missing server-side include file, a broken database connection, an empty internal search results page, or JavaScript that fails to load — any of which can leave a 200 response paired with error-like or effectively empty content.

One older data point worth flagging rather than relying on: in 2021, John Mueller told Search Engine Land that Search Console’s soft-404 status reflected the mobile renderingTurning HTML, CSS, and JavaScript into the final visual page and DOM. of a page specifically, and a desktop-only soft 404 might not surface the same way. That’s a real, on-the-record statement — but it’s several years old, and Google’s current soft-404 documentation doesn’t restate a smartphone-only rule. Treat it as historical color rather than a confirmed current mechanic, and verify any specific URL with URL Inspection’s live test instead of assuming the report is device-complete or fully real-time.

The four buckets of causes

Google’s own troubleshooting documentation names a shorter, more mechanical list — a missing server-side include, a broken database connection, an empty internal search results page, or JavaScript that fails to load. Almost every real-world soft 404 I’ve seen falls into one of four broader buckets that cover those mechanics plus the higher-level causes behind them:

1. Deleted or expired pages that never return a real 404. A page is removed but the CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. (or a catch-all route) still serves a “sorry, not found” template with a 200. Fix: return an actual 404/410.

2. Thin or empty auto-generated pages. Tag or category archives with zero posts, filter combinations that match nothing, and — the classic — empty internal search results pages (“0 results for your query”). These load fine and return 200, but there’s nothing on them. Fix: noindex and/or block the search-results path in robots.txt, or render genuinely useful fallback content (popular pages, related results).

3. Irrelevant or overly broad redirects. This one is widely underexplained. Redirecting a deleted page to your homepage or an unrelated category can itself be reclassified as a soft 404. In my ecommerce out-of-stock guide:

“If you have a similar product that you want to push people toward, you may want to 301 redirect the old product to the new product. This will also maintain any link value if the pages are similar enough. If the pages are not similar enough or you redirect to a category page or your homepage, then these pages may be treated as a soft 404 and the value from links may not be preserved.”

So the redirect existing isn’t enough — its relevance is what determines whether link equity flows or the URL gets reclassified.

4. Rendering failures — often JavaScript. JS-framework and single-page-app sites are structurally prone to soft 404s. A client-side router serves the app shell with a 200 no matter what route is requested, so a nonexistent client route never produces a real HTTP 404 unless the server or edge is explicitly configured to intercept it and return one. The result is a page that renders “404 Page Not Found” as text while the response code stays 200 — a textbook soft 404. Framework fixes: Next.js’s notFound() helper (which returns a real 404), server-side rendering / prerendering that intercepts unknown routes, or an edge-level 404 for paths that don’t exist. Broken server-side includes and failed database calls belong in this bucket too — they leave a mostly-blank page served with 200.

The fix decision tree

TIP Compare the success code with the rendered page

This warning identifies a 200 response whose rendered page looks empty or error-like. It is evidence of the mismatch, not access to Google’s private classification.

Run the URL through my Render Gap Analyzer to check the response, rendered content, and JavaScript failure mode together. Render Gap Analyzer Free

  1. Confirm the public response returns 200 while the rendered page is empty or error-like.
  2. Decide whether the URL is gone, moved, or meant to contain useful content.
  3. Return 404/410, add a relevant permanent redirect, or restore the content, then rerun the URL.
A soft 404 starts with a status-to-content mismatch.

Three branches, driven by one question — should this URL exist?

  • Gone for good → return 404 or 410. Stop serving a 200.
  • Moved or has a genuine equivalent301 to something actually relevant, not a catch-all destination. Redirecting to the homepage to “save” the URL usually backfires into a soft 404.
  • Should exist and has value → fix or expand the content so it no longer reads as empty or error-like, then re-test with URL Inspection and request indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..

Ecommerce: it’s site-size dependent

For out-of-stock and discontinued productsA discontinued product is an item you'll never sell again — the manufacturer stopped making it, or you dropped the line. The SEO decision is end-of-life: 301-redirect the URL to a genuinely similar replacement or the closest relevant category if it earned links or traffic, 404/410 it if it didn't, or keep it live as a Discontinued tombstone page only when it still helps users. This is distinct from a temporary out-of-stock product, which you keep live at 200., there isn’t one right answer — it scales with your site. John Mueller’s general framing (via Search Engine Roundtable) is to “do what works best for the user, and search engines will generally figure it out from there.” Practically: small sites can keep the page and show related products; medium sites often 404 a truly discontinued product (or, if it’s temporarily out, say when it’s coming back); very large sites can automate expiration with the unavailable_after signal. The through-line: don’t mass-redirect discontinued products to the homepage, because that’s exactly the pattern that gets reclassified as a soft 404.

Myths worth killing

  • “Soft 404s are just cosmetic.” No — the page isn’t indexed and its link signals may not pass through. It’s a silent failure mode, not a label you can ignore.
  • noindex fixes a soft 404.” It doesn’t. noindex still returns a 200; the status-vs-content mismatch is untouched, and Google can still classify the page as a soft 404 in reporting. Fix the response code or the content.
  • “Redirecting anywhere avoids a soft 404.” False. An irrelevant redirect (to the homepage or an unrelated category) can be reclassified as a soft 404 and break link-equity consolidation.
  • “Soft 404 is an HTTP status codeAn HTTP status code is the three-digit number a server returns with every response to tell a browser or crawler what happened to its request — success, redirect, client error, or server error. For SEO the code matters as much as the content: it tells Google and Bing whether to index a page, follow a redirect, retry later, or drop the URL from the index..” There’s no such code. It’s a downstream classification — don’t confuse it with 410 or invent a nonstandard code.
  • “A soft 404 always means something’s broken.” Not always. Sometimes it’s a legitimately empty state (an internal search with genuinely zero results). The page isn’t “broken” — you just need to control its indexability rather than fix its content.
  • “GSC tells me about every soft 404 in real time.” Detection can lag and, per Mueller, is tied to mobile rendering. Treat the report as a strong signal, not a complete or instantaneous one.

Where Google actually documents this now

Worth a heads-up if you’re chasing old links: Google has reorganized its crawlingCrawling is how search engines use automated bots (like Googlebot and Bingbot) to discover URLs and download pages. A page has to be crawlable to be indexed, but crawling on its own isn't a ranking factor./indexing documentation more than once, and the URLs keep moving. The standalone “How to fix a soft 404” support answer and the old /search/docs/advanced/crawling/soft-404-errors doc both redirect elsewhere now, and even the newer http-network-errors URL I originally cited here has since 301’d to a restructured developers.google.com/crawling/docs/… path. The current live set is: the Page Indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason. help page (the maintained definition with the fix recommendation), the HTTP status codes doc (the 2xx mechanics, at its new URL), and a newer, more direct crawling-errors troubleshooting page that spells out the causes and the three fix branches explicitly. Old bookmarks may 301 or dead-end — see the Official Docs tab for the current live links.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.