URL Migration Checker

Moved a site? Paste your old and new URLs and find out which redirects are actually working — permanent, direct, and landing where you meant them to.

Up to 20 rows. Leave off the new URL to just check where an old one lands.

What goes wrong in a migration

A migration rarely fails loudly. The site works, the pages load, and the traffic drops over the following weeks for reasons that are hard to attribute. These are the four causes, in the order they usually turn out to be responsible.

The redirect is a 302

Visitors arrive, but the redirect describes a temporary move. Use 301 or 308 to give search engines a stronger canonical signal when the change is permanent.

It lands somewhere valid but wrong

A catch-all rule sends every unmatched old URL to the homepage. Nothing errors, so nothing gets noticed — and every one of those pages has lost its specific relevance.

No redirect at all

The old URL still serves a page. Now two addresses hold the same content and compete with each other, splitting the links pointing at them.

The chain grew

Old → interim → new, because a second migration was layered on the first. It works, and it costs a round trip on every visit and every crawl.

After the redirects check out

Submit the new URLs so the participating engines re-crawl them promptly. Submitting the old ones achieves nothing — the redirect already tells the engine where to go.

Frequently asked questions

What does this actually check?

For each old URL it follows the redirect chain by hand, keeping every status code, and compares where it ends up against the destination you expected. That gives four things a single status check cannot: whether the redirect exists at all, whether it is permanent or temporary, how many hops it takes, and whether it lands where you intended rather than merely somewhere valid.

Why does a 302 matter if the visitor ends up in the right place?

A 302 describes a temporary move. Google treats it as a weaker signal for choosing the destination as canonical, although other signals can still lead it to choose that URL. Use 301 or 308 for a permanent migration. A 302 alone does not prove that rankings or traffic were lost.

Are redirect chains a real problem?

They are a small, avoidable cost rather than a disaster. Each extra hop is another round trip for the visitor and another request the crawler spends on you, and long chains risk being abandoned. If your rules produce old → interim → new, point the old URL straight at the final destination.

What does "still returns 200" mean in the results?

That no redirect is in place — the old URL is serving a page directly. Either the redirect was never added, or the old page is still live alongside the new one, in which case the two are now competing for the same query and splitting whatever links point at them.

How many URLs can I check at once?

Twenty rows per batch on the free tool. That is a deliberate limit rather than an arbitrary one: this runs on Cloudflare Workers, each redirect hop costs an outbound request, and the platform caps how many one invocation may make. Rows the budget could not reach are returned marked as unchecked rather than quietly dropped.

Should I submit the new URLs to IndexNow after a migration?

Yes, once the redirects are verified. Submit the new destinations, not the old URLs — an IndexNow submission is a request to crawl a specific address, and pointing it at a redirect just spends a request teaching the engine something the redirect already says.