ShipworkSite inspection
Migration check

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.

What broke in the move?

Paste the old address and the new one. Both are crawled from outside the network with the same checks, then compared as before and after, so the regressions that a migration introduces are named instead of buried in a side-by-side.

A set of pages from each, read the same way. Nothing is stored.

How this works

Both addresses get the same bounded audit, then each check is compared as before versus after. A check that was clean before and is worse now is a regression and is listed first; a check that improved is listed second; ties are counted. It does not invent competitor data or claim a full crawl of either site, so a regression it names is one it actually saw.

What the site migration checker compares

Give it the old address and the new one. It runs the same bounded audit on each: a sample of pages, read the same way, covering reachability, indexation, markup, links and delivery, and catalogue signals where the site is a store. Each check produces an error and warning count for both sites, and the sample is the same size for both.

It then compares the two as before and after. A check that was clean on the old site and is worse on the new one is a regression. A check that improved is listed separately, and checks that are unchanged are counted rather than listed. The order of the before and after counts makes the direction of each change clear at a glance.

How to read the migration result

Regressions are the point: they show what the move made worse. Each entry shows the check, a sentence describing the change, and the before and after counts. Improvements show what the move fixed, which is worth confirming rather than assuming, since a move can quietly help some checks while breaking others, and both are worth knowing. A small change in count can still be worth attention.

The audit is a bounded sample, not a full crawl, on both sides. A clean result means no worsening was seen in the pages checked; it does not prove the move broke nothing elsewhere. The comparison looks at technical and content signals, and a regression is only reported when the audit actually saw it on both sides, so it is evidence rather than a guess.

What migrations commonly break

A platform or host change rebuilds templates and routing, and that is where regressions cluster: lost canonical tags, changed redirects, dropped structured data, altered titles, or a sitemap that no longer lists the same pages. Routing is the most common source, because an old address can stop resolving to its new equivalent. Capturing the before state while the old site is still live makes the comparison reliable.

These matter because a move should preserve what search engines already understood. If a new template omits markup the old one carried, the new site can look like a different, weaker site even when every page loads. Comparing before and after puts those changes in one list and makes them visible even when the new site looks fine page by page.

Fix the regressions first

Work down the regression list from the top, since it is ordered by the size of the change. For each one, fix the source template, routing rule or export rather than the individual page, so the repair applies across the new site. Confirm the old URLs still reach an equivalent page, and keep a note of each fix so a later run can check it.

Run the check again after the fixes and confirm the regression no longer appears. Then test a few key old addresses directly to ensure they reach the intended new page, and update internal links and the sitemap to the new addresses. If an old address still redirects through several hops, flatten it so it reaches the new page directly. A direct redirect is better than a chain of hops.

When to use related checks

Use redirect check for the old addresses and sitemap diff to confirm the new sitemap lists the moved pages. compare is the same engine used head to head rather than before and after, when the question is a competitor instead of your own move. Run the comparison once before the move and again after, so the two runs are comparable rather than relying on memory.

The redirect chain guide covers migrating URLs, and the free audit checklist sets the wider pass. For a page that now fails, see the not-found fix, which applies when a migrated page no longer resolves at its new address. Work from the top of the regression list, fixing the source rather than one page at a time, then run the check again to confirm the improvement holds.

Questions

What counts as a regression?
A check that was clean on the old site and is worse on the new one: more errors, more warnings, or a check that stopped passing. Those are listed first, because a move should not quietly make the site worse.
What is a "move"?
A platform migration (Woo to Shopify, a custom stack to a new CMS), a host or CDN change, or a redesign that rebuilt the templates. Anything where the same pages answer from a new setup.
Does it crawl the whole old and new site?
No. It checks a bounded set of pages on each, the same way for both. That is enough to catch a template or routing break, which is what most migrations introduce, without spending minutes crawling a full catalogue.
Does it change or store anything?
No. Both sites are read from outside the network, compared in memory, and the result is returned to the page. Nothing is saved.
How do I check what broke after a site migration?
Enter the old address and the new one. The tool runs the same bounded audit on both and compares each check before and after, listing the checks that got worse first. Fix those at the template or routing level, then run the check again to confirm.
Does it crawl my whole old and new site?
No. It checks a bounded sample of pages on each, the same way for both. That is enough to catch a template or routing break, which is what most migrations introduce, without spending minutes crawling a full catalogue on both addresses. It is a like-for-like sample, not a full inventory.
Can it compare rankings or traffic before and after?
No. It compares the technical and content signals the pages serve. Rankings, traffic and backlinks are separate data that this check does not read, and it does not connect to any search account. It also does not compare your site with a competitor; that is a separate tool.