How to Fix Soft 404 Errors: Complete Troubleshooting Guide
Learn how to identify and fix soft 404 errors that hurt your SEO. Step-by-step guide to resolving soft 404s in Google Search Console.
Soft 404 errors are one of the most confusing issues in SEO. Unlike regular 404s, soft 404s don’t return a 404 status code—but Google treats them as if they do.
Here’s how to identify and fix soft 404 errors on your website.
What Is a Soft 404 Error?
A soft 404 occurs when a page:
- Returns a 200 (OK) status code
- But displays content that looks like an error page
Google detects these pages and treats them as 404s, meaning they won’t be indexed.
Example scenarios:
- Empty pages with headers/footers but no content
- Pages that say “No products found” or “Page not found”
- Out-of-stock product pages with minimal content
- Search results pages with no results
- Thin content pages
Why Soft 404s Are Problems
1. Wasted Crawl Budget
Google crawls these pages thinking they’re valid, only to find they’re not useful. This wastes crawl budget that could be spent on real content.
2. Poor User Experience
Users clicking from search results land on empty or unhelpful pages.
3. Diluted Link Equity
Internal links pointing to soft 404 pages pass link equity to dead ends.
4. Index Bloat Prevention
Google’s soft 404 detection is designed to keep low-quality pages out of the index—but it can be overly aggressive.
Finding Soft 404 Errors
Google Search Console
- Go to Indexing > Pages
- Look for “Soft 404” in the “Not indexed” section
- Click to see affected URLs
Screaming Frog
- Crawl your site
- Go to Response Codes > Client Error (4xx)
- Filter by “Soft 404” if detected
Manual Testing
- View the page
- Check the HTTP status code (DevTools > Network)
- Does the content look like an error page?
Common Causes of Soft 404s
1. Out-of-Stock Product Pages
E-commerce sites often show minimal content when products are unavailable:
<!-- Triggers soft 404 detection -->
<h1>Product Name</h1>
<p>This product is currently unavailable.</p>
2. Empty Category/Tag Pages
Categories or tags with no posts:
<h1>Category: Vintage Watches</h1>
<p>No products found in this category.</p>
3. Parameter URLs with No Results
Search or filter pages returning empty results:
/search?q=asdfghjkl
/products?filter=nonexistent
4. Paginated Pages Beyond Content
Pagination pages that don’t exist:
/blog/page/999/
5. Deleted Content with Redirect Issues
Content was deleted but redirects don’t work properly, showing an error message with 200 status.
6. JavaScript Loading Failures
Pages that fail to load content via JavaScript, leaving empty containers:
<div id="content">
<!-- JavaScript should populate this but failed -->
</div>
How to Fix Soft 404 Errors
Fix 1: Return Actual 404 Status Code
If the page truly doesn’t have content, return a real 404:
// Next.js example
export async function getServerSideProps({ params }) {
const product = await getProduct(params.id);
if (!product) {
return { notFound: true }; // Returns 404
}
return { props: { product } };
}
Fix 2: Add Meaningful Content
If the page should exist, add substantial content:
Out-of-stock products:
<h1>Product Name</h1>
<p>Price: $99.99</p>
<p>This product is temporarily out of stock.</p>
<!-- Add value even when unavailable -->
<h2>Product Description</h2>
<p>Full product description here...</p>
<h2>Product Specifications</h2>
<ul>
<li>Specification 1</li>
<li>Specification 2</li>
</ul>
<h2>Similar Products</h2>
<!-- Show alternatives -->
Empty categories:
<h1>Vintage Watches</h1>
<p>Description of this category...</p>
<h2>Coming Soon</h2>
<p>We're adding products to this category.</p>
<h2>Related Categories</h2>
<!-- Show alternatives -->
Fix 3: Noindex Thin Pages
If you can’t add content but don’t want a 404, use noindex:
<meta name="robots" content="noindex, follow">
This tells Google not to index while still allowing link following.
Note: Google may still report soft 404s for noindexed pages. The key is they won’t affect your indexed pages.
Fix 4: Block with Robots.txt
For patterns of URLs you don’t want crawled:
User-agent: *
Disallow: /search/
Disallow: /*?filter=
Disallow: /*?q=
Fix 5: Redirect to Relevant Pages
If content moved or was consolidated:
# Old URL -> Relevant new URL
301 /old-product/ /replacement-product/
# Deleted category -> Parent category
301 /category/old-subcategory/ /category/
Fix 6: Fix JavaScript Rendering
If JavaScript fails to load content:
- Test page rendering in Search Console
- Fix JavaScript errors
- Implement server-side rendering
- Add fallback content for failed loads
Fix 7: Handle Empty Search Results
For search/filter pages with no results:
Option A: Return 404 for impossible searches
if (results.length === 0 && queryIsInvalid) {
return { notFound: true };
}
Option B: Provide helpful content
<h1>Search Results for "query"</h1>
<p>No results found for your search.</p>
<h2>Suggestions</h2>
<ul>
<li>Check your spelling</li>
<li>Try broader terms</li>
</ul>
<h2>Popular Products</h2>
<!-- Show popular items -->
Option C: Noindex search result pages
<meta name="robots" content="noindex">
Specific Scenarios
E-Commerce: Out-of-Stock Products
Best approach:
- Keep the page with full product info
- Mark as out of stock clearly
- Show when it might be back
- Suggest similar products
- Offer email notification signup
<h1>Premium Widget XL</h1>
<div class="product-status">
<p>Currently Out of Stock</p>
<p>Expected back: February 2025</p>
<button>Notify Me When Available</button>
</div>
<h2>About This Product</h2>
<p>Full description...</p>
<h2>Specifications</h2>
...
<h2>Similar Products</h2>
<div class="product-grid">
<!-- Related products -->
</div>
E-Commerce: Discontinued Products
Options:
- 301 redirect to replacement product
- 301 redirect to category page
- 410 status (Gone) if truly gone
- Keep page with clear messaging and alternatives
Pagination
For pagination that goes beyond content:
// Return 404 for pages beyond content
if (page > totalPages) {
return { notFound: true };
}
Or implement proper pagination with rel=“prev” and rel=“next”.
Soft 404 Audit Process
- Export soft 404 URLs from Search Console
- Categorize issues:
- Out-of-stock products
- Empty categories
- Search results
- Deleted content
- JavaScript issues
- Prioritize by traffic potential
- Apply appropriate fix for each category
- Request re-indexing after fixing
- Monitor for resolution
Prevention Strategies
1. Content Validation
Before publishing, ensure pages have substantial content.
2. Automated Monitoring
Set up alerts for:
- Pages with less than X words
- High bounce rate pages
- Pages with “not found” or “no results” text
3. Product Lifecycle Management
Plan for product end-of-life:
- Redirect to replacements
- Maintain content until replacement found
- Use 410 for truly discontinued
4. Proper Error Handling
Ensure your CMS/framework returns correct status codes for missing content.
Soft 404 Fix Checklist
- Export all soft 404 URLs from Search Console
- Categorize by cause
- For missing content: Return actual 404 or 410
- For thin content: Add substantial content
- For unavailable products: Keep full info + alternatives
- For empty categories: Add descriptions and related items
- For search pages: Noindex or add helpful content
- For JavaScript issues: Fix rendering
- Request re-indexing for fixed pages
- Monitor Search Console for resolution
Related Resources:
Tags:
Share this article:
Ready to improve your SEO?
Get a free SEO audit and see exactly what needs fixing on your site
Start Free Audit