Guides/Redirect Chains and Loops: SEO Impact and How to Fix Them
Guide

Redirect Chains vs Redirect Loops: What They Cost and How to Collapse Them

Google follows at most 10 redirect hops in one crawl attempt, then stops. Each hop bleeds link equity and wastes crawl budget. Collapse chains to a single hop; loops never resolve at all.

Google follows at most 10 redirect hops in a single crawl attempt, then reports an error and stops. Long before that ceiling, every extra hop costs you: each redirect is a separate fetch that dilutes the canonical signal and spends crawl budget. A redirect chain is a URL that reaches its destination through two or more hops; a redirect loop is a chain that folds back on itself and never resolves at all. Chains are slow and lossy. Loops are fatal.

What a chain is versus what a loop is

A redirect chain is a sequence of redirects between the requested URL and the final 200 page: /a → /b → /c → /d. The visitor and Googlebot both land on /d, but only after three separate round trips. Each intermediate URL returns a 3xx, and Googlebot follows them one at a time — often across separate crawls rather than in one burst.

A redirect loop is a chain whose hops eventually point back to a URL already in the sequence: /a → /b → /c → /a. There is no 200 at the end. The visitor's browser aborts with a "too many redirects" error, and Googlebot gives up. A looped URL never resolves, is never indexed, and any link equity pointing into it is lost entirely. Loops are almost always a configuration accident — a rewrite rule that matches its own output, or two rules that redirect to each other.

The 10-hop limit

Google follows at most 10 redirect hops per crawl attempt. On the 11th, it reports an error and stops, treating the URL as unreachable. This is documented in our HTTP status codes guide. The practical takeaway is not "stay under 10" — it is that a chain has already cost you well before it approaches that number. The ceiling exists to protect the crawler from loops; it is not a budget you should plan to spend.

Two separate costs stack up on every hop.

Signal dilution. A permanent redirect consolidates the source URL's ranking signals onto the target, treating the target as the canonical. Google's canonicalization signals are strongest for a permanent redirect and weaken through each additional hop and each rel="canonical" in the way. A single clean 301 passes the strongest signal; a chain of four passes a progressively weaker one, and if any hop in the chain is a 302 or 303, the permanence signal breaks at that point.

Crawl waste. Googlebot fetches each hop as a distinct request, frequently spreading them across crawls rather than resolving the whole chain at once. On a large site, thousands of chained URLs consume crawl capacity that should go to real content. Crawl budget drops on slow responses and rises on fast, healthy ones, so multiplying fetches on redirects is a direct tax on how much of your site gets crawled. The crawl budget guide covers this trade-off in full.

Neither cost is a "penalty" — redirect chains are not a direct ranking factor, and Google will usually still reach the destination. The damage is indirect: diluted consolidation and wasted crawling, both of which are avoidable.

301 versus 302 inside a chain

The redirect type matters as much as the length. A 301 (or its HTTP/2 equivalent 308) is a strong, permanent signal that tells Google to consolidate onto the target. A 302, 303, or 307 is weak and temporary — Google follows it but may keep the source URL as the canonical candidate.

Inside a chain, a mismatched type breaks the signal. A chain of 301 → 301 → 302 → 200 will not consolidate cleanly, because the 302 tells Google the last leg is temporary and the source of that hop may stay indexed. If a move is permanent, every hop in the path must be permanent. Crawlinx flags each redirect it encounters as redirect.single so you can confirm the type matches the intent — a 302 sitting on a permanent move is a common and quiet mistake.

How to collapse a chain to a single hop

The fix is mechanical and reliable.

  1. Point the source directly at the final target. For the chain /a → /b → /c → /d, rewrite the redirect rule so /a returns a single 301 straight to /d. Do the same for /b and /c if they are still requested. The goal is that every entry point reaches the destination in one hop.
  2. Use a permanent redirect for permanent moves. Make sure the one remaining hop is a 301 or 308, not a 302, so the canonical signal consolidates onto the target.
  3. Fix internal links to point at the final target. A redirect should be a safety net for old inbound links you do not control, not something your own pages rely on. If your navigation, breadcrumbs, or body links point at /a when the live page is /d, every internal click and every crawl pays for a redirect that never needed to exist. Update the href to the destination. Crawlinx flags internal links that resolve through a redirect as links.redirect_target; the broader practice is covered in the internal linking guide.
  4. Check your canonical tags. A rel="canonical" should point at a live 200 URL, never at one that redirects. A canonical aimed at a redirecting URL forces Google through an extra hop to find the real destination and weakens the hint. Crawlinx flags this as canonical.to_redirect.

For loops, the fix is different: there is no target to collapse toward, so you must break the cycle. Find the two rules that reference each other — or the single rule that matches its own output — and repoint one of them at a real 200 page.

How Crawlinx detects redirect chains

Crawlinx follows every redirect it encounters during the crawl and records the full hop path. It flags single hops so you can verify the type (redirect.single) and multi-hop chains that dilute signal and waste crawl budget (redirect.chain). It also catches the two ways a chain hides inside your own markup: internal <a href> links that resolve through a redirect (links.redirect_target) and rel="canonical" tags pointing at a URL that redirects (canonical.to_redirect). A loop surfaces as a chain that never terminates in a 200. Run these checks as part of the technical SEO audit checklist.

Takeaway

A redirect chain reaches its destination but pays a hop-by-hop tax in diluted signal and wasted crawling; a redirect loop never reaches a destination and is fatal. Collapse every chain to a single 301 by pointing the source directly at the final target, keep every hop permanent when the move is permanent, and repoint internal links and canonical tags at the real 200 URL instead of relying on the redirect. Stay well under the 10-hop limit — treat it as a crash barrier, not a budget.

Related
HTTP Status Codes for SEO: 2xx, 3xx, 4xx and 5xx Explained Technical SEO Audit Checklist Crawl Budget: What It Is and How to Manage It Internal Linking for SEO: Structure, Anchors, and Orphan Pages redirect.chain redirect.single links.redirect_target canonical.to_redirect

Audit your own site — free

77 checks, internal PageRank, render-diff. No signup, results in ~30s.

Scan your site →