Redirect Checker

Redirect Chain Checker

Analyze redirect chains with latency tracking and SEO impact analysis.

Redirect Checker that traces every hop, not just the final URL

Paste a URL. We follow it hop by hop — status code, whether the request method survives, and where it finally lands — and flag loops before you find them in production. Then we tell you which hop count actually matters: Google's crawl default, Mueller's real-world recommendation, and the browser's hard stop, because those three numbers are not the same number.

Every hop, not just the final URLStatus code + method survival per hopLoop detectionFree, no signup

Built and reviewed by Sayed Hasan, founder of SEOs Hut · Updated 28 September 2026 · Free, no signup

How many redirects is too many?

More than five, if you want Google to treat the chain reliably — John Mueller: "less than 5 hops... per crawl attempt." Google's crawlers will still follow up to 10 hops by default before giving up. Browsers hard-fail at 20 — Chromium's own source caps it there, per the Fetch standard. One hop is ideal; anything past five is worth collapsing.

Traced live

One migration, four hops, annotated

A typical post-migration chain: bare domain, then HTTPS, then www, then the real page. Nothing here is broken. All of it is worth collapsing to one hop.

1GET http://example.com/ → 301 Moved Permanently → Location: https://example.com/
2GET https://example.com/ → 301 Moved Permanently → Location: https://www.example.com/
3GET https://www.example.com/ → 301 Moved Permanently → Location: https://www.example.com/services/
4GET https://www.example.com/services/ → 200 OK → final destination
1http to https. A 301, so this is Google's strong permanent signal — a user agent MAY change the request method from POST to GET here, per RFC 9110, so a form or webhook posting to the bare http URL can silently become a GET. Collapse this: put the canonical https URL wherever the link originates.
2https root to www subdomain. Another 301. Two permanent hops in a row is still two hops out of Googlebot's budget, and two chances for a client, script or old backlink to hit the wrong point in the chain.
3www root to the actual page path. A third 301. Three hops before a crawler even reaches content — already past halfway to Mueller's "under 5 hops" ceiling before the real URL is even requested.
4200 OK. The chain ends here. This is the URL that should appear in every internal link, canonical tag and backlink request from today, so hops 1 through 3 stop being requested at all.
Four numbers, not one

How many hops is actually acceptable

"How many redirects is too many" has four different answers depending on who's asking.

Ideal

1 hop

Old URL points straight at the new one. No ambiguity, no budget spent, nothing to collapse.

  • Direct 301 or 308
Acceptable

Under 5 hops

Mueller's number: "less than 5 hops... per crawl attempt" for frequently-crawled URLs.

  • 2–4 hops
  • Still worth collapsing
Google's default ceiling

10 hops

"By default, Google's crawlers follow up to 10 redirect hops." Past this, content from the redirecting URL is ignored, and Google Inspection Tools won't follow it at all.

  • 10 hops
  • Inspection Tools stops here
Browser hard stop

20 hops

Chromium ships kMaxRedirects = 20, enforcing the Fetch standard's own limit: at 20, "return a network error."

  • 20 hops
  • ERR_TOO_MANY_REDIRECTS
When to stop: If a chain is still redirecting past 5 hops, fix it this week — not because it's broken yet, but because you're spending crawl budget for nothing a single hop wouldn't give you.
Reference

301, 302, 303, 307, 308, meta refresh, JavaScript

Google's own split is permanent (301, 308, instant meta refresh, JavaScript location) versus temporary (302, 303, 307, delayed meta refresh) — and only the permanent set is a strong signal that the target should be canonical.

Redirect typeGoogle: permanent or temporaryRequest method preserved?What Google actually does with it
301Permanent — strong canonical signalNot guaranteed — a user agent MAY change POST to GETTreats the target as the page to index
302Temporary — weak signalPreserved by spec, but commonly swapped to GET in practiceKeeps showing the OLD URL in results while still following through
303TemporaryChanges to GET by design — that's what 303 is forSame temporary treatment as 302
307Temporary — Google treats it as equivalent to 302Must not change — "the user agent MUST NOT change the request method"Weak signal, despite being method-safe
308Permanent — Google treats it as equivalent to 301, though "semantically different"Must not change — the POST-safe permanent optionStrong canonical signal; use it when a POST must survive
Meta refresh, 0 secondsPermanent, per GoogleN/A — client-side, no HTTP method involvedTreated the same as a 301
Meta refresh, delay > 0TemporaryN/AWeak signal, same bucket as 302
JavaScript location redirectRanked last by Google's own guidanceN/A"Google might never see it if rendering of the content failed" — only use if server-side and meta refresh aren't possible

Scroll the table sideways to see every column.

308 dates only from June 2014, which is why it's still the least-used option here despite being the only permanent redirect that's also POST-safe.

The other failure mode

Loops are a spec-level concern, not just a bug

“A client SHOULD detect and intervene in cyclical redirections (i.e., "infinite" redirection loops)”

<b>RFC 9110 §15.4, IETF</b> &mdash; RFC 9110

A redirect that silently turns a POST into a GET doesn't announce itself. Your migration checklist passes because someone tested the link in a browser, which sends GET requests anyway. The webhook, the form action and the API client that send POST are the ones that find out in production, days later, when a submission arrives at the wrong endpoint with the wrong method. Test every redirect that anything POSTs to, not just the ones people click.

