A normal broken page is easy to deal with: a visitor (or a crawler) requests a URL that doesn't exist, the server replies with a 404 Not Found status, and everyone - search engines included - understands the page is gone. A soft 404 is sneakier: the page looks broken or empty to a human, but the server responds with a 200 OK status as if everything's fine. Search engines end up trying to index a page that's effectively saying "there's nothing here" while insisting it's a real, valid page.
What Actually Counts as a Soft 404
- A deleted product or listing page that redirects to the homepage or a generic category page instead of returning a proper 404 - the destination loads fine, so the server says 200, but it isn't the content that was requested or linked to.
- An empty search results page, an out-of-stock product with no content left on it, or a "no results found" message - all served with a normal 200 status.
- A custom error page that displays "Page Not Found" text to visitors but was built without actually setting the HTTP status code to 404 or 410, so crawlers never see the error.
Why It's a Real Problem, Not Just a Label
- Wasted crawl budget. Every soft 404 a crawler fetches and evaluates is a request it didn't spend on your real, valuable pages.
- Low-value pages compete for indexing. A near-empty "page" that returns 200 can still get indexed, sitting in search results as thin, unhelpful content that reflects badly on the rest of the site.
- It hides genuine problems. If your migration or redirect logic is silently sending deleted URLs to the homepage instead of erroring properly, that same logic is probably mishandling other broken links too - the soft 404 is often the visible symptom of a wider redirect or routing issue.
Common Causes
- Overly broad "catch-all" redirects - a site-wide rule that sends any unrecognised path to the homepage, instead of only redirecting genuinely moved content and letting truly gone URLs return 404.
- CMS or framework defaults that render a "not found" template but never actually set the response status - especially common on client-rendered single-page apps where routing happens in JavaScript after the server has already returned 200 for the initial request.
- Discontinued products or expired listings left live with placeholder or empty content instead of being redirected to a genuinely relevant replacement or returned as 404/410.
How to Check and Fix It
- Check Google Search Console's Page Indexing report for the "Soft 404" status - it lists exactly which URLs Google has flagged.
- Spot-check manually: request a URL you know should be gone and check the actual HTTP status code (a browser's network tab, or
curl -I <url>, will show it) rather than trusting what the page visually displays. - Fix the routing, not just the page. If content is genuinely gone, return a real
404(or410 Goneif it's permanent and you want to signal that explicitly) instead of redirecting to an unrelated page. If it should redirect, send it somewhere genuinely relevant - not a blanket homepage redirect.
The Fast Way to Check Yours
AuditCrow's free scan checks your site's status codes as part of its crawlability review, flagging soft 404s and other response-code issues automatically. For the rest of the technical fundamentals worth checking alongside it, see our technical SEO checklist and what is a technical SEO audit.