Free tool

Two Screaming Frog exports in. The client's migration report out.

You already crawled the site before and after the migration. This turns those two exports into the report the client and their developers can actually act on: risky changes first — pages that lost every crawlable path, redirects that turned temporary or grew a hop, canonicals and noindex that moved — every row with its before and after value, ready to send.

It runs entirely in your browser. The files never leave your machine — nothing is uploaded, stored or sent anywhere; view source and check. Screaming Frog's own Compare mode already diffs two crawls for licence holders; this is the shareable evidence layer on top, and it rebuilds the internal link graph, which is how it can tell you why a page became unreachable.

Before the migration

Internal:All export (required). Add All Inlinks to detect pages that became unreachable, and the Structured Data export to detect lost schema.

    After the migration

    Same exports from the post-launch crawl. Crawl with Crawl Linked XML Sitemaps on so orphaned pages are still in the export.

      Optional — redirect checks

      Your redirect map (two columns: old URL, new URL) and the All Redirects report from a List-mode crawl of the old URLs. With both, every mapped redirect is checked against where it actually ends up.

        Export from Screaming Frog with Export on the Internal tab, Bulk Export → Links → All Inlinks, Bulk Export → Structured Data → All, and Reports → Redirects → All Redirects. Or to see what the report looks like.

        How the report decides what is risky
        1. Risky — changes that can cost traffic: a page that no longer has any crawlable path from the home page, a redirect that became temporary or changed target, a canonical that moved, a page marked noindex or blocked by robots.txt, a page that stopped returning content, a mapped redirect that ends somewhere else.
        2. Notable — real changes worth the client seeing: titles, H1s, lost structured data, a page buried two or more clicks deeper, a page that lost more than half its text.
        3. Informational — the site moved: text changed, internal links reshuffled, a URL is new. Counted, collapsed by default.
        4. A page is compared only when both crawls actually fetched its content. A robots block or an error is reported as what it is, never as "your title disappeared".
        5. Unreachable pages are computed from the link graph in the All Inlinks exports, so a page that is still linked — but only from pages that themselves became unreachable — is reported as a cascade, with the upstream page named. Without All Inlinks, only pages whose inbound-link count fell to zero can be found, and the report says so.

        This is one comparison. The problem is the next deploy.

        A migration is the day everyone is watching. The regression that costs the most is the one that ships on a Tuesday six weeks later — a template change that drops a canonical, a redirect quietly turned temporary. Driftwitness runs this comparison after every deploy and turns the month into the same kind of report.

        Double opt-in; unsubscribe anytime; no spam, ever. Or read what Driftwitness does →