After a permanent redirect, Google doesn't drop the old URL overnight. It becomes what Google's own docs call an "alternate name," and Google "will continue to occasionally show the old URLs in the results, even though the new URLs are already indexed." That's expected, not a sign the redirect failed — confirm the new URL is indexed with the Index Checker rather than judging the migration by which URL still shows up in a search.

Chains that end somewhere other than a 200 are a different problem with a different tool. If the final hop is a 404, this checker won't flag it — the Broken Link Checker will.

"302s get treated like 301s anyway" — not for canonicalization

Google follows both. That's not the same as treating them the same. A 301 or 308 is a strong signal that the target should be canonical. A 302, 303 or 307 is a weak signal, and Google's guidance is explicit that the source page keeps showing in results under a temporary redirect. If you need the new URL to actually replace the old one in search, the status code has to be permanent — that part isn't optional.

Seen in migrations

Four ways redirect audits go wrong

Fixing the symptom hop instead of the source

What happens: Someone finds hop 3 redirecting to hop 4 and patches that link, leaving hops 1 and 2 in place. The chain gets shorter by one, not to one.

Do this instead: Trace the whole chain first, then repoint every internal link, canonical tag and sitemap entry at the final destination directly.

Auditing redirects without checking who's linking to them

What happens: A chain that resolves fine can still be sitting on top of backlinks pointing at an intermediate URL, quietly leaking link equity through extra hops.

Do this instead: Cross-check the chain against your backlink profile before you assume a working redirect is a finished one.

Treating every non-200 as this tool's problem

What happens: A chain that ends in a 404 or 5xx isn't a redirect problem — it's a broken link, and it needs different remediation.

Do this instead: Fix redirect issues here. Find dead ends with the Broken Link Checker.

Ignoring the load-time cost

What happens: Each hop is a full round trip. On a slow mobile connection, three hops before the real page even starts loading is measurable, not theoretical.

Do this instead: If a page with several hops also loads slowly, confirm the hops are actually the cause with the Core Web Vitals Checker before optimising anything else.

Before you close the migration ticket

Chains and loops are usually migration debris, not one-off mistakes — if you're finding several, that's worth a full SEO audit rather than patching hop by hop. And if this is an old domain, don't be surprised by what's in there: long-lived sites accumulate redirects nobody remembers creating, which is exactly what a domain age check puts in context.

Questions

Redirect Checker FAQ

What is a redirect chain?
A sequence of two or more redirects between the original URL a user or crawler requests and the page that finally returns a 200. Each hop is a separate round trip with its own status code — a chain isn't broken by definition, but every extra hop past one costs crawl budget and load time for nothing the final hop doesn't already provide.
What does a 307 or 308 redirect mean?
Both are 2014-era additions that fix a semantic gap. 307 is the temporary counterpart to 302 that guarantees the request method doesn't change — the user agent "MUST NOT change the request method." 308 does the same for 301: a permanent redirect that's also safe for POST requests, which 301 never guaranteed.
What is redirect in SEO?
A server instruction that sends a browser or crawler from one URL to another. In SEO terms, what matters most is whether Google treats it as permanent (301, 308) or temporary (302, 303, 307) — permanent redirects are a strong signal the new URL should become canonical; temporary ones keep the old URL showing in results.
How many redirects is too many?
Past five hops for anything Google crawls often, per John Mueller's own guidance. Google's crawlers will still follow up to 10 by default before giving up, and browsers hard-fail at 20 per the Fetch standard. One hop is the goal; anything beyond five should be collapsed, not just tolerated.
Why do I get ERR_TOO_MANY_REDIRECTS?
Your browser hit its hard cap — Chromium enforces a 20-redirect limit straight from the Fetch standard, which returns a network error at that count. It usually means a genuine loop (A redirects to B redirects to A) rather than just a long chain, since a long-but-finite chain would resolve before 20.
301 vs 302 — which should I use?
301 (or 308, if the request must stay a POST) for anything permanent — a moved page, a domain migration, a merged URL. 302, 303 or 307 only for genuinely temporary situations, like a maintenance page or A/B test, because Google keeps showing the old URL in results under a temporary redirect.

Primary sources used on this page

  1. Google: crawlers follow up to 10 redirect hops by default; Inspection Tools doesn't follow redirects — developers.google.com
  2. Google: permanent vs temporary redirects, JavaScript redirects ranked last, old URLs as "alternate name" — developers.google.com
  3. John Mueller on keeping redirect chains under 5 hops — www.searchenginejournal.com
  4. WHATWG Fetch standard: 20-redirect network error cap — fetch.spec.whatwg.org
  5. RFC 9110 §15.4: redirection method semantics and cyclical-redirect handling — www.rfc-editor.org
Keep going

What to check right after a redirect audit

A clean chain doesn't confirm the migration worked on its own — these are the checks that do.

Read the guide: How to Check Redirects and Fix Redirect Chains and HTTPS and SEO: Is HTTPS a Google Ranking Factor?. Want it handled for you? See our website audit service.

Scroll to Top