A redirect chain is what you get when A points to B, B points to C, and nobody ever went back to update A. Each hop is individually harmless. The accumulation is not.
How chains form
Almost always through layered history. A site moves from HTTP to HTTPS, so every URL gets a redirect. Later it drops the www prefix, adding a second. Then the blog moves from /blog/2019/post-name to /post-name, adding a third. Then a trailing-slash rule gets added at the server level, adding a fourth. Nobody did anything wrong at any step, and the oldest links now take four round trips to resolve.
What the hops cost
Latency. Each hop is a full request: DNS lookup if the host changed, TCP connection, TLS handshake, response. On a mobile connection a single hop can add 300 to 600 milliseconds. Four hops is a visible delay before anything begins to render.
Crawl budget. Every hop is a URL a crawler must fetch and process. On a large site this is real waste.
Crawler patience. Google follows a limited number of hops before giving up on a chain in a single crawl. Five is the commonly cited practical ceiling. A chain longer than that may not resolve to its destination during one pass.
Signal dilution. Google has said 301s pass full PageRank, and there is no reliable evidence of per-hop loss today. But chains are still where mistakes hide: one hop in the middle quietly turned into a 302, or points at a page that now 404s.
The failure modes worth checking for
- Loops. A redirects to B, B redirects back to A. Usually caused by a CMS rule fighting a server rule. The page becomes completely unreachable.
- Chains ending in 404. Worse than a direct 404, because it is invisible in most reports that only record the first response.
- Mixed status codes. A 302 in the middle of a chain of 301s, often left from a temporary campaign that never got cleaned up.
- Protocol ping-pong. HTTPS to HTTP and back, usually from a hardcoded absolute URL in a rewrite rule.
- Redirects to the homepage. A bulk rule that sends every retired URL to
/. Google frequently treats these as soft 404s.
Flattening a chain
The fix is to rewrite the first rule so it points directly at the final destination. If A goes to B goes to C, change A so it goes straight to C, and keep the B-to-C rule for anyone who has B bookmarked.
Work from your most-linked URLs down. A chain on a page nobody links to is not worth an afternoon. A chain on the URL in your email footer is.
Finding them
Our redirect checker follows a chain hop by hop and shows the status code and timing of each, which makes a stray 302 or a loop obvious at a glance. Pair it with the broken link checker to catch the chains that end in nothing. When you write the replacement rules, the .htaccess generator produces syntax that will not conflict with your existing HTTPS and www rules.
After a migration
Check the chains twice: once the day you go live, and again six weeks later. The second check is the one that catches the rules somebody added in a hurry during launch week and forgot to document.