How to find and fix redirect chains
A redirect chain is a URL that takes more than one redirect to reach the page that finally answers 200. You fix it by sending every old URL straight to the final address in one hop, then updating the links, canonicals and sitemap entries that still use the old ones. Google documents the limit: “By default, Google's crawlers follow up to 10 redirect hops.” Most chains are nowhere near 10. They are still worth fixing, because every hop is another request and another place for a migration to break.
What a redirect chain looks like
Someone types http://example.com/services. The server sends them to https://example.com/services. A second rule adds www. A third adds a trailing slash. The page finally answers on the fourth request:
http://example.com/services 301 https://example.com/services 301 https://www.example.com/services 301 https://www.example.com/services/ 200
Every hop works on its own, which is why nobody notices. Each rule was added by a different person, plugin or platform migration, and each one was correct when it went in. Stacked together, they turn one request into four.
Where chains come from
- Protocol and host rules in separate places. HTTP to HTTPS lives at the CDN, www lives in the server config, and the trailing slash lives in the CMS. Each adds a hop.
- Old migrations that were never collapsed. A 2019 URL redirects to the 2022 URL, which now redirects to the 2026 URL. The first rule was never updated to point at the newest page.
- Internal links to old addresses. Your own menu or footer still links to
/old-pricing. Visitors never see the chain, but every crawl of your site walks it. - Mixed redirect types. A 302 left over from a test sits in the middle of a chain of 301s. A temporary redirect is a weaker signal about which URL should be canonical.
How to fix a redirect chain
The goal is one hop from any old URL to the final page, and zero hops for anything you link to yourself.
- Trace the chain. Use the live check below, or
curl -sIL http://example.com/servicesand read eachLocationheader. - Rewrite the first rule to point at the final URL. In the example,
http://example.com/servicesshould send a single 301 tohttps://www.example.com/services/. Most servers and CDNs can match protocol, host and path in one rule. - Collapse old migration rules. Search your redirect map for any target that is itself redirected, and replace it with the final destination.
- Use permanent redirects for permanent moves. Google's redirect guide treats 301 and 308 as a strong signal that the target should be canonical, and 302 and 307 as a weak one.
- Update your own references. Internal links, the canonical tag, hreflang, and the sitemap should all use the final URL, so nothing on your own site needs a redirect.
When a chain is not the real problem
A chain that ends on a 404 or 5xx is a dead end, not a chain, and fixing the hops will not help until the destination works. A loop (A to B to A) never ends, and Search Console reports it as a redirect error. A JavaScript or meta refresh redirect runs inside the page, so a server trace will show the page answering 200. If the page you expected moved anyway, check its HTML for http-equiv="refresh" or a script that sets location.
Shortening a chain removes requests and failure points. It is not a ranking boost, and we can't promise traffic from it. What you get is a site where every URL resolves the way you meant it to.
Verify the fix
Re-run the trace on a sample of old URLs: the protocol and host variants of your homepage, a few retired pages, and anything that appears in Search Console under Page with redirect or Redirect error. Each one should show a single permanent hop to a page that answers 200. Then crawl your own site and confirm no internal link points at a redirect.