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 19, 2026 · Advanced
demand #7 in Redirects#21 in HTTP Status Codes#176 in Technical SEO#236 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 chainA → B → C instead of A → C. Each hop loses link equity and adds latency. is A → B → C instead of a direct A → C, where each hop is one redirectA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't., 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 GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. 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 PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems. loss — a single permanent redirectA 301 redirect is the HTTP status code for a permanent move: it tells browsers and search engines a URL has moved for good, and it's the strongest signal for consolidating a page's ranking signals onto the new URL. Google says permanent redirects don't cause a loss in PageRank. doesn’t lose PageRankPageRank is Google's original recursive link-graph algorithm: a page's score depends on the scores of the pages linking to it, and in the published model each page's score is split across its outbound links (the simplified version: links are weighted votes). Google says it's evolved since launch but still part of its core ranking systems.. The fix is invariant: repoint every redirect straight at the final live destination, then fix the internal linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them., canonicals, and sitemapsA sitemap is a file that lists the pages, images, videos, and other files on your site so search engines can discover them. It helps discovery, but submitting a sitemap doesn't guarantee crawling or indexing. 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 loopA redirect loop is a chain of redirects that circles back on itself instead of ever reaching a live page — URL A redirects to B and B redirects back to A (or a longer cycle). No page ever returns a 200, so browsers show ERR_TOO_MANY_REDIRECTS and crawlers can't index anything. 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 migrationAn HTTP to HTTPS migration is the process of moving every URL on a site from the insecure http:// scheme to the encrypted https:// scheme — installing a TLS certificate and 301-redirecting each old URL to its secure equivalent. Done correctly, it doesn't lose rankings or PageRank., 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/HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' handled as separate rules. http://wwwhttps://wwwhttps://non-www is a classic three-hop chain that should be a single combined rule.
  • CMSA content management system (CMS) is software that lets users create, manage, and publish digital content — like blog posts and pages — without writing raw code. WordPress, Drupal, and Joomla are the most common open-source CMS platforms. 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.

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 404A soft 404 is a URL that returns a success status code (usually 200 OK) even though the page is empty, missing, or shows a 'not found' message. It isn't a status code a server sends — it's a label search engines apply after comparing the response code against the rendered content, and they treat the page like a 404 for indexing. 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 GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. 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 ConsoleGoogle's free tool for monitoring crawling, indexing, and search performance.’s Page Indexing reportThe Google Search Console report (formerly Index Coverage) showing how many of your URLs are indexed vs. not indexed, and grouping the not-indexed ones by reason., but that’s not a guaranteed one-to-one mapping — what gets logged depends on what the crawlerA crawler — also called a spider or bot — is an automated program that fetches web pages, extracts their links, and queues new URLs to visit. Search engines use crawlers to discover and download content for their index. 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 agentsA user agent is the HTTP request header a client (browser, crawler, or bot) sends to identify itself. For crawlers, a short user-agent token — a substring of that string — is what robots.txt rules actually target. 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 indexingStoring a crawled page in the search index so it can appear in results. Crawled is not the same as indexed — Google selects what to keep, and indexing isn't guaranteed..

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 auditA redirect sends browsers and crawlers from a requested URL to a different one. An HTTP redirect specifically is a 3xx status code paired with a Location header; meta refresh and JavaScript redirects achieve a similar navigation without being a 3xx response themselves. Permanent redirects (301/308) are Google's signal the target should be canonical; temporary ones (302/303/307) aren't. 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.

TIP

To expose every intermediate response before you rewrite the rules, trace the source URL with the Redirect Checker Free

  1. Run the exact source URL and record every status, Location target, and final response.
  2. Rewrite each source and intermediate rule to point directly at the intended live destination.
  3. Rerun the source URLs and update internal links, canonicals, and sitemaps that still reference intermediates.
A two-hop chain adds an unnecessary intermediate response; point the old URL directly at the final live destination.

The completed result is labeled Minor chain. It shows example.com/old returning 301, example.com/intermediate returning 301, and example.com/final returning 200, with guidance to point the source directly at the destination.

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 linksAn internal link is a hyperlink from one page on a website to another page on the same website. Internal links help search engines discover your pages and pass ranking signals (PageRank and anchor-text context) between them. so they point at the final URL, not at a redirecting one — otherwise your own site keeps feeding the chain.
  • Update canonical tagsA rel=\"canonical\" annotation — in the HTML <head> or an HTTP Link header — that tells search engines which URL is the preferred version of duplicate or near-duplicate content. and XML sitemapsAn XML sitemap is a UTF-8 file listing the canonical URLs on your site (with optional lastmod) so search engines can discover and prioritize them. It's a discovery and diagnostic aid, not a guarantee of indexing — and Google ignores its priority and changefreq tags. 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/HTTPSHTTPS is the encrypted version of HTTP — it uses TLS to authenticate the server and protect data in transit between a browser and a website. Google announced it as a lightweight ranking signal in 2014 and today conditionally prefers HTTPS pages as canonical; Chrome marks plain HTTP pages 'Not Secure.' 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 a quote first.