Page indexing report · Search Console
Soft 404
The page says “200 OK”, but Google thinks it looks like a “not found” page, so it isn’t indexed.1 For pages that are really gone, that’s fine. For real pages, it usually means Google got an empty or broken version. Here’s how to tell which, and what to fix.
Check the URL first
The checker shows the status code, whether the page looks empty or error-like before and after JavaScript, and whether the site returns 200 for URLs that don’t exist. It can’t see what Google received on its last crawl. URL Inspection can.
In 30 seconds
- A soft 404 is a page that returns 200 but looks like an error or is empty to Google.3
- Gone pages should return 404 or 410. Moved pages should 301 to a close replacement.2
- Real pages flagged as soft 404 usually failed to render, or show wording that reads as an error.2
- Redirecting old pages to the homepage doesn’t avoid it. Google can treat that as a soft 404 too.5
What the status means
Google’s definition: the URL returns a user-friendly “not found” message, but not a 404 status code. Google recommends returning a 404 for pages that are really missing, and adding more information to pages that aren’t.1
Unlike a 404, a soft 404 isn’t something your server says. It’s Google’s reading of the page. When a page returns 200 but its content suggests an error, is empty or shows an error message, Search Console reports it as a soft 404.3 Google then leaves it out of search results.2
The judgement is made after Google has fetched and, where needed, rendered the page, as part of deciding what to index. Select a stage to see what happens there.
Discover
Google learns that a URL exists, mostly from links on pages it already knows and from XML sitemaps.
What goes wrong: Nothing links to the page and it isn’t in a sitemap, so Google never hears about it.
Report statuses at this stage
- URL is unknown to Google (shown in URL Inspection, not in the report)
Crawl
Googlebot checks robots.txt, then requests the URL. It spaces requests out so it doesn’t overload the server.
What goes wrong: The URL is blocked, returns an error, or the server is slow, so Google backs off and crawls less.
Report statuses at this stage
Render
Google runs the page’s JavaScript in a recent version of Chrome to see the finished page.
What goes wrong: Content only appears after a click or scroll, or the scripts fail, so the rendered page is nearly empty.
Report statuses at this stage
- No status of its own. Problems show up at the next stage as thin pages or soft 404s.
Index
Google decides which version of the page to keep and whether it is worth storing at all.
- Group duplicates. Pages with the same or very similar content go into one group.
- Pick a canonical. One URL represents each group. Canonical tags, redirects and sitemaps are hints, not commands.
- Select for the index. Google decides whether the canonical page is worth keeping. Google says this largely depends on quality.
What goes wrong: The page duplicates another, is marked noindex, or Google decides it adds too little to keep.
Report statuses at this stage
Serve
Indexed pages can appear in search results. Being indexed is not the same as ranking; an indexed page can still get no clicks.
What goes wrong: The page is indexed but doesn’t match what people search for, or other pages answer it better.
Report statuses at this stage
Is it a problem?
Usually fine
- Deleted pages that show a “not found” message (though a real 404 is better)
- Internal search URLs with no results
- Discontinued products with no replacement
- Old, expired listings you don’t want in search
Worth fixing
- Real pages with content you want indexed
- Many URLs flagged at once after a release or migration
- Products that are only temporarily out of stock
- Old URLs redirected to the homepage
- A site that returns 200 for any URL, including ones that don’t exist
Find the cause
The report doesn’t say what made the page look like an error. Answer a few questions to narrow it down. Each cause is explained below.
The page is gone, but returns 200
The classic case. A CMS or app shows a friendly “not found” page but sends a success status. Google’s fix is to return 404 or 410, with a useful custom error page if you like.2 For Google, the two codes behave the same: all 4xx errors except 429 tell it the content doesn’t exist.3
Google got an empty or broken page
Google lists causes that only show up at crawl time: a missing server-side include, a failed database connection, JavaScript files that didn’t load, or a page with no main content and a prominent error message.2 Check the rendered HTML in URL Inspection. If it’s blank, look for resources blocked by robots.txt, server errors, too many resources or slow loading.
The wording reads as an error
Mueller explained in 2019 that Google’s systems can flag product pages with a “no longer available” banner as soft 404s.6 The same applies to pages that are mostly “no results”. Empty internal search results are on Google’s own list.2
Redirects to the homepage or unrelated pages
In a 2016 hangout, Mueller said redirecting all pages to the homepage is something Google would see as soft 404s.5 Glenn Gabe’s migration case studies the same year reported spikes in soft 404s after redirects to less relevant pages.8
JavaScript apps that always return 200
A single-page app often serves the same shell, with 200, for every path, and only discovers later that the content doesn’t exist. Splitt described exactly this in 2025.7 Google’s JavaScript guide gives two workarounds: redirect to a URL that returns 404, or add a noindex tag with JavaScript.4 Streaming frameworks have the same issue: Next.js fixes the status at 200 once streaming starts.9
Real soft 404 examples and their fixes
Pick an example to see why Google flags it and what to do.
Empty search results
A site search URL with no matches, returning 200 and “No results found”. Google names empty internal search results as a soft 404 cause.2
Fix: return 404 when there are no results, or add noindex to search pages and keep them out of your sitemap.
Empty category or tag page
A shop category with no products, or a tag with no posts. On the page it’s a heading and an empty grid, which looks like the empty, error-like pages Google describes.3
Fix: fill it, merge it into a parent category with a 301, or return 404 until it has items.
Discontinued product
A product page with a banner saying the item is no longer available. Mueller has said Google’s systems can read such banners as a soft 404.6
Fix: if a successor exists, 301 to it without the unavailability message. If not, a 404, 410 or the soft 404 itself is accurate. For a temporary stock gap, keep the full page and show alternatives.
Failed render or database error
The page usually works, but when Google fetched it a database call failed, an include was missing or the JavaScript didn’t load, and Google got an error message or a near-blank page.2
Fix: look at the rendered page in URL Inspection, unblock needed resources in robots.txt, and make real errors return a 5xx status rather than 200.
Redirect to the homepage
Deleted pages all 301 to the homepage. Mueller has said Google sees this as soft 404s.5 In case studies of large migrations in 2016, Glenn Gabe saw soft 404 warnings follow redirects to less relevant pages.8 Those are observations from a few sites, not a controlled study.
Fix: redirect each URL to its closest equivalent, or return 404.
Single-page app route
The server sends the same app shell with 200 for every path, and JavaScript shows “Page not found”. Splitt has pointed to this as a common mistake.7
Fix: Google suggests either a JavaScript redirect to a URL that returns 404, or adding a robots noindex tag to error pages with JavaScript.4
if (!product) {
const meta = document.createElement('meta');
meta.name = 'robots';
meta.content = 'noindex';
document.head.appendChild(meta);
}Next.js streamed not-found
Once a streamed response starts, its status is fixed at 200. If notFound() runs after that, Next.js adds a noindex tag to the HTML instead, and its docs note some crawlers may label these soft 404s.9
Fix: look up the content before any Suspense boundary or loading.js renders, and call notFound() there, or check the slug in Proxy, so the response is a real 404.
const post = await getPost(slug);
if (!post) notFound(); // before anything suspendsHow to fix it
- Export the URLs from the report row and group them by template or folder.
- For each group, decide: gone, moved or real. Gone pages return 404 or 410. Moved pages 301 to the closest replacement.2
- For real pages, run a live test in URL Inspection and compare the screenshot and HTML with what you see in a browser. Fix whatever stops the main content reaching Google.2
- Remove error-like wording from pages that should rank, and add the information that shows the page is real.1
- Make sure unknown URLs on your site return 404, not 200.
- Validate the fix in the report, or request indexing for a few key URLs.
What other guides get wrong
Claims found in popular guides to soft 404s:
| Often said | What’s actually true |
|---|---|
| Thin content is the main cause | Google’s documented causes are pages that look empty or like errors, and pages Google couldn’t load fully. Google has published no word count.2 |
| Fix it with a 301 redirect | Only to a close replacement. Mueller has said blanket redirects to the homepage are themselves treated as soft 404s.5 |
How long it takes
Google gives no timeline for a soft 404 to clear after a fix. What it does say:
- Next crawlis when Google sees the new status code or content. Google doesn’t say when that will be.
- Up to about 2 weeksfor Search Console to validate a fix, sometimes longer.1
Soft 404 vs Not found (404)
| Soft 404 | Not found (404) | |
|---|---|---|
| Status code sent | 200 (success) | 404 |
| Who decides | Google, from the page’s content3 | Your server |
| Indexed? | No | No; previously indexed URLs are removed3 |
| Right for a missing page? | No, return a real 404 | Yes |
Questions
What is the difference between a soft 404 and a 404?
A 404 is a status code the server sends to say a page doesn’t exist. A soft 404 is Google’s judgement that a page returning 200 looks like an error or is empty. Both keep the URL out of the index, but a real 404 is the clear, correct signal for a missing page.
Is a soft 404 bad for SEO?
For a page that’s really gone, not much: it just stays out of the index. It’s a problem when real pages are flagged, because they won’t appear in search, or when a whole template returns 200 for missing URLs.
Why is my page a soft 404 when it has content?
Google may have received a different version from the one you see: a blank render, a database error or a page missing its main content. Check the rendered HTML in URL Inspection. The page may also contain wording that reads as an error, such as “no longer available”.
Should I redirect soft 404 pages to the homepage?
No. Google’s John Mueller has said redirecting old pages to the homepage is treated as soft 404s anyway. Redirect to a close replacement, or return 404 or 410.
Are out-of-stock product pages soft 404s?
They can be. Google’s systems can read “no longer available” banners as an error page. For items coming back, keep the full product page and show alternatives; for discontinued items, redirect to a successor or return 404.
How do I fix soft 404s in a React or Next.js app?
Return a real 404 status from the server for unknown routes. In Next.js, call notFound() before the response starts streaming. If you can’t control the status, Google suggests redirecting with JavaScript to a URL that returns 404, or adding a noindex tag.
Sources
- Google, “Page indexing report”, Search Console Help
- Google, “Troubleshoot Google Search crawling errors”, Search Central, updated December 2025
- Google, “How HTTP status codes, and network and DNS errors affect Google Search”, Search Central, updated February 2026
- Google, “Understand the JavaScript SEO basics”, Search Central, updated March 2026
- John Mueller (Google), Webmaster Central hangout, October 2016, reported by Search Engine Roundtable
- John Mueller (Google), Webmaster Central hangout, February 2019, reported by Search Engine Journal
- Martin Splitt (Google), SEO for Paws conference, March 2025, reported by Search Engine Journal
- Glenn Gabe, “Proof that 301 redirects to less relevant pages are seen as soft 404s”, GSQi, July 2016 (case studies of several large site migrations)
- Vercel, “loading.js”, Next.js documentation, updated September 2026