Redirect chains: the tax you pay on every old link
Where three-hop redirects come from, what they cost in latency and crawl budget, and how to flatten them without breaking the old URLs.
Links · Published: 24 August 2026 · 3 min read · Анна Ковалёва
A redirect is a promise that an old address still works. A chain of redirects is that promise kept three times over, each hop costing a round trip. Nobody plans them: they accumulate, one migration at a time.
How a chain is born
Year one: /products/shoes moves to /catalog/shoes. Year two: HTTP goes to HTTPS. Year three: the site standardises on trailing slashes. Year four: the catalogue moves under a locale prefix. Now the original link in someone's newsletter does this:
http://site.com/products/shoes
→ https://site.com/products/shoes (301)
→ https://site.com/catalog/shoes (301)
→ https://site.com/catalog/shoes/ (301)
→ https://site.com/en/catalog/shoes/ (301)
Four requests before a byte of content. On a mobile connection that is most of a second, paid by exactly the visitors who trusted an old link.
What it actually costs
Latency. Each hop is a full round trip: DNS is cached, the connection may be reused, but the request and response are not free. Three hops on a 3G connection is comfortably over a second.
Crawl budget. Search engines follow a limited number of hops — commonly around five — and they spend a fetch on each one. On a large site the crawler burns its budget on redirects instead of new pages.
Signal decay. Modern engines pass ranking signals through redirects, but every extra hop is another chance for one link in the chain to be misconfigured, and a chain that ends in a 404 passes nothing at all.
Analytics. Referrer and UTM parameters survive most redirects and get dropped by some. Chains are where campaign attribution quietly disappears.
Flattening without breaking anything
The rule is simple: every old URL redirects to the final destination in one hop. Not to the next step in history — to where the content lives today.
- Crawl the site and record every redirect with its full chain.
- For each starting URL, resolve the terminal target.
- Rewrite the rules so the start points straight at the terminus.
- Keep the old rules. Deleting them turns links into 404s; the point is to shorten chains, not remove redirects.
Watch for two traps. A loop — A to B to A — serves nothing at all and usually comes from two rules that each think they are canonical. And a redirect to a 404, which is worse than a plain 404, because the crawler has to spend two requests to learn the same bad news.
Keeping it flat
Chains reappear after every migration, so measure them the way you measure anything else that regresses: crawl on a schedule, alert when the maximum chain length grows, and treat "more than one hop" as a defect rather than a fact of life.
Internal links deserve stricter treatment. An external link you cannot fix; your own navigation pointing at an address that redirects is simply a stale href — update it and the hop disappears entirely.
Read next
Check how much of this is on your own site
A free scan surfaces broken links, JS errors and performance problems in about a minute.