ShipworkSite inspection
Checks

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?Page DoctorWhy is this page not doing well?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

+1 free check

Welcome to Shipwork

Sign in free and your next check this month is on us.

Continue with GoogleContinue with email

We email you a 6-digit code. No password.

No card needed. Reports and watches follow you to any device.

Soft 404s: the healthy-looking failure

A soft 404 is a page that says success and means nothing: HTTP 200, template rendered, and no product on it. Search engines treat it as thin content and eventually drop it. And because the status looks healthy, nothing in your dashboard ever flags it. It is the quietest way a store loses pages from Google.

200, EMPTYtemplate, no productREAL 404honest not-found
A 200 with nothing on it is a 404 wearing a disguise.

What makes a 200 a soft 404

The status and the content disagree. The server says the page exists; what it serves is an empty template, a "no longer available" notice, a stray error message, or a shell with no text. Google classifies this as a soft 404. It reads the content, not the status code, and a page with nothing to rank is not found, whatever the status line claims.

The Shopify causes

  • Retired products left published. Inventory zeroed and the template renders an empty shell instead of a redirect or a proper unavailable state.
  • Renamed handles. The old URL now 404s (that is the honest version) or worse, redirects to the collection, which reads as a product URL with no product.
  • Collections with zero live products rendering the boilerplate layout around "no products found."
  • Search and filter URLs that answer 200 with an empty result set and get indexed.
The redirect-to-home mistake

Redirecting every dead product URL to the home page is a common "fix" that makes things worse: Google reads the destination, finds no product, and records a soft 404 with extra steps. Redirect to the nearest equivalent product or collection, or let it 404 honestly.

Why search engines care

Crawl budget is finite, and a 200-with-no-content wastes it twice: the crawler fetches the page, spends its budget, gets nothing, and learns the site rewards fetches with emptiness. Enough soft 404s and the whole site\u2019s crawl quality estimate degrades: the failure of a few pages taxes every other page\u2019s recrawl rate.

Fix: restore, redirect, or really 404

  1. Restore where the product returns: restocked or renamed back to its original handle.
  2. Redirect to the nearest equivalent where it is gone for good: the collection or a successor product, never the bare homepage.
  3. Return a real 404 or 410 where nothing equivalent exists. Honest signals get processed faster than pretend-200s.
  4. Remove the URLs from the sitemap if they are gone, and check the template fix catches future retirements automatically.

Run the free soft-404 check to see which of the pages it checks answer 200 while reading like a not-found page. Related: redirect chains · soft 404s on Shopify, deeper

Find out if this is happening to you

Shipwork requests the pages it checks from outside your network and reads the visible text of each, reporting 200s whose content reads as a not-found page: the mismatch Google treats as thin. Free, no account, no signup. Paste your store address.

Check for soft 404s

Questions

What is a soft 404?
A URL that returns HTTP 200 but has no useful content: an empty template, a removed product, an error message styled as a page. Search engines treat it as thin or missing.
Do soft 404s hurt my whole site?
They waste crawl budget and degrade the quality estimate crawlers build of the site, which slows recrawls everywhere. The damage is site-wide before it is per-page.
Is redirecting dead products to the homepage OK?
No. It is the classic soft-404 generator: the status is 200 but there is no product. Redirect to the nearest equivalent category or product, or return a real 404.
How does the check detect soft 404s?
It reads the visible text of each page it checks: 200s whose content says page not found, nothing available, or similar: the 200-that-is-not-found pattern.

Keep reading