Reading
What a soft 404 is, and why it is the most expensive one
A soft 404 is a URL that returns 200 OK while the page itself tells the visitor the content is gone. The server says the request succeeded. The page says it failed. Every tool that reads the status line and not the body calls it healthy.
Soft 404 vs hard 404
A hard 404 returns the status 404 Not Found, so every crawler, monitor and browser agrees the page is gone. A soft 404 returns 200 OK and only the visible text says so.
The difference is which layer carries the truth. In a hard 404 it is the status line, which is machine-readable and therefore acted on automatically. In a soft 404 it is the body — and almost nothing reads the body. That is the entire reason the cheap failure is loud and the expensive one is silent.
Where they come from
Almost never on purpose. The four common causes:
- A CMS catch-all. The template renders a friendly “nothing here” page and the framework never sets the status.
- A single-page app with no matching route. The shell loads with a 200 and the router paints a not-found view client-side. The HTML that came off the wire was fine.
- A deleted product, listing or location. The page is generated from a record that no longer exists, so it renders empty rather than missing.
- A migration that dropped a path prefix. The old URL still resolves to something, which is the worst possible outcome, because a hard 404 would have been noticed in minutes.
Why it is worse than a real 404
A hard 404 is loud. Uptime monitors alert on it, ad platforms frequently flag it, and somebody notices. A soft 404 is silent by construction, and silence is expensive in exact proportion to how fast you are spending.
At $58.59 a minute — one real advertiser’s spend rate across three campaigns — a soft 404 that survives one working day costs about $28,000. There is no counterfactual to argue about: a page that cannot convert converts nobody, so every dollar pointed at it is waste.
How to find soft 404 errors
Read the body, not the status line. Fetch each URL you are paying to send traffic to and match the rendered text against a short list of gravestone phrases: page not found, we couldn’t find, this page doesn’t exist, no longer available.
Two traps worth naming, because both produce alerts people learn to ignore:
- A page about 404s is not a 404. “How to fix 404 errors on your site” matches a naive phrase list. Keep the list short, anchor it to sentences a visitor would be shown, and record which phrase matched so a false positive is obvious rather than mysterious.
- Check as a phone. Most paid clicks are mobile. A consent interstitial, an app-install wall or a geo-redirect that only fires for a mobile user agent will never appear in a desktop check.
What a soft 404 means in Google Search Console
Search Console reports these under Pages as Soft 404. It means Googlebot fetched the URL, got a 200, and decided from the content that there was nothing there — so the URL is excluded from the index.
Two things worth being clear about, because the report is often misread. It is a statement about the content, not about your server config — though a missing 404 status is usually the underlying cause. And it is a lagging indicator: Google tells you days or weeks after the fact, on a crawl schedule you do not control. For an organic page that is an inconvenience. For a page three campaigns are pointing at, weeks is the whole budget.
How to fix soft 404 errors
Return the real status. A page that does not exist should answer 404 or 410; a page that moved should answer 301 to the specific replacement, not to the homepage. Redirecting every dead URL to the homepage is the second most expensive pattern in this list — the visitor is not told anything is wrong, the click is spent, and the status is 200 again.
Then watch the destinations continuously rather than at deploy time. The failures that cost real money are the ones introduced by somebody else’s change on an ordinary Tuesday.
Watch your ad destinations for this
VampireAI checks every landing page you are paying for, every five minutes, from a mobile user agent — following redirects, reading the body, and confirming across two checks before it wakes anybody.