A redirect chain is when your old web address points at a second address, which points at a third, before a real page finally loads. Google’s crawlers follow up to 10 of those hops. Your browser gives up at 20 and shows ERR_TOO_MANY_REDIRECTS, which usually means two rules are pointing at each other instead of at a page.
A chain is not the same thing as a loop
A chain ends. Old address, hop, hop, then the page loads. It works. It is just slower than it needs to be, and every hop is one more round trip on a phone with two bars of signal.
A loop never ends. Address A sends the browser to B, and B sends it straight back to A. Nothing loads, ever.
The standard behind all of this is RFC 9110, HTTP Semantics, published by the IETF in June 2022. On redirects it says: “A client SHOULD detect and intervene in cyclical redirections (i.e., ‘infinite’ redirection loops).” It does not pick a number. A note in the same section adds that an earlier version of the spec recommended a maximum of five redirections, and warns that some clients still carry a fixed limit like that.
Browsers settled on 20. The WHATWG Fetch Standard is the document browsers are built to, and its redirect step reads: “If request’s redirect count is 20, then return a network error.” It is a living standard, rewritten as browsers change, and the copy checked for this article was last updated 25 August 2026. So the error your customer is staring at is not vague. It is a counter reaching 20.
Google stops at 10
Google’s page “How HTTP status codes affect Google’s crawlers” says: “By default, Google’s crawlers follow up to 10 redirect hops.” That page was last updated 2026-02-04 UTC.
The same page adds something worth knowing before you go testing. Googlebot generally follows 10 hops for general web content, but Google Inspection Tools does not follow redirects at all. URL Inspection in Search Console runs on that tool, so pasting an old address in there tells you nothing about the rest of the chain. That is not your chain breaking. That is the tool.
It also grades the hops. A 301 is used as a strong signal that the target should be processed. A 302 is a weak one. If a rebuild left temporary redirects sitting where permanent ones belong, that matters more than the length of the chain.
Where the extra hops come from after a rebuild
Nobody sets out to build a chain. It stacks up one rule at a time, and a rebuild is the week all the rules land at once.
Picture a customer tapping an old link from a 2019 directory listing. The address starts with http, has no www, has no slash on the end, and the page it names has moved. Four rules can fire in a row:
- http goes to https. One hop.
- The bare domain goes to www. Two hops.
- A slash gets added to the end, which is its own argument between servers. Three hops.
- The old page finally hands off to the new one. Four hops.
Four hops for one tap, and your customer paid for every one of them in waiting time, on top of the four things that decide how fast the page loads.
Loops are usually two systems arguing over who handles https. Cloudflare documents the common version. If your encryption mode is set to Flexible, Cloudflare sends unencrypted requests to your origin server over HTTP, and redirect loops will occur if your origin server automatically redirects all HTTP requests to HTTPS. Its fix, on that same page, last updated April 16, 2026: remove the HTTPS redirects at your server, or move the encryption mode up to Full or higher, which needs a certificate installed on your server. The page carries the same warning in reverse, where a server that pushes HTTPS back to HTTP loops the other way.
How to count your own hops
You do not need an audit for this. You need one command.
Open Terminal on a Mac, or PowerShell on Windows, and run curl with the head and location flags, then your old address: curl -sIL https://yoursite.com/old-page
On Windows, type curl.exe rather than curl. In PowerShell, plain curl is a nickname for a different built in command and will not take those flags.
Every hop prints its own status line and its own Location line. Count the Location lines. That is your chain, in order.
curl walks further than a browser will. Its manual page says that with the head and location flags used together, headers from all requested pages are shown, and that the default limit on redirects to follow is 50. That page carries no update date. So it finishes chains your browser refused to, which is exactly what you want when the screen says too many redirects and tells you nothing else.
Three things to look for in the output:
- More than one Location line for a single address. Two is common after a rebuild. Four is a chain worth flattening.
- A 302 sitting where you meant to put a 301.
- The same address printed twice. That is your loop, and the two addresses on either side of it name the rules that are fighting.
Run it on your homepage, your main service pages, and whatever address your old business cards and truck wraps still send people to.
What this will not do for you
Google publishes the hop limit. It does not publish a penalty.
There is no document saying a three hop chain costs you a position, or that flattening it to one hop wins anything back. Google’s main page on the subject, “Redirects and Google Search”, last updated 2026-04-14 UTC, covers permanent against temporary redirects and the ways to set each one up. It does not mention chains or hop counts anywhere. The hop number lives on a different page entirely. Anyone quoting you a ranking recovery for a redirect cleanup is filling in a blank that Google left empty.
So if your chain is two hops and every page loads, leave it alone. Do not buy a redirect audit for it. The honest reasons to flatten a chain are speed on a phone and keeping a comfortable margin under 10 hops, not a position somebody promised you.
What to do next
- List your ten busiest old addresses. Homepage, top service pages, and the one your printed material still names.
- Run the curl command above on each and count the Location lines.
- For anything over one hop, edit the existing rule so the first hop goes straight to the final address. Do not stack a new rule on top of the old ones. That is how chains grow in the first place.
- Run it again. You want one Location line, a 301, then a 200.
- If the browser said too many redirects, check the https settings at your edge and at your server before you touch anything else. One of them is doing the job twice.
If the rebuild is a move off WordPress, the address map is most of the work, and it belongs on paper before anything gets exported. A new build should ship with a flat list of one hop rules, not a pile inherited from three previous sites.