Every hop in a redirect chain costs a little authority and a little crawl budget, and a chain that ends on the homepage or a 404 costs all of it. Chains accumulate silently through migrations, https moves and trailing-slash changes. This playbook finds them on the URLs that still matter.
Sequel supplies the URL lists. Following the redirects uses your own browsing.
Steps
-
Collect the URLs worth testing. Three sources, deduplicated:
- Old URLs that still get impressions:
google_search_console.querywithdimensions: ["page"]over the last 16 months ending 3 days ago,rowLimit: 5000. Search Console keeps about 16 months, and a URL that was redirected a year ago often still appears here. - The sitemap, fetched via
/robots.txt. - If Ahrefs is connected, the
url_tocolumn ofahrefs.backlinkswith the site astarget,limit: 1000. Backlinked URLs are the ones where a chain costs the most.
- Old URLs that still get impressions:
-
Follow each URL without auto-following. Request each URL, record the status and
Locationheader, then request the location, up to ten hops. Record the full path. Usesequel_workbenchfor the loop if you can execute code. State how many URLs you tested. -
Classify what you found.
- Chain: two or more hops. Note the pattern (http to https to www to trailing slash is the classic four-hop chain).
- Loop: any URL that reappears in its own path.
- Temporary where permanent belongs: 302 or 307 on a URL that has been moved for good.
- Redirect to the homepage: Google treats mass redirects to the homepage as soft 404s. These lose the relevance of the original URL.
- Redirect to an error: chains ending in 4xx or 5xx.
- Sitemap URLs that redirect at all: the sitemap should list final URLs.
-
Weight the findings. Attach Search Console impressions and, where available, the number of backlinks pointing at each URL. Sort by that. A four-hop chain on a URL with no impressions and no links is trivia; a two-hop chain on the most-linked URL on the site is the top finding.
-
Report. A table sorted by weight: original URL, hops, final URL, final status, classification, impressions, backlinks, fix. Fixes are specific: "redirect A directly to D", "change 302 to 301", "replace the sitemap entry with D", "update internal links to D". Then the sitemap findings and the loop list separately, since loops are outages.
Gotchas
- Use GET, not HEAD. Some servers answer HEAD differently or not at all.
- A redirect is not automatically wrong. The finding is the chain, the loop or the wrong target, not the existence of a redirect.
- Do not recommend removing a redirect for a URL with backlinks or impressions. Shorten the chain instead.
- Trailing-slash and case variants are the most common hidden chains. Test both forms of the top URLs deliberately.
- Fetch politely. A few hundred requests is fine; add a small delay and stop if the server starts returning 429.