Google flagged your page as a soft 404 — but the page exists and loads fine. Now what?
This is one of the most misunderstood reports in Google Search Console because "soft 404" isn't a server error. It's Google's opinion that your page looks like a dead end, even though your server says otherwise. Sometimes Google is right. Sometimes it's wrong. The fix depends entirely on which scenario you're dealing with.
This guide gives you a repeatable workflow to diagnose soft 404s, decide whether they need fixing, apply the correct fix pattern, and verify the issue is resolved.
Who this guide is for
SEO practitioners and site owners who see "Submitted URL seems to be a Soft 404" or "Soft 404" exclusions in Google Search Console's Pages report — and need to decide what to do about them.
How this guide was built
Cross-referenced Google's official documentation on soft 404 detection, analyzed the top-ranking articles on this topic, and distilled the diagnosis patterns that come up repeatedly in technical SEO audits — particularly on ecommerce sites and content-heavy CMS platforms where soft 404s appear at scale.
What Is a Soft 404?
A soft 404 is a label Google applies to a page that returns an HTTP 200 (OK) status code but appears to contain no useful content — or content that signals "this page doesn't exist."
It is not a server status code. Your server never sends a "soft 404." Google assigns this classification after crawling and rendering the page.
In plain terms: your server says "everything is fine," but Google looks at the page and thinks "this is basically a 404."
Where soft 404s appear in Google Search Console
You'll find them in two places:
| Location | What it means |
|---|---|
| Pages > Not indexed > Soft 404 | Google crawled the URL and decided not to index it |
| Pages > Error > Submitted URL seems to be a Soft 404 | The URL is in your sitemap, but Google refuses to index it |
The "Error" version is more urgent because you explicitly told Google this page matters (by including it in your sitemap), and Google disagrees.
Soft 404 vs. Hard 404 vs. 410: Quick Comparison
| Signal | HTTP status | Who decides | Effect on indexing |
|---|---|---|---|
| Hard 404 | 404 Not Found | Your server | Google drops the URL from its index |
| 410 Gone | 410 Gone | Your server | Google drops the URL faster (signals permanent removal) |
| Soft 404 | 200 OK | Google's algorithm | Google refuses to index despite the 200 status |
The key distinction: hard 404s and 410s are explicit signals you control. Soft 404s are Google's judgment call — which means they can be wrong.
The First Thing to Check: Is Google Right or Wrong?
Before fixing anything, open the flagged URL and ask one question: does this page deliver value to a user who lands on it?
Decision framework
Is the page genuinely empty, broken, or useless?
├── YES → Google is right. Apply the appropriate fix (see Fix Patterns below).
└── NO → Google is wrong. The page has real content.
├── Is Google being blocked from rendering it? (JS, CSS, auth)
│ ├── YES → Fix the rendering/access issue.
│ └── NO → Is the content thin or using "404-like" language?
│ ├── YES → Rewrite the problematic content.
│ └── NO → Request re-indexing and monitor.
In practice: roughly 70% of soft 404 reports are legitimate — the page really is empty or broken. The other 30% are false positives caused by rendering issues, thin content, or unfortunate wording.
What Causes Soft 404s (and the Fix for Each)
Cause 1: The page IS a 404 but returns HTTP 200
Your custom 404 page displays an error message ("Page not found," "This page doesn't exist") but your server returns a 200 status code instead of 404 or 410.
Why it happens: Misconfigured CMS or server. Common in WordPress sites with poorly coded themes, or when a catch-all route serves the 404 template without setting the correct status code.
Fix: Configure your server or CMS to return the proper HTTP status code (404 or 410) for pages that don't exist. Then remove these URLs from your XML sitemap.
How to verify: Use curl -I <url> or Google Search Console's URL Inspection tool. The HTTP status should show 404 or 410, not 200.
Cause 2: Empty or near-empty pages
Pages with little to no meaningful content: empty category pages, tag pages with zero posts, search result pages with no results, product pages with no inventory.
Why it happens: CMS generates the URL automatically even when there's nothing to show. Common on ecommerce sites (empty product categories), WordPress (empty tags/archives), and faceted navigation.
Fix (choose one):
| Scenario | Best action |
|---|---|
| Page will never have content | Return 404/410. Remove from sitemap. |
| Page might have content later | Add noindex via meta robots or X-Robots-Tag. Remove from sitemap. |
| Page should have content now | Add real, useful content to the page. |
Cause 3: Redirects to irrelevant pages
You're redirecting a deleted URL to the homepage or a broadly irrelevant page. Google treats this as a soft 404 because the redirect destination doesn't satisfy the original query intent.
Why it happens: Mass redirects during site migrations, or ecommerce sites redirecting discontinued products to the category page or homepage.
Fix: Redirect to the most relevant alternative page. If no relevant alternative exists, return a 404 or 410 instead — it's better than a misleading redirect.
The rule: A redirect should only go to a page that satisfies the same user intent as the original URL. Homepage redirects almost always trigger soft 404s.
Cause 4: Content uses "404-like" language
The page has real content, but it contains phrases that trigger Google's soft 404 classifier:
- "not found"
- "no longer available"
- "item not available"
- "does not exist"
- "out of stock" (in some contexts)
- "no results found"
- "this page has been removed"
Why it happens: Product pages showing "out of stock" messages, search pages with zero results, pages with user-facing error messages that aren't actually 404s.
Fix: Rewrite the language. Instead of "This product is no longer available," try "This product is currently unavailable — here are similar options:" followed by actual alternatives. Give the page enough unique, useful content that Google sees value beyond the error-like phrase.
Cause 5: Google can't render the page
Google is blocked from accessing CSS, JavaScript, or other resources needed to render your page content. The raw HTML (before JS execution) looks empty, so Google classifies it as a soft 404.
Why it happens:
robots.txtblocks CSS/JS files- JavaScript framework renders content client-side but Google's renderer fails
- Authentication walls or geo-restrictions block Googlebot
- CDN or firewall blocks Googlebot's IP range
Fix:
- Use URL Inspection > "Test Live URL" > view the rendered screenshot
- Check if content appears in the rendered HTML
- If it doesn't: unblock the resources in robots.txt, or implement server-side rendering for critical content
Step-by-Step Diagnosis Workflow
Use this workflow when you have soft 404s to triage:
Step 1: Export the list
In Google Search Console, go to Pages > filter by "Soft 404" or "Submitted URL seems to be a Soft 404." Export the full list.
Step 2: Categorize by URL pattern
Group URLs by pattern. This tells you whether you have a systemic issue or isolated pages:
| URL pattern | Likely cause |
|---|---|
/tag/* or /category/* with no posts |
Empty taxonomy pages |
/product/* for discontinued items |
Redirect or content issue |
/search?q=* |
Empty search results pages |
/page/2/, /page/3/ (pagination) |
Paginated pages with no content |
| Random assortment | Likely individual page issues |
Step 3: Spot-check with URL Inspection
Pick 3-5 representative URLs from each pattern group. For each:
- Open the URL in your browser — does it have content?
- Run URL Inspection in GSC — check the rendered screenshot and HTTP response code
- Compare what you see vs. what Google sees
Step 4: Apply the fix pattern
Match each group to the appropriate cause above and apply the fix.
Step 5: Validate and request re-indexing
After fixing, use URL Inspection > "Request Indexing" for a sample of URLs. Monitor the Pages report over the following 2-4 weeks.
Bulk Triage: When You Have Hundreds of Soft 404s
Large sites (especially ecommerce) often surface hundreds or thousands of soft 404s. Prioritize:
- Fix sitemap URLs first — "Submitted URL seems to be a Soft 404" errors mean your sitemap is promising pages Google won't index. Clean your sitemap.
- Fix by pattern, not by page — if 500 URLs follow the same pattern (e.g., empty
/tag/*pages), fix the template or rule once. - Ignore excluded URLs that should be excluded — if Google correctly identifies pages as useless and excludes them, and you don't want those pages indexed anyway, this isn't a problem to solve.
Priority matrix
| Condition | Priority | Action |
|---|---|---|
| In sitemap + has traffic/ranking potential | High | Fix immediately |
| In sitemap + genuinely useless | Medium | Remove from sitemap |
| Not in sitemap + excluded | Low | No action needed |
| False positive (real content, rendering issue) | High | Fix rendering/access |
Verification Checklist
After applying fixes, confirm resolution:
- URL returns correct HTTP status code (check with
curl -I) - If 404/410: URL is removed from XML sitemap
- If content fix: page has substantial, unique content visible to Googlebot
- If redirect fix: destination is topically relevant to the original URL
- If rendering fix: URL Inspection shows content in rendered HTML
- URL Inspection shows "URL is on Google" or "Crawled - currently not indexed" (no longer "Soft 404")
- Issue count in GSC Pages report decreases over 2-4 weeks
Do Soft 404s Hurt SEO?
Soft 404s don't directly cause a ranking penalty. But they create real problems at scale:
Crawl budget waste. Every soft 404 Google crawls is a crawl slot not spent on a page that could rank. On sites with thousands of pages, this matters.
Sitemap trust erosion. If your sitemap contains many URLs that Google classifies as soft 404s, Google may reduce trust in your sitemap overall — crawling submitted URLs less frequently.
Lost ranking opportunity. If Google incorrectly flags a valid page as a soft 404, that page won't appear in search results until you resolve the issue.
User experience. If soft 404 pages do appear in search results (before Google catches them), users land on dead-end pages.
For most sites under 10,000 pages, a handful of soft 404s won't cause measurable harm. At scale (50,000+ pages), systematic soft 404 issues can significantly impact crawl efficiency and indexation rates.
Dev Ticket Template
When you need to hand off soft 404 fixes to a developer:
Title: Fix soft 404 errors — [pattern description]
Context:
Google Search Console reports [X] URLs as soft 404.
These URLs match the pattern: [URL pattern]
Root cause: [cause from diagnosis]
Requirements:
- [ ] [Specific technical fix needed]
- [ ] Affected URLs removed from XML sitemap (if returning 404/410)
- [ ] Changes deployed to staging for verification before production
Verification:
- curl -I [sample URL] returns expected status code
- URL Inspection in GSC shows correct rendering
- Monitor GSC Pages report for 2-4 weeks post-deploy
Priority: [High/Medium/Low based on priority matrix]
Affected URLs: [count] — see attached export
Audit Notes Template
Use this format when documenting soft 404 findings in a site audit:
## Soft 404 Findings — [Site Name] — [Date]
### Summary
- Total soft 404s reported: [X]
- In sitemap (error status): [X]
- Excluded (not in sitemap): [X]
### Pattern Analysis
| Pattern | Count | Root cause | Recommended fix | Priority |
|---------|-------|-----------|-----------------|----------|
| [URL pattern] | [X] | [cause] | [fix] | [H/M/L] |
### False Positives Identified
- [URL]: [reason Google is wrong + evidence]
### Recommended Actions (ordered by priority)
1. [Action + expected outcome]
2. [Action + expected outcome]
### Expected Timeline
- Fixes deployed: [target date]
- Validation period: 2-4 weeks post-deploy
- Next check: [date]
FAQ
Does a soft 404 mean my page is penalized?
No. A soft 404 means Google has chosen not to index the page — it's an indexing decision, not a penalty. Your other pages are unaffected. However, if the pattern is widespread, it can waste crawl budget.
Should I fix soft 404s that appear as "Excluded" rather than "Error"?
Only if the excluded pages are ones you actually want indexed. If Google correctly excluded pages you don't care about (empty tags, outdated search result pages), you can safely ignore them. Focus on the "Error" status — those are pages in your sitemap that Google won't index.
How long does it take for soft 404 fixes to be reflected in GSC?
Typically 2-4 weeks after Google re-crawls the URL. You can speed this up by requesting indexing via URL Inspection, but Google still processes changes on its own timeline.
Can I just noindex soft 404 pages instead of fixing them?
Yes, if you don't want those pages indexed. Adding a noindex directive tells Google explicitly not to index the page. However, the "Soft 404" label may persist in GSC even with noindex — it'll just move to a different exclusion reason. The better long-term fix is to either serve proper 404 status codes or add real content.
Why does Google flag my page as a soft 404 when it has content?
Common causes: Google can't render the JavaScript that loads the content, the page uses language that triggers Google's soft 404 classifier ("not found," "no longer available"), or the content is thin enough that Google considers it functionally empty. Check the rendered screenshot in URL Inspection to see what Google sees.
My ecommerce site has thousands of soft 404s from discontinued products. What's the best approach?
Don't redirect them all to the homepage — Google will flag those redirects as soft 404s too. Instead: redirect to the most relevant alternative product or category page. If no relevant alternative exists, return a 410 (Gone) status code. Remove all affected URLs from your sitemap. Implement this as a rule in your CMS rather than fixing URLs one by one.
If you're triaging soft 404s across a large site, SEO Heatmap helps you visualize which sections of your site are affected and where to focus your crawl budget. Give it a try — it's free.