Soft 404: make the page real or let it return a 404
The page loads with a success code, but Google thinks it looks like an error or an empty page. Here is what the status means, what usually causes it, and how to decide between a 404, a redirect, and more content.
What the status means
In the Page indexing report, "Soft 404" means the URL returned a 200 status code, but the page Google rendered looked like a "not found" page, an error, or an empty page. Google leaves it out of the index.
The server said success
The URL returned a 200 status code, not a 404 or 410.
The page looked like an error
Google read the rendered page and saw a "not found" message, an error, or little or no main content.
Google left it out
The page is not indexed. It is fixed when the status code and the page agree.
Definition from Google's Page indexing report help page.
Why Google sees the page as a soft 404
Google decides based on the content it renders. These are the usual reasons a 200 page looks like an error to it.
A "not found" page that returns 200
The page tells visitors it does not exist, but the server sends a 200 status code. Custom error pages and catch-all routes often do this by default.
Empty search, category, or tag pages
An internal search with no results, or a category or tag page with no items, has nothing on it except the template.
Out of stock or expired with nothing else
A product, listing, or job page that only says it is unavailable, with no details, alternatives, or other useful content.
Thin placeholder pages
Pages published before they have content, such as "coming soon" pages, empty profiles, or templates with no fields filled in.
A JavaScript app renders an error or nothing
Client-side routing serves 200 for every URL, then shows a "not found" view or a blank screen. Scripts or API calls that fail for Googlebot have the same effect.
Error text in a working response
A broken database connection, a missing include file, or a missing JavaScript file leaves an error message or an empty page behind a 200 status code.
Redirects to an unrelated page
Sending many old URLs to the home page, or another page that does not replace them, can be treated as a soft 404.
Check the page for empty or thin content
Paste the URL from Search Console. The free checker shows whether Google can reach the page, whether it redirects, and reviews the content for thin or empty writing that could look like an error page.
Progress
Checks that completed before it stopped are shown below.
Access and indexing settings
Content review
Already in Google?
Not checked
This check cannot confirm whether your page is already in Google, and it does not predict the outcome. It shows what could stand in the way.
· this address redirects to , which was not checked. Run a separate check on it.
Only part of this long page was reviewed.
Good to know
Completed before the check stopped
Use the free indexability checker at /tools/indexability. Enter a public page address and it reports whether the site lets Google visit the page, whether the page carries a noindex setting or points to another page as the original, and whether the content is thin, repeated, or unclear. It does not tell you whether Google has indexed the page.
Fix it in this order
First find out what Google saw. Then pick one fix per URL: a 404 for pages that are gone, a redirect for pages that moved, or real content for pages that should be indexed.
- 1
Look at what Google rendered
Run a live test in URL Inspection and click View tested page. Check the HTTP response code and the screenshot. A blank page, a near blank page, or an error message explains the status.
- 2
If the page is gone, return a 404 or 410
For pages you removed with no replacement, send a real 404 or 410 status code. You can keep a friendly error page with links to your site. Only the status code needs to change.
- 3
If it moved, redirect to the equivalent page
Use a 301 redirect when there is a page that genuinely replaces this one. Do not send unrelated URLs to the home page.
- 4
If the page should exist, give it real content
Fill in placeholder pages, add details and alternatives to out of stock pages, and stop publishing empty search, category, or tag pages. Pages you cannot fill yet can be left out with a noindex tag or a 404.
- 5
Fix rendering for JavaScript pages
Make sure scripts, API calls, and other resources load for Googlebot and are not blocked by robots.txt. In a single-page app, redirect missing routes to a URL that returns 404, or add a noindex tag to the error view.
- 6
Then resubmit pages that should be indexed
Once the page returns 200 with real content, run the live test again, then request indexing in URL Inspection or submit the URL with Index My Site.
When resubmitting helps, and when it will not
Submitting asks Google to crawl the page again. It only helps if the page Google finds next time returns 200 and has real content.
It helps when
- You added real content to a page that should be indexed
- You fixed scripts or resources so the main content now renders for Googlebot
- You removed error text from a page that works
- A live test in URL Inspection now shows the full page
It will not help when
- The page has not changed since Google flagged it
- The page is gone and should return a 404 or 410 instead
- It is an empty search, category, or tag page
- The URL now redirects: submit the destination page instead
When you submit a URL, we check it first and skip redirects, noindex pages, robots.txt blocks, error pages, and pages that point to another page as the original, without charging. Then we help Googlebot discover and crawl it and search Google for the exact URL after 24 hours, again around days 3 and 7 if it is not found yet, with a full report around day 5and final checks around day 14. A URL confirmed as not indexed gets its standard credit back. Google still decides what it indexes. See Submitting URLs for the details.
Soft 404 vs Not found (404)
Both mean the page is not indexed. A 404 is the server saying the page does not exist. A soft 404 is Google deciding the page looks missing even though the server said it was fine.
| Question | Soft 404 | Not found (404) |
|---|---|---|
| What the server sent | A 200 success status code | A 404 status code |
| What Google saw | A page that looks like an error, a "not found" message, or an empty page | A page that says it does not exist, which is what the status code says too |
| Is it a problem? | Usually. The server and the page disagree, so either the code or the page is wrong | Not if the page was removed on purpose. Google says 404s are fine for pages with no replacement |
| What to do | Return a 404 or 410 if the page is gone, redirect if it moved, or add real content if it should exist | Nothing if the page is gone. Redirect it if it moved, or restore it if it was removed by mistake |
| Does submitting help? | Only after the page returns 200 with real content | No. Submit the page that replaced it, if there is one |
- What the server sent
- Soft 404A 200 success status code
- Not found (404)A 404 status code
- What Google saw
- Soft 404A page that looks like an error, a "not found" message, or an empty page
- Not found (404)A page that says it does not exist, which is what the status code says too
- Is it a problem?
- Soft 404Usually. The server and the page disagree, so either the code or the page is wrong
- Not found (404)Not if the page was removed on purpose. Google says 404s are fine for pages with no replacement
- What to do
- Soft 404Return a 404 or 410 if the page is gone, redirect if it moved, or add real content if it should exist
- Not found (404)Nothing if the page is gone. Redirect it if it moved, or restore it if it was removed by mistake
- Does submitting help?
- Soft 404Only after the page returns 200 with real content
- Not found (404)No. Submit the page that replaced it, if there is one
Other Page indexing statuses
Each reason in the report needs a different fix. Find the one Search Console shows you.
Discovered - currently not indexed
Google found the URL but has not crawled it yet.
Crawled - currently not indexed
Google crawled the page and chose not to index it for now.
Duplicate without user-selected canonical
The page does not name a main version, so Google picked another URL as the original.
Duplicate, Google chose different canonical than user
The page names itself as the main version, but Google picked another URL instead.
Alternate page with proper canonical tag
The page points to another page as the main version, and Google agreed.
Excluded by 'noindex' tag
The page tells Google not to index it.
Blocked by robots.txt
Your robots.txt file stops Googlebot from crawling the page.
Page with redirect
The URL redirects to another page, so Google does not index this URL.
Tools for getting pages indexed
Every Page indexing status
What each reason in the report means, whether it needs fixing, and whether submitting helps.
Free indexability checker
The full checker page, with notes on what each result means and what to do next.
Indexing API
Submit fixed pages from your own code with one API key and track each one until it is indexed.
Automatic indexing
Submit pages every time you publish or fix them, from your sitemap, your deploy, or your agent.
Frequently asked questions
It is a URL that returns a 200 (success) status code but shows a page that looks like an error to Google: a "not found" message, an error message, or a page with no main content. Google excludes these pages from Search. Google recommends returning a 404 for pages that really do not exist, and adding more content to pages that do.
Google judges the page it rendered, not the one you see in your browser. If scripts, images, or API calls failed to load, were blocked by robots.txt, or were too slow, Googlebot may have seen a blank or near blank page. Run a live test in URL Inspection and look at the screenshot and response code.
Source: Google Search Central: Troubleshoot Google Search crawling errors
It depends on what happened to the page. If it was removed with no replacement, return a 404 or 410. If it moved or has a clear replacement, use a 301 redirect to that page. Do not redirect many old URLs to the home page: Google says that can be treated as a soft 404 too.
With client-side routing the server often returns 200 for every URL. Google suggests two options for routes that do not exist: redirect with JavaScript to a URL where the server returns a 404, such as example.com/not-found, or add a robots noindex meta tag to the error view.
Source: Google Search Central: Understand the JavaScript SEO basics
The flagged URLs are left out of Search. Google does not say they count against your other pages. They do waste crawls on pages that will not be indexed, and a soft 404 on a page that should rank is a lost page. Fix those first.
We check the page for redirects, noindex tags, robots.txt blocks, and error pages, then help Googlebot discover and crawl it. We check every URL once after 24 hours. Your full report follows around day 5, with final checks around day 14. If Google has not indexed the URL at the final check, the standard credit comes back. Submitting does not change how Google judges the page, so fix the content or the status code first.
Each sent URL costs 1 credit, which is $0.20, or $0.10 on purchases of $1,000 or more. URLs skipped before sending are not charged.
What is a soft 404?
It is a URL that returns a 200 (success) status code but shows a page that looks like an error to Google: a "not found" message, an error message, or a page with no main content. Google excludes these pages from Search. Google recommends returning a 404 for pages that really do not exist, and adding more content to pages that do.
Why does Google call my page a soft 404 when it works for me?
Google judges the page it rendered, not the one you see in your browser. If scripts, images, or API calls failed to load, were blocked by robots.txt, or were too slow, Googlebot may have seen a blank or near blank page. Run a live test in URL Inspection and look at the screenshot and response code.
Source: Google Search Central: Troubleshoot Google Search crawling errors
Should I fix a soft 404 with a 404 or a redirect?
It depends on what happened to the page. If it was removed with no replacement, return a 404 or 410. If it moved or has a clear replacement, use a 301 redirect to that page. Do not redirect many old URLs to the home page: Google says that can be treated as a soft 404 too.
How do I avoid soft 404s in a single-page app?
With client-side routing the server often returns 200 for every URL. Google suggests two options for routes that do not exist: redirect with JavaScript to a URL where the server returns a 404, such as example.com/not-found, or add a robots noindex meta tag to the error view.
Source: Google Search Central: Understand the JavaScript SEO basics
Do soft 404s hurt the rest of my site?
The flagged URLs are left out of Search. Google does not say they count against your other pages. They do waste crawls on pages that will not be indexed, and a soft 404 on a page that should rank is a lost page. Fix those first.
What does Index My Site do with a submitted URL?
We check the page for redirects, noindex tags, robots.txt blocks, and error pages, then help Googlebot discover and crawl it. We check every URL once after 24 hours. Your full report follows around day 5, with final checks around day 14. If Google has not indexed the URL at the final check, the standard credit comes back. Submitting does not change how Google judges the page, so fix the content or the status code first.
What does it cost?
Each sent URL costs 1 credit, which is $0.20, or $0.10 on purchases of $1,000 or more. URLs skipped before sending are not charged.
Fixed the page? Ask Google to crawl it again
Resubmit fixed pages from the web app, the API, the CLI, or your AI agent. Credits start at $25.