A soft 404 is a URL that tells the server “200 OK, all fine” while the page itself looks like an error, an empty page or a “not found” message. Google’s Page indexing report defines it as a page that “returns a user-friendly ‘not found’ message but not a 404 HTTP response code.” Google keeps those URLs out of its index.
The fix depends on the cause. If the page is truly gone, return a real 404 or 410. If it moved, redirect it to the closest matching page. If it’s a real page that only looks empty, add content until Google stops mistaking it for an error.
I see soft 404s on almost every ecommerce audit I run. They’re rarely a disaster. But they are a sign that the site and Google disagree about what a page is, and that disagreement is always worth settling.
404 vs Soft 404: What’s the Difference?
A normal 404 is honest. The server says the page doesn’t exist, and Google believes it. A soft 404 is a mixed message: the status code says success, while the content says nothing is here.
| Hard 404 (or 410) | Soft 404 | |
|---|---|---|
| HTTP status code | 404 Not Found or 410 Gone | 200 OK |
| What the visitor sees | An error page | An error page, an empty page or thin content |
| Who decides it’s an error | Your server | Google, based on the content |
| Where Search Console shows it | Page indexing report, “Not found (404)” | Page indexing report, “Soft 404” |
| Does it hurt the rest of the site? | No, per Google’s 404 help page | Wastes crawling on pages that will never be indexed |
That last row is the practical point. Google’s 404 help page says plainly that 404s don’t harm your site’s indexing or ranking. Soft 404s are different in one way: Google’s crawl budget documentation says soft 404 pages “will continue to be crawled, and waste your budget.” So a real 404 lets Google move on, while a soft 404 keeps it coming back.
What Does Google Actually Say About Soft 404s?
I always read Google’s own wording before touching a site, because a lot of soft 404 advice online is recycled from docs that Google has since rewritten. Here is what the current documentation says, as of September 2026.
Google’s crawling documentation on HTTP status codes says that for pages returning 2xx, “If the content suggests an error for Google Search, an empty page or an error message, Search Console will show a soft 404 error.” That is the whole test. Google looks at the content, not only the status code.
The Page indexing report help page recommends “returning a 404 response code for truly ‘not found’ pages and adding more information on the page to let us know that it is not a soft 404.” It also tells you how to check: run a live URL inspection test and click View tested page to see how Google renders it.
And Google’s 404 help page has a line I quote to clients often: “Don’t create fake content, redirect to your homepage, or use robots.txt to block 404s.” Every one of those is a common workaround. Every one makes things worse.
Why Is Google Flagging My Page as a Soft 404?
In my audits, nearly every soft 404 falls into one of five causes. Find yours first, because the fixes contradict each other. What saves one page will break another.
- Empty or thin listing pages. A category, tag or filter page with zero products or posts still returns 200, but the content is basically “No items found.” Google reads that as an error page.
- Out-of-stock products. A product page that says “unavailable” with little else can look like a dead end.
- Removed pages redirected somewhere unrelated. Old URLs 301-redirected to the homepage or a generic category. Google’s 404 help page calls redirecting to the homepage instead of returning a 404 “problematic.”
- JavaScript that renders an error. A single-page app whose shell returns 200, then the script shows “Product not found” or fails to load content at all.
- Genuinely broken pages. A database connection drops, a template fails, or the page renders blank for Googlebot while looking fine in your browser.
Out-of-stock pages need a closer look, so I only go as far as Google has gone on record. In a Search Central SEO office-hours session in April 2022, John Mueller said that when Google sees something is out of stock, “we will assume it’s more like a soft 404 error.” He added that a page with a lot of information about the product can still be relevant. That’s all Google has said, and I don’t stretch it further.
How to Diagnose a Soft 404 in Search Console
Open Search Console, go to Indexing, then Pages, and scroll to “Why pages aren’t indexed.” Click the Soft 404 row to see example URLs. Export the list if there are more than a handful, because the pattern matters more than any single URL.
Then take one URL at a time through this sequence:
- Paste it into URL Inspection at the top of Search Console.
- Click Test live URL. The indexed version may be weeks old; the live test shows what Google gets today.
- Click View tested page. Check the screenshot and the rendered HTML. If the screenshot shows an error, a spinner or a blank page, you’ve found a rendering problem.
- Check the HTTP response in the same panel. If it says 200 and the screenshot shows “not found”, that is your soft 404 in plain sight.
- Compare with your browser. If the page looks full for you but empty for Google, the problem is JavaScript, blocked resources or content served only to logged-in users.
One tip that saves me hours: group the exported URLs by folder or template before you inspect anything. Twenty soft 404s under /product-category/ usually share one cause. Twenty random URLs usually mean old redirects.
The Fix Depends on Which Branch You’re On
This is the decision tree I follow. Pick the branch that matches the page, not the one that’s quickest to implement.
Branch 1: The Page Is Gone for Good
If the content was removed and nothing on the site replaces it, return a 404 or 410. Google’s crawling docs treat both the same way: Google stops using the URL over time, and indexed URLs returning 4xx drop out of the index. I use 410 when I want to be explicit that a page was removed on purpose, but it isn’t a ranking lever.
Don’t redirect these to the homepage. Google names that exact move as problematic. It also hides the fact that the page is gone, from visitors and from Google alike.
Branch 2: A Close Replacement Exists
If there is a page that genuinely serves the same need, use a 301 redirect to it. A discontinued product goes to its successor model. An old guide goes to the updated guide on the same topic. Google’s 404 entry in the Page indexing report says a redirect is the better choice when content has moved.
The test I apply: would a visitor who typed the old URL be happy to land there? If the honest answer is “sort of”, return a 404 instead.
Branch 3: The Page Is Real but Looks Empty
If the page should exist and be indexed, give Google something to index. This is the most common case on ecommerce sites. A category with no products gets products, or a proper description and links to related categories. My category page SEO guide covers what that page should contain.
If the page has no search value, such as an internal search results page or a filter combination nobody searches for, add a noindex robots meta tag. Soft 404s on pages you never wanted indexed aren’t worth fighting. The goal is that Google stops wasting visits on them, not that every URL gets indexed.
For out-of-stock products that are coming back, keep the page live and make it useful: specs, photos, reviews, expected availability and links to alternatives. That matches the one thing Mueller said keeps such pages relevant. For products that are gone forever, go back to Branch 1 or Branch 2, and for back-orders, seasonal lines and variants I sort each case in my out of stock products SEO guide.
Branch 4: JavaScript Shows an Error on a 200 Page
Client-side apps often can’t send a real 404, because the server already sent 200 for the app shell before the script decides the product doesn’t exist. Google’s JavaScript SEO basics page offers two ways out. The first is a JavaScript redirect to a URL where the server returns a 404:
fetch(`/api/products/${productId}`)
.then(response => response.json())
.then(product => {
if (product.exists) {
showProductDetails(product);
} else {
window.location.href = '/not-found'; // this URL must return a real 404
}
});
The second adds a noindex robots meta tag when the content is missing:
fetch(`/api/products/${productId}`)
.then(response => response.json())
.then(product => {
if (product.exists) {
showProductDetails(product);
} else {
const metaRobots = document.createElement('meta');
metaRobots.name = 'robots';
metaRobots.content = 'noindex';
document.head.appendChild(metaRobots);
}
});
If your framework supports server-side rendering, I’d rather fix it at the server and return a true 404 status. It’s cleaner and doesn’t depend on Google running your script.
Branch 5: The Page Breaks Only for Google
If the live test screenshot is blank but your browser shows the page fine, check for blocked scripts or CSS in robots.txt, timeouts on slow API calls and anything that needs a cookie or login. Fix the rendering first. Adding content to a page Google can’t render changes nothing.
Soft 404 Decision Matrix
If you skipped straight here, this table is the whole post in six rows.
| If the page | And | Then |
|---|---|---|
| Was removed | Nothing replaces it | Return 404 or 410 |
| Was removed | A close equivalent exists | 301 to that page |
| Is a category or tag page | It should rank | Add products, a description and related links |
| Is an internal search or filter page | It has no search demand | Add noindex |
| Is an out-of-stock product | It’s coming back | Keep it live with full product information |
| Shows an error only when rendered | The site uses client-side JavaScript | Redirect to a real 404 URL, add noindex or render on the server |
How Do You Confirm the Soft 404 Is Fixed?
Once you’ve fixed a pattern, go back to the Soft 404 row in the Page indexing report and click Validate fix. Search Console then tracks the affected URLs and tells you whether validation passed or failed. Don’t expect it to be instant; Google has to recrawl the URLs first.
Two things are normal during validation. URLs you changed to 404 move to the “Not found (404)” row, which is exactly what you wanted. URLs you redirected move to “Page with redirect”. Neither is a new problem.
If fixed pages stay unindexed afterwards, the issue has moved on. Pages that Google knows about but hasn’t crawled are a different problem, which I cover in discovered currently not indexed. Duplicate pages pointing their canonical elsewhere belong in alternate page with proper canonical tag.
When Should You Get Technical Help?
Most soft 404s are fixable by a site owner with CMS access and an afternoon. It gets harder when the cause lives in code: a headless storefront, a single-page app, a custom 404 template that returns 200, or redirect rules nobody documented.
That’s where a developer and a technical SEO should look at it together. My team handles exactly this in our technical SEO service, starting from the crawl and the Page indexing report rather than guesswork. If you want to check the rest of the site while you’re at it, work through my technical SEO checklist or ask for a free SEO audit.
Frequently Asked Questions
Do Soft 404 Errors Hurt My Rankings?
Not directly. Google simply leaves soft 404 URLs out of its index, so those pages can’t rank. The indirect cost is crawling: Google’s crawl budget documentation says soft 404 pages keep getting crawled. On a small site that barely matters. On a large store with thousands of empty filter pages, it can slow down crawling of pages you care about.
Is a Soft 404 Worse Than a Regular 404?
Usually, yes. A regular 404 is a clear signal that Google accepts, and Google’s help page says 404s don’t harm your site’s indexing or ranking. A soft 404 is a mixed signal, so Google has to work out the truth itself and keeps crawling the URL. Honest status codes are almost always better.
Should I Redirect All 404 Pages to the Homepage?
No. Google’s 404 help page specifically warns against redirecting to your homepage instead of returning a 404, and those redirects often get reported as soft 404s anyway. Redirect only when a closely matching page exists. Otherwise let the URL return a 404 or 410.
Can a Page With Real Content Be a Soft 404?
Yes. Google judges the content it renders, so a page with little text, an “out of stock” notice or wording that resembles an error message can be flagged by mistake. Run the live URL inspection test, check the screenshot, and add clear, useful content if the page should be indexed.
Last updated: September 2026 by Mizanur Rahman



