Redirect Chains

What a redirect chain is (A → B → C instead of A → C), why they happen after stacked migrations, how many hops Google actually follows (10 ceiling, ~5 per crawl attempt, ≤3–5 recommended), how to find them with curl and crawl tools, and the one-line fix.

First published: Jul 2, 2026 · Last updated: Jul 28, 2026 · Advanced
demand #9 in Redirects#25 in HTTP Status Codes#188 in Technical SEO#248 on the site
1 evidence signal on this page

A redirect chain is when a URL doesn't go straight to its final destination but passes through one or more intermediate redirects first — A → B → C instead of A → C, ending at the first non-redirect response (not necessarily a 200). Each extra hop adds latency and can delay how quickly Google fully consolidates signals on the destination. The numbers people quote aren't contradictory: 10 hops is the technical ceiling Googlebot will follow, and no more than 3/fewer than 5 is Google's practical recommendation — both from Google's current docs. John Mueller separately described roughly five hops per crawl in 2014 and per crawl attempt in 2020; in 2014 he also said a later crawl could continue the remainder. Those are dated representative statements, not a current scheduling guarantee. My observation that Google often resumes longer chains, and my roughly five-hop triage threshold, are independent practitioner evidence. Chains are almost always the residue of stacked migrations, not incompetence. The cost is crawl latency, not per-hop PageRank loss. The fix never changes: point every redirect directly at the final live destination and update internal links, canonicals, and sitemaps that still point into the chain.

TL;DR — A redirect chain is A → B → C instead of a direct A → C, where each hop is one redirect, ending at the first non-redirect response — not necessarily a 200. They’re the near-inevitable residue of stacked migrations, plugin conflicts, and unordered rules — not incompetence. The three hop numbers everyone quotes describe different things and don’t contradict: 10 is the technical ceiling Googlebot will follow (current docs), and ≤3, fewer than 5 is Google’s current practical recommendation. Mueller separately described ~5 per crawl in 2014 and ~5 per crawl attempt in 2020; in 2014 he also described a later crawl continuing the remainder. Those are dated representative statements, not a current scheduling guarantee. My observation that Google often resumes longer chains is separate practitioner evidence. The documented cost is latency and crawl processing, not per-hop PageRank loss — a single permanent redirect doesn’t lose PageRank. The fix is invariant: repoint every redirect straight at the final live destination, then fix the internal links, canonicals, and sitemaps that still feed the chain.

What counts as a chain (and what doesn’t)

Each 3xx hop is a separate HTTP exchange. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: RFC 9110: Redirection No universal ranking-loss percentage or fixed crawl limit is documented, so one direct hop is the defensible target. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search

A redirect chain is two or more consecutive redirect responses before the first non-redirect response — A → B → C instead of A → C. Each redirect in the sequence is a hop. The chain ends at whatever response isn’t itself a redirect: that’s usually a working 200, but it can just as easily be a 404, a 500, an authentication challenge, or another terminal outcome. A chain that dead-ends in an error is still “just a chain” — a broken one, but not automatically a loop.

A redirect loop is a different, more specific problem: it’s cyclic. One of the hops eventually points back to a URL the path already visited, so the request never reaches a terminal response and the browser throws ERR_TOO_MANY_REDIRECTS. The distinction that matters is cyclic vs. non-cyclic — not “long” vs. “short,” and not “ends in an error” vs. “ends in 200.” A two-hop loop is still a loop; a ten-hop chain that ends in a 404 is still a chain.

In my 11 Types Of Redirects & Their SEO Impact I put it simply: “Redirect chains are when multiple redirects take place between a requested resource and its final destination.”

Why chains happen in practice

Chains are rarely a single sloppy decision. They accumulate:

  • Stacked migrations. This is the big one. A URL redirected during a domain move gets redirected again during the HTTPS migration, then again during a platform switch — each move adds a layer on top of the last instead of replacing it. http://oldhttps://oldhttps://new is three rules where one would do.
  • www/non-www + HTTP/HTTPS handled as separate rules. http://wwwhttps://wwwhttps://non-www is a classic three-hop chain that should be a single combined rule.
  • CMS and plugin conflicts. Two redirect plugins, or a plugin rule plus a server rule, both firing on the same URL.
  • Wildcard rules placed ahead of specific rules. A broad catch-all (old domain → new homepage) sitting before the specific rule means the specific rule never fires — the request follows the wildcard first. Bing explicitly tells site owners to put specific redirect rules before the wildcard for exactly this reason.

Worked migration example: three sensible rules, one unnecessary chain

An apparel site has accumulated three separately reasonable changes:

301  http://old-shop.example/products/trail-shoe
301  https://old-shop.example/products/trail-shoe
301  https://shop.example/products/trail-shoe
200  https://shop.example/shoes/trail-runner

The first rule upgrades HTTP, the second moves the domain, and the third reflects a catalog rename. The problem is not any one migration. It is that the old entry point still replays all three historical decisions.

Replace that path with one direct permanent redirect:

301  http://old-shop.example/products/trail-shoe
200  https://shop.example/shoes/trail-runner

Then update internal links, canonicals, and sitemap entries that still advertise an intermediate URL. This is an illustrative .example trace, not a report about a specific company.

And a specific anti-pattern worth calling out: don’t stack a broad “everything → homepage” catch-all on top of existing specific redirects. Google warns that redirecting many old URLs to one irrelevant destination “might be treated as a soft 404 error.” Redirect old URLs to their real equivalents, 1:1.

How many hops does Google actually follow?

