ShipworkSite inspection
Soft 404s

Crawlability

PaginationAre paginated pages set up right?Internal searchIs site search eating crawl budget?URL parametersAre parameters creating duplicates?Log analyserWhat does Googlebot actually crawl?Robots builderNeed a robots.txt file?Soft 404sAre pages “not found” but returning 200?JavaScriptCan crawlers see it without running JS?FreshnessIs my site quietly going stale?Robots.txtDoes robots.txt say what I think?

Indexing

Sitemap lastmodAre my sitemap dates valid?SitemapIs my sitemap actually fetchable?IndexingIs Google allowed to index my pages?CanonicalsIs Google indexing the wrong URL?Index signalsDo sitemap and index signals agree?Sitemap generatorNeed a sitemap.xml for my site?Bulk URL statusWhere does each of these URLs really land?Redirect builderNeed the redirect rules?RedirectsAre my URLs answering directly, over HTTPS?

On-page

Keyword ideasWhat are people searching for?SERP previewHow does my page look in Google?Content qualityAre your pages too thin or too alike?Image weightAre images slowing the page?CannibalizationAre pages competing with each other?On-page checkDoes the page use its target phrase?ImagesAre my images accessible and loading?Meta tag builderWhat should my title and share tags say?DuplicatesDo my pages compete for one query?

Links

Orphan pagesWhich pages can no link reach?Link graphHow deep do your pages sit?Anchor textDo links say what they point at?Outbound linksAre external links still alive?Broken linksAre internal links sending visitors nowhere?

Structured data

Rich resultsIs my markup eligible for a rich result?Structured dataIs my product schema valid?Schema coverageDo my key pages carry structured data?Social previewHow does my page look when shared?Schema vs pageDoes markup match the page price?Schema builderNeed valid JSON-LD?

International

Hreflang sitemapDo page and sitemap hreflang agree?HreflangDo my language versions link back?Hreflang builderNeed the hreflang tags?Redirect planMy site has dead links — what redirects do I write?Sitemap diffIs anything missing from my sitemap?Robots simulatorWhat does my robots.txt actually block?Can Googlebot?Can Googlebot fetch this URL?
Every error, explainedGuides
Pricing Learn Error guides Run free audit
Sign in

Sign in free and get one more free check this month. Your account keeps your reports, watches and connections on any device.

Sign in with GoogleOpens your account, or creates a free one Sign in with work emailWe email you a 6-digit code PricingPlans and credit packs for the paid jobs

All errorsSoft 404

Why does Search Console report a soft 404 when your page returns 200?

What the error means

A soft 404 is a URL that appears to Google to be an error or an empty page, although the server returns a successful response such as HTTP 200. Search Console may also use this label when a page has very little useful content. The status is Google’s assessment of the page, not an HTTP status code.

Why Google rejects it

Common causes include a custom “page not found” template returning 200, a product page whose product data failed to load, an empty category, or a page that only works after client-side JavaScript runs. A page can look normal to an administrator while visitors and Google receive a nearly empty response.

How to fix it

  1. Inspect the URL with Search Console’s live test and open the page as a logged-out visitor. Check whether the main content appears in the rendered page and whether the page is actually useful.
  2. If the page is genuinely missing, return 404 or 410. Do not leave a not-found message behind a 200 response.
  3. If the page should exist, restore its content and make the important text or product details available when Google renders the page. Check theme, app, API, and database errors.
  4. For a thin but valid page, add the information visitors came for. Do not add filler merely to change Google’s classification.
  5. If the content moved, redirect to the closest relevant replacement. Then test the live URL and request indexing for important fixed pages.
  6. For the underlying diagnosis and examples, see the soft 404 guide.

Common causes

The not-found template returns HTTP 200

A theme can display “page not found” while its server response still says 200 OK. Google sees both the response and the page content, so a successful status cannot turn a missing page into a valid result. Inspect the exact URL's response headers as well as the visible error design.

A product page renders without its product data

The URL may be valid but an app, API, or catalog lookup fails, leaving an empty title, no description, or a generic unavailable message. An administrator can miss this because their session or cached product data makes the page appear normal. Compare the public page with its source and test it without cookies.

A thin category has no useful inventory or content

An empty collection or category can return 200 but offer nothing a visitor came to browse. If it is a temporary stock condition, the page may need useful alternatives or a clear explanation; if it has no continuing purpose, returning a gone response may be more accurate.

A redirect sends many missing URLs to a generic page

