If Search Console lists some of your pages as “Soft 404”, Google has decided those pages look like error pages even though your server says they are fine. A soft 404 is a URL that returns a 200 OK status code (the “success” signal) but shows a “not found” message, an empty page or almost no main content. Google keeps these pages out of its search results.
The fix is usually simple once you know which kind of soft 404 you have. Below I cover the causes, how to find them, how to fix each type, and when to leave them alone.
What Is a Soft 404 Error?
Every time a browser or Googlebot asks for a page, your server answers with a status code. A 200 means “here is the page”. A 404 means “this page does not exist”. A 410 means “this page is gone for good”.
A soft 404 happens when those two signals disagree. The server sends 200, but the page itself says something like “Sorry, we couldn’t find that” or shows nothing useful at all. Google notices the mismatch and labels the URL as a soft 404 instead of trusting the status code.
Here is a simple example. Someone types example.com/shoes/red-runner-42, but that product was deleted. Instead of a real 404, your shop shows a friendly “Product not found” message with a 200 status. For a person, that looks like an error page. For Google, it is a page that claims to work but doesn’t. That is a soft 404.
Google’s definition also covers pages with no main content, so a page can be flagged even if it never says “not found”.
Soft 404 vs Real 404 vs 410
Here is how they compare.
| Response | Status code sent | What the visitor sees | What Google does |
|---|---|---|---|
| Real 404 | 404 | A “page not found” message | Drops the URL from the index and crawls it less over time |
| 410 | 410 | A “page gone” message | Treats it much like a 404 and removes the URL |
| Soft 404 | 200 | An error message, empty page or very thin page | Flags it as a soft 404, keeps it out of results, but may keep crawling it |
A real 404 is not a problem in itself. It is the honest answer for a page that no longer exists. If you want a refresher on what each code tells Google, I covered them in my guide to HTTP status codes and SEO.
Why Soft 404 Errors Matter
The first problem is user experience. Google points out that returning a success code and then showing an error is confusing. The visitor thinks they reached a working page, and then they hit a dead end.
The second problem is crawling. In its guide on crawl budget for large sites, Google says soft 404 pages will continue to be crawled and waste your crawl budget (the number of URLs Googlebot is willing and able to crawl on your site). A real 404, on the other hand, is a strong signal not to crawl that URL again.
The third problem hurts most. Sometimes Google flags a page you actually want in search, and it quietly drops out of the index. In my experience, this is the case worth chasing first.
Common Causes of Soft 404 Errors
When I audit a site, the soft 404 list almost always falls into a handful of patterns. Knowing the pattern tells you the fix.
Empty Category and Internal Search Pages
A category page with zero products looks empty to Google. The same goes for filtered pages like “red shoes in size 14” that return no results, and for internal search pages that say “0 results found”.
The template loads fine, so the server sends 200, but the main area is blank or says “no results”. I usually see this on ecommerce sites after a seasonal range is removed and the category pages are left behind.
Out-Of-Stock and Discontinued Products
Google’s John Mueller has said that when a product page clearly shows the item is unavailable, Google may treat it more like a soft 404 and drop it from results. This is not automatic. A page that still has useful information, such as specs, reviews or details about when the product returns, can stay indexed.
So a page that shows only “Out of stock” next to an empty product box is at risk. A full product page with a clear stock notice is usually fine.
Thin or Nearly Empty Pages
Pages with almost no main content can also be flagged. Common examples:
- Tag pages with a single short post excerpt.
- Auto-generated location pages with just a heading and a contact form.
- Author or profile pages with a name and nothing else.
If a page has a header, footer and sidebar but nothing meaningful in the middle, Google may decide it isn’t a real page.
Redirecting Old URLs to the Home Page
This is the cause I see most often after a site redesign. Someone deletes hundreds of old pages and sets up a rule that sends every missing URL to the home page with a 301 redirect.
It feels tidy, but Google has said for years that redirecting a removed page to an unrelated page, like the home page, can be treated as a soft 404. The visitor wanted a specific thing and got a generic page instead.
JavaScript Errors and Failed Rendering
Google renders pages (runs the JavaScript to build the final page) before it decides what the page contains. If that rendering fails, Google may see an empty shell or an error message instead of your content.
Google’s docs list the usual reasons a good page gets flagged this way:
- The page did not load properly for Googlebot.
- Critical resources, like JavaScript or CSS files, were missing or blocked by robots.txt.
- The page showed a prominent error message during rendering, for example a failed API call that printed “Something went wrong”.
- Resources were too slow or too large to load.
Single-page apps (sites where JavaScript handles all the page changes) are especially prone to this. The server often returns 200 for every URL, even ones the app then shows as “not found”.
Custom Error Pages That Return 200
A custom 404 page helps lost visitors, but the server must still send a 404 status code with it.
Some content management systems and hosting setups send 200 with the error page by mistake, which turns every broken link into a soft 404. This is one of the first things I check on a new site.
How to Find Soft 404 Pages in Search Console
Only Search Console shows which URLs Google itself has labelled as soft 404s. Crawling tools can guess, but they can’t see Google’s decision.
Use the Page Indexing Report
- Open Search Console and choose your property.
- Go to Indexing, then Pages.
- Scroll to the table called Why pages aren’t indexed.
- Click the row named Soft 404. If it isn’t there, Google hasn’t flagged any soft 404s right now.
- Look at the chart for sudden jumps, then review the example URLs below it. Google shows up to 1,000 examples.
- Export the list so you can sort the URLs into groups.
Google describes this row in its Page indexing report help page: the page returns a user-friendly “not found” message but not a 404 response code. Note that the Source column for soft 404s says “Website”, which means the fix is in your hands.
My habit is to sort the export by URL folder first. Usually one or two folders, like /category/ or /search/, explain most of the list. Then I can fix a template once instead of chasing single URLs.
Check Single URLs With URL Inspection
For any URL you think should be indexed, the URL Inspection tool shows you what Google saw.
- Paste the URL into the search bar at the top of Search Console.
- Click Test live URL to fetch the current version.
- Click View tested page.
- Open the Screenshot tab to see how Google rendered the page.
- Check the HTML tab to see whether your main content is in the rendered code.
- Open More info to look for page resources that couldn’t be loaded and JavaScript console errors.
A blank screenshot, a spinner or an error message means a rendering problem. If the screenshot looks fine, the page is probably too thin or reads too much like an error page.
Confirm the Status Code Yourself
Check what your server really sends, either in your browser’s developer tools (Network tab) or with a quick command-line request:
curl -I https://www.example.com/old-product
HTTP/2 200
content-type: text/html; charset=UTF-8
If a page you deleted answers HTTP/2 200, your server is creating soft 404s. Test a made-up URL like /this-page-does-not-exist-123 too. It should answer 404.
How to Fix Soft 404 Errors
Before fixing anything, ask one question for each group of URLs: should this page exist? Your answer decides the fix.
The Page Is Gone: Return a Real 404 or 410
If you removed the page and there is no replacement with similar content, Google recommends returning a 404 or 410. Keep your helpful custom error page, but make sure the server sends the right code with it.
A good custom 404 page says clearly that the page wasn’t found, keeps your normal design and menu, and links to popular sections or a search box.
Google treats 404 and 410 almost the same way. I use 410 when I know a whole section is gone for good, and 404 for everything else. In my experience, choosing between them makes very little difference. If a removed page needs to disappear from results quickly, I explain when that makes sense in my guide to the Search Console Removals tool.
The Page Moved: Redirect to the Closest Match
If the content moved or there is a clear replacement, use a 301 (permanent) redirect to that specific page. A discontinued product can go to its newer model. An old blog post can go to an updated version on the same topic.
The key word is “relevant”. Don’t send everything to the home page or to a top-level category just because it’s easy. If there is no close match, a 404 is the more honest and more useful answer. After setting redirects, check a few with URL Inspection to confirm they return the right code.
The Page Should Exist: Add Content or Fix Rendering
If Google flagged a page you want indexed, find out why it looks empty or broken.
- Thin page: add real, useful content to the main area. For a service page, that could mean pricing details, process steps and common questions. For a tag page with one post, I’d usually merge it or noindex it rather than pad it.
- Empty category: if products are coming back, add a short category description, related categories and a note about restocking. If the category is gone, return a
404or redirect to the closest parent category. My guide to ecommerce category page SEO covers how to make these pages worth indexing. - Out-of-stock product: keep the full description, specs and reviews visible. Show the stock status clearly, and link to similar products. If the product is never coming back, redirect to a close alternative or return a
404. - Internal search results: I add a
noindexrobots meta tag to internal search pages. They rarely deserve a place in Google, and empty ones cause soft 404s. - Rendering problem: unblock any CSS or JavaScript files in robots.txt, fix failing API calls, and make sure errors in one script don’t stop the main content from loading.
Single-Page Apps: Two Options From Google
In a JavaScript app, the server often can’t return a real 404 for a missing item because the app decides what to show after loading. Google’s JavaScript SEO basics guide suggests two ways around this.
The first is to send the visitor with JavaScript to a URL where the server does return a 404:
fetch(`/api/products/${productId}`)
.then(response => response.json())
.then(product => {
if (product.exists) {
showProductDetails(product);
} else {
// the server returns a 404 status for this URL
window.location.href = '/not-found';
}
});
The second is to use JavaScript to add a noindex robots meta tag to the error view, so Google knows not to index it. This only works if the page doesn’t already have another robots meta tag. If your framework supports server-side rendering, returning the right status code from the server is the cleaner fix, and that is what I’d recommend where possible.
Validate the Fix in Search Console
Once you’ve fixed every URL in the group, go back to the Soft 404 row in the Page indexing report and click Validate fix. Google will recrawl the affected URLs. It says validation usually takes up to about two weeks.
Validation stops if Google finds even one URL that still has the problem, so I check a good sample myself before clicking. If it fails, find the URL that caused it, fix it and start again.
URLs you fixed with a 404 will move to the “Not found (404)” row. That is expected.
When a Soft 404 Is Fine to Leave Alone
Not every soft 404 needs work. Search Console reports what Google saw, not what you must fix.
A soft 404 is usually fine when:
- The URL really should not be in Google, such as an old search results page, an expired filter URL, or a broken link someone else made to your site.
- The page is gone and nothing links to it from your own site.
- The number is small and stable compared with your total page count.
Here Google has already reached the right result: the URL is out of the index. A proper 404 is still tidier, especially on large sites, but I wouldn’t put it above pages you want to rank.
A soft 404 is a real problem when:
- Important pages you want indexed appear in the list.
- The count jumps suddenly, which often points to a template change, a broken deploy or a migration.
- Your custom 404 page returns
200, so every broken URL is affected. - Large numbers of old URLs redirect to the home page.
My rule of thumb: check the soft 404 row monthly, and always after a redesign, platform change or big product clear-out.
Mistakes I See When People Fix Soft 404s
A few fixes make things worse rather than better:
- Adding filler text. Generic paragraphs don’t make an empty page useful. If the page has no real purpose, remove it properly.
- Blocking soft 404 URLs in robots.txt. This stops Google from crawling them, so it never sees your
404ornoindex. Blocked URLs can also stay in the crawl queue longer. - Forgetting internal links. After removing pages, update menus, sitemaps and in-content links so you aren’t sending people and Googlebot to dead URLs. Your XML sitemap should list only pages that return
200and that you want indexed.
Conclusion
A soft 404 is Google’s way of saying “your server says this page works, but it looks broken or empty to me”. Sort the flagged URLs into groups, decide whether each page should exist, and then return a real 404 or 410, set up a relevant 301, or give the page real content that renders properly.
Start with the Soft 404 row in your Page indexing report today and look for pages you actually want in search. If you find whole sections of empty or orphaned pages, it’s often a sign of a deeper structure problem, and my guide to site architecture for SEO is a good next step.