This is where competing articles muddle three different numbers into one. They’re complementary, not contradictory:

1. The technical ceiling — 10 hops. Straight from Google’s Site Moves and Migrations doc: “While Googlebot can follow up to 10 hops in a ‘chain’ of multiple redirects (for example, Page 1 > Page 2 > Page 3), we advise redirecting to the final destination directly.” Ten is the most Googlebot will ever walk through in total before it gives up.

2. The practical recommendation — ≤3, fewer than 5. Same sentence, same doc: “If this is not possible, keep the number of redirects in the chain low, ideally no more than 3 and fewer than 5.” This is Google’s own advice, not a third-party guess.

3. The dated representative statements — about 5 hops per crawl. In a 2014 webmaster hangout at 46:03, John Mueller described Googlebot following as many as five redirects in one crawl and, if more remained, continuing them in the next crawl. In a separate 2020 Reddit comment reported by Search Engine Journal, he said Google follows “up to 5 hops in the chain per crawl attempt.” The 2014 statement is real representative evidence for later continuation; it was not invented. It is also historical, so don’t turn it into a guarantee that current Googlebot will always resume a chain, or that it will do so on a predictable schedule.

My own observation from real sites independently matches that pattern: Google often picks a longer chain back up, and I use about five hops as a triage threshold. That is practitioner evidence and an operational cutoff, not the source of Mueller’s 2014 statement and not a Google platform limit.

So the reconciliation is: 10 is Google’s current documented ceiling; 3-to-5 (fewer is better) is its current practical target; and ~5 per crawl is dated representative guidance from Mueller. A chain longer than 5 hops doesn’t necessarily fail outright — it typically just delays how quickly Google reaches and consolidates on the destination. Past the 10-hop ceiling, a redirect error can surface in Search Console’s Page Indexing report, but that’s not a guaranteed one-to-one mapping — what gets logged depends on what the crawler actually observed on that attempt, and a chain can also just resolve more slowly rather than throwing a specific error.

Why chains matter — and the myth they don’t

The documented cost of a chain is latency and crawl processing, not signal loss per hop. Google’s own wording: chaining redirects “adds latency for users, and not all user agents and browsers support long redirect chains.”

Keep this separate from the debunked “PageRank loss per redirect” folklore. Google is explicit that “301 and other permanent redirects don’t cause a loss in PageRank.” That statement is about a single hop — it doesn’t mean an unlimited chain is free, because the chain’s cost is a different thing (crawl latency and time-to-consolidate), not per-hop equity leakage. Both can be true at once: one redirect loses no PageRank, and a long chain still wastes crawl processing and delays indexing.

When to fix a chain — and when not to bother

Here’s where I differ from a lot of the trade content: don’t over-optimize. Many SEOs are obsessed with getting rid of even one additional hop for a redirect. I would not worry about that at all. In my website-migration writing I’ve said I wouldn’t worry about things like a redirect chain on the root path, or chasing every external site to update their links to you.

My actual working threshold: I don’t typically worry about redirect chains under about 5 hops, but past 5 I’ve seen issues with them being crawled and counted properly — so that’s my cutoff for telling people to start working on them. Weight that by the path, too: a 5-hop chain on a frequently-crawled, high-value URL is worth fixing; a stray extra hop on a low-traffic page usually isn’t worth your afternoon.

How to find redirect chains

Detection is layered — command line for spot checks, crawlers for site-wide:

  • curl -IL <url> on macOS/Linux (or Invoke-WebRequest on Windows) prints every hop’s status line down to the final 200. Fastest way to trace one URL. See the Scripts tab for copy-paste commands.
  • Browser devtools → Network tab. Load the URL, watch the sequence of 301/ 302 requests before the final 200. Good for one-off visual checks.
  • Screaming Frog. Response Codes tab, plus Reports → Redirects → Redirect Chains for a site-wide export of every chain and its hop count.
  • Ahrefs Site Audit. The Redirects report flags a “Redirect chain too long” issue. In Site Explorer you can also filter backlinks or outgoing links by “No. of redirects,” and the Ahrefs SEO Toolbar’s HTTP headers tab shows the redirect sequence for a link you click.

A chain report is only one slice of the existing-rule review. The redirect-estate audit also checks dead final targets, homepage/generic dumps, broad wildcards that swallow live URLs, and whether a long-unused rule can be retired through a logged, reversible 404 probe.

How to fix them

One rule, everywhere: point every redirect directly at the final live destination, never at another redirect. “Fixing a chain” is really just rewriting each rule’s target from the intermediate URL to the true final URL. A → B → C becomes A → C and B → C.

Then finish the job most people skip:

  • Update internal links so they point at the final URL, not at a redirecting one — otherwise your own site keeps feeding the chain.
  • Update canonical tags and XML sitemaps that still list old or intermediate URLs.
  • Order your rules correctly so you don’t create new chains: specific rules before wildcards/catch-alls, and combine www/HTTPS consolidation into a single rule where you can.
  • Check the status codes, not just the destinations, if anything in the chain isn’t a plain page request. 301 and 302 can let a client turn a POST into a GET on the next hop; 307 and 308 preserve the original method. A chain that’s harmless for a browser loading a page can silently break a form submission, an API call, a signed URL, or a webhook if the wrong status type is mixed in.

Do that and the chain collapses to a single hop — which is all you ever needed.

Related reading in this cluster: the difference between a permanent and temporary redirect (301 vs 302), and what happens when a chain never terminates (redirect loops).

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin an expert quote first.