Routing rules sometimes send deleted pages to the home page or a broad category instead of returning a not-found response. The destination loads successfully but does not answer the original request, which can make the old URL look like a soft 404 to Google.

Important content appears only after a failing script

A page shell may load with 200 while the JavaScript request for its main product or article content fails. If the crawler's rendered view remains empty or error-like, Google can classify the URL as a soft 404. Check browser console and network requests, plus Search Console's rendered page.

Fix it on your platform

On Shopify

  1. Open the exact product, collection, or page URL in a private window and compare it with the theme preview. Confirm the primary content appears without an admin session or app-dependent personalization.
  2. For a retired product, decide whether a relevant replacement exists. Use a direct redirect only to that equivalent item; otherwise let the removed URL return a real not-found response rather than redirecting every removed product to the home page.
  3. Review app blocks and theme sections that fetch product details asynchronously. If the product template can render an empty shell when data is absent, add a meaningful fallback or correct the app/data failure.
  4. Check that an empty collection is not included in prominent navigation or the sitemap unless it has a useful purpose for customers.

On WooCommerce

  1. Test the product or category as a logged-out visitor and inspect the HTTP status as well as the visible content. A custom 404 template must not return 200 for missing content.
  2. Check product publication, catalog visibility, stock state, and any plugin that changes the product page for guests. WooCommerce distinguishes public products from draft, private, or password-protected products.
  3. Review redirect, cache, search, and page-builder plugins if the page returns a generic home or category page instead of the intended item or a real 404.
  4. If a plugin loads the main product data with JavaScript, verify the live rendered page in Search Console and fix failed API requests or server-side output.

On other platforms

  1. Wix: confirm the page is published and its public version contains the main text or product, not an editor-only block or an empty dynamic dataset.
  2. Squarespace or BigCommerce: test retired products, empty categories, and custom not-found templates for both the content shown and the HTTP response behavior.
  3. For custom sites, make missing records return an accurate 404/410; make valid product routes return useful content rather than a generic successful shell.
  4. Across platforms, inspect what Google renders and check that a redirect destination is genuinely relevant to the old URL.

How to confirm it is fixed

  1. Open the URL as a logged-out visitor and inspect its HTTP response, visible text, and main content; a branded error page can still return 200.
  2. Use Search Console URL Inspection's live test and rendered page view to see whether Google receives the content you intended.
  3. Run Shipwork's soft 404 check as a public-page sample; it can flag successful responses whose content resembles a missing page, but Google makes its own classification.
  4. If the content is valid now, test the live URL and request indexing for an important corrected page. If it is gone, confirm the correct 404/410 or relevant redirect and remove stale internal links.

A worked example

Hypothetical case: a cycling shop retires an out-of-production helmet and keeps its URL so older product links do not break. The template has no product record, but it still returns 200 and shows the same blank product layout with a small “unavailable” label. Search Console classifies the URL as a soft 404 because the page no longer provides the product information it promises. The owner checks stock and confirms the item will not return, changes the route to a real 404, removes the URL from the sitemap, and links the old collection card to a genuinely comparable helmet instead. A live inspection then sees the missing-page response, not an empty successful page.

Questions

What is the difference between a soft 404 and a regular 404?
A regular 404 is an HTTP response saying the URL was not found. A soft 404 usually returns success but its content looks missing or empty to Google.
Should I return 404 or 410 for a deleted page?
Either communicates that the page is gone. Use 404 when the absence may be temporary or unknown; 410 is a clear signal that removal is intentional and permanent.
Can a soft 404 still return HTTP 200?
Yes. That mismatch between a successful HTTP response and content that looks like an error is the usual soft 404 pattern.
Can a page be a soft 404 if it has useful text?
Yes. Google makes the classification from its view of the URL, and a page can still be considered an error if it appears empty, generic, or unrelated to what the URL promises. Check the rendered page, the content for the requested item, and the response status. Do not add filler solely to change the label.
Does a 200 response mean my page is not a 404?
It means the server returned success, but it does not guarantee that Google considers the content useful or the URL valid. A missing-page template or empty product shell can return 200 and be classified as a soft 404. For truly missing content, configure the correct 404 or 410 response.
Find out if this is happening to you

Shipwork checks sampled public pages for successful responses whose content resembles a missing page. Use URL Inspection to see Google’s rendered view and final classification. Free, no account, no signup. Paste your store address.

Check my store for Soft 404

Go deeper: Soft 404s and missing pages

Other errors like this