Soft 404 Errors: What They Are and How to Fix Them
A soft 404 is a page that returns HTTP 200 but looks empty or broken to Google — here's why Search Console flags it and what actually fixes it.
What "soft 404" actually means
A real 404 tells the browser and search engines, via the HTTP status code, that the page doesn't exist. A soft 404 is a page that responds with 200 OK — meaning "here's the page you asked for" — but whose actual content looks like an error page, or is empty enough that Google decides it isn't a real page worth indexing. Google is inferring intent from content, not trusting the status code alone.
Why Google bothers flagging this
If your server claims every URL is a valid 200 response, Google can't use the status code to tell real pages from broken ones, so it has to guess from content instead — and it spends crawl and indexing effort doing that guessing across every URL on your site. Soft 404s are also a common side effect of misconfiguration that quietly hides genuinely broken pages from you, since your own uptime checks and error dashboards likely trust the 200 too.
Common causes
- A catch-all route or CMS template that renders a generic "page not found" message but never actually returns a 404/410 status.
- Internal search results pages with zero matches, rendered as a normal page with an empty results list.
- Out-of-stock or removed product pages left live with little or no remaining content.
- Single-page applications where the initial HTML response is always 200, and a client-side router decides afterward whether to show a "not found" state — Google's first-wave crawl of the raw HTML can see this as a thin, contentless page. See JavaScript SEO and indexing.
How to check for them
Search Console's Indexing → Pages report lists a Soft 404 reason under "Not indexed," with the affected URLs. See how to read the full coverage report if you haven't used it before. You can also spot-check any URL directly with the URL Inspection tool, which shows the actual HTTP status Google recorded.
How to fix each case
- Genuinely gone content: return a real
404or410status from your server or framework's not-found handler — don't just change the visible text. - Legitimately thin but real pages (an empty search state, a temporarily out-of-stock item you plan to restock): keep the 200 status, but add enough real content — related items, a restock note, category links — that the page reads as intentional rather than broken.
- Pages you don't want indexed at all but also don't want to 404 (a valid empty state a user can legitimately land on): add a noindex tag instead of leaving it ambiguous to Google.
Want your next page found faster than organic crawling alone?
IndexLaunch pushes every URL you submit straight to Bing, Yandex, Seznam, and Naver via IndexNow the moment you queue it.
See Pricing