Direct answer: a soft 404 occurs when Google interprets a URL as an error page even though the response does not return a true missing-page status. The common pattern is 200 OK plus a “not found” message, an empty template, or no usable main content. Confirm the response and rendered page first. Then restore the intended content, return 404 or 410, redirect to a genuinely relevant replacement, or keep the page if the diagnosis is wrong.
This guide owns one narrow job: resolving a URL that behaves like a missing or empty page while its technical response suggests success. It is not a general HTTP status glossary, and it does not replace the broader Crawled - currently not indexed diagnosis for a complete, useful page.
Recognize the pattern before changing the URL
“Soft 404” is Google's interpretation of the page, not an HTTP status emitted by your server. Google says its systems can classify a page this way when the content indicates that the resource does not exist, when the page is empty, or when important content cannot load. That means the same report label can point to a real missing page, a template defect, a failed API request, or a page whose main value is absent during rendering.
| Observed state | Likely meaning | First action |
|---|---|---|
200 plus a visible “not found” message | The application presents an error while the server reports success | Decide whether the URL is gone, moved, or should still exist |
200 plus a shell with no main content | A template, data source, include, or rendered resource may have failed | Inspect the rendered HTML, screenshot, console, and network dependencies |
200 plus a valid but intentionally sparse page | The page may be valid, or Google may be reading weak error-like signals | Verify the purpose and whether the essential answer is actually present |
301 to the homepage or an unrelated category | The redirect destination does not satisfy the old URL's intent | Choose a relevant replacement or return a real missing status |
Helpful custom error design plus actual 404 | The server and page agree that the resource is missing | Keep it unless navigation or stale-link cleanup still needs work |
A custom 404 page is not a soft 404 merely because it looks friendly. The problem is a mismatch between the response, rendered content, and real state of the resource.
1. Define the intended outcome
Before opening Search Console, state what should be true for a visitor requesting the exact URL. Does a current page belong there? Has the resource permanently moved? Is it intentionally gone? Is the route valid for users but not useful as a search landing page? The correct technical outcome follows that product and content decision.
Save the exact URL, expected page purpose, current owner, and closest possible replacement. Do not begin with “Where can I redirect it?” Redirecting is only one outcome, and it requires a destination that answers substantially the same need.
2. Capture the response and redirect chain
Request the exact production URL without relying only on the browser's visible design. Record the first response, every redirect hop, and the final response. Test representative variants if routing differs by trailing slash, letter case, parameters, device, language, authentication, or user agent.
- A valid page should normally resolve directly to a stable
200. - A permanently moved page should use a direct
301or308to a relevant working destination. - A missing page without a suitable replacement should return
404or410. - An intermittent
5xx, blocked request, or login response is a different failure and should be diagnosed as such.
Check headers and status outside the browser UI with your normal crawler, developer tools, or a command-line request. A polished error template can hide a 200; a visually normal shell can hide a failed main-content request.
3. Inspect what Google rendered
Open the exact URL in Search Console's URL Inspection tool and run a live test when the page may have changed. Use View tested page to inspect the screenshot, rendered HTML, and loaded resources. The indexed view can reflect an older crawl, while the live test shows whether Google can currently fetch and process the page. Neither view guarantees indexing.
Compare three versions side by side:
- The server response and initial HTML.
- The page after normal browser rendering.
- The HTML and screenshot shown by the live URL test.
Look for the actual heading, primary copy, product or category records, navigation context, and useful links. A title tag and shared layout are not enough if the main content is missing. Also look for explicit error phrases, zero-result messages, placeholder copy, and a canonical that points somewhere unexpected.
4. Find the cause behind the false success
Fix the cause that produces the empty or error-like response. Common failures include a missing server-side include, database lookup returning no record, a client-side request failing, blocked JavaScript or CSS, a route that always serves the application shell, and an internal search or category template that returns 200 for every empty result.
- Template failure: shared chrome loads, but a missing variable or include removes the page-specific body.
- Data failure: the route exists, but the backing product, article, location, or inventory record does not.
- Rendering failure: initial HTML is thin and the required JavaScript or API response fails for Google.
- Routing failure: unknown paths fall back to
index.htmland keep a success status. - Intent failure: an expired or empty page remains live without a useful answer or an honest missing state.
Reproduce the failure at the template or route level. If several URLs share it, repair the generator or server rule rather than editing examples one by one.
5. Choose the correct outcome
| Real page state | Correct outcome | Implementation |
|---|---|---|
| The intended content still exists | Restore | Repair content, data, and required resources; return a complete 200 |
| The resource is permanently gone and has no replacement | Remove | Return 404 or 410; remove stale sitemap entries and internal links |
| The resource permanently moved to a close replacement | Redirect | Use one server-side permanent redirect to the relevant final 200 URL |
| The page is valid for users but should not appear in search | Keep outside search | Return useful content with 200, allow crawling, apply noindex, and remove it from the sitemap |
| The page is useful and the soft 404 classification appears wrong | Keep and clarify | Preserve the URL, ensure the core answer renders, and remove misleading error-like signals |
For a client-side application, prefer a server or edge response that returns the correct status for unknown routes. Google's JavaScript SEO guidance describes two fallbacks when that is not feasible: redirect the failed route to a server-handled 404 page, or add noindex dynamically on the error view. A real server status is easier to reason about and validate.
If the page is intentionally retired, use the old page decision framework to include demand, links, business value, and replacement intent. Do not preserve an empty 200 simply because the URL once had traffic.
6. Fix the template or inventory source
A complete repair aligns all systems that describe the URL. Update internal links, navigation, sitemap generation, canonicals, structured data, feeds, inventory records, and redirects to reflect the chosen outcome. A deleted URL should not remain in a canonical sitemap. A restored page should not keep an error heading. A redirect source should not remain the preferred internal destination.
For ecommerce and directory sites, define states explicitly. An out-of-stock item may remain useful when it contains real product information, availability context, and alternatives. A permanently discontinued item with no useful ongoing purpose may need removal. An empty category may need inventory restored, a useful explanation and alternatives, or a missing status if the category itself no longer exists.
7. Validate locally and in Search Console
Test the implemented outcome before asking Google to recrawl it. Confirm the first response and final destination, then inspect the rendered body at mobile and desktop sizes. Validate a representative set if a shared rule changed many URLs.
- The intended status is returned consistently, without a chain or loop.
- The rendered page contains the expected main content or honest missing-page design.
- The canonical and robots directives match the chosen outcome.
- Sitemaps list only preferred indexable URLs.
- Internal links no longer point to retired or redirected URLs.
- Important JavaScript, API, image, and stylesheet resources load for the rendered page.
Then run a live URL test. Request indexing only for a restored or corrected page that should be indexed. For a removed URL, let the correct response and cleaned discovery signals communicate the change. Search Console reports can lag, so record the implementation date and verify the live state instead of repeatedly changing a correct fix.
Mistakes that create or preserve soft 404s
- Redirecting every deleted URL to the homepage or one broad category.
- Returning
200on a not-found template because the design loaded successfully. - Adding filler text to an empty page without restoring its real purpose.
- Blocking the error URL in robots.txt, which prevents Google from seeing the response and page directives reliably.
- Applying
noindexacross valid pages instead of fixing the shared rendering or data failure. - Requesting indexing before the response and rendered content agree.
- Treating a report label as proof of the page's exact current response without testing the URL.
Legitimate 404 responses are normal web maintenance. The goal is not to eliminate every missing URL. The goal is to make the server, page content, and real resource state tell the same story.
Evidence basis
Google Search Central and Search Console documentation were checked on August 30, 2026. The diagnosis order and outcome matrix are FloxoLab implementation frameworks, not a claim that one report proves the underlying cause.
- Google Search Central: troubleshoot crawling errors and soft 404s
- Google Search Console Help: Page indexing report
- Google Search Central: JavaScript SEO, status codes, and rendered content
- Google Search Central: redirects and Google Search
- Google Search Central: avoid irrelevant redirects during URL changes
- Google crawling documentation: HTTP status codes
Need the false-success pages separated from real 404s?
FloxoLab can trace response, rendering, template, and inventory evidence, then map each URL pattern to the correct implementation.
Explore the SEO audit