How to Find Redirect Chains on Your Site
Methods for discovering redirect chains across your site: crawling tools, server logs, search console, and dedicated redirect checkers. Why chains matter for SEO and performance.
A redirect chain is when URL A redirects to URL B, which redirects to URL C (or beyond). Every hop adds latency, wastes crawl budget, and can dilute link equity. One chain is a nuisance. Hundreds of them — common after migrations — are an SEO and performance problem.
Here is how to find every redirect chain on your site.
Why Redirect Chains Matter
Before hunting for chains, understand what they cost you:
Performance impact
Each redirect hop adds 50-200ms of latency. A 3-hop chain can add over half a second before any content loads. On mobile, this is devastating.
SEO impact
Google follows redirect chains, but PageRank dilution compounds with each hop. A single 301 passes ~95% of link equity. Two hops pass ~90%. Three hops — you are losing meaningful ranking power.
Crawl budget waste
Every redirect counts as a separate URL for Googlebot to crawl. Chains multiply the number of URLs the crawler must process to reach your actual content.
User experience
Users on slow connections notice redirect chains. Each hop is a visible delay — the browser bar flickers, the page goes blank, and trust erodes.
Method 1: Crawl Your Site
A site crawler is the most thorough way to discover redirect chains. It follows every internal link, maps the redirect graph, and flags chains automatically.
Using Screaming Frog
Start a crawl
Enter your domain URL and start the crawl. Let it complete — this can take minutes to hours depending on site size.
Filter by redirect status
Go to Response Codes > Redirection (3xx). This shows every URL that returns a redirect.
Check the Redirect Chains report
Go to Reports > Redirect Chains. This report shows every chain: the source URL, each intermediate hop, and the final destination. Export it.
Identify the worst offenders
Sort by chain length. Any chain with 3+ hops is a priority fix. Chains that include both 301 and 302 codes are especially problematic for SEO.
Crawl external links too
Configure your crawler to follow external outbound links one level deep. Your site might link to a URL that redirects through a chain before reaching the final destination. You cannot fix these, but you can update your links to point directly to the final URL.
Using Command Line Crawlers
If you prefer the terminal:
# Quick check for chains in a sitemap
curl -s "https://example.com/sitemap.xml" | \
grep -oP '<loc>\K[^<]+' | \
while read url; do
count=$(curl -sIL -o /dev/null -w "%{num_redirects}" "$url")
if [ "$count" -gt 1 ]; then
echo "CHAIN ($count hops): $url"
fi
done
This extracts every URL from your sitemap and checks for chains. Any URL with more than one redirect hop is flagged.
Method 2: Google Search Console
Search Console tells you what Google sees when it crawls your site.
Check the Page Indexing report
Go to Indexing > Pages. Look for pages listed under "Page with redirect" — these are URLs Google crawled that returned a redirect.
Use the URL Inspection tool
Enter specific URLs to see their crawl status. If Google had to follow a redirect chain, the inspection results show the chain.
Export and cross-reference
Export the list of redirected URLs from Search Console. Cross-reference with a cURL bulk check to identify which ones are chains (multiple hops) vs. simple single redirects.
Search Console lag
Search Console data can be days or weeks old. It tells you what Google saw during its last crawl, not what is happening right now. Always verify with a live check.
Method 3: Server Logs
Your server logs contain every redirect that actually happened in production. No sampling, no delays — just reality.
# Find URLs that triggered redirects (Apache/Nginx combined log format)
awk '$9 ~ /^3[0-9][0-9]$/ {print $7, $9}' access.log | sort | uniq -c | sort -rn | head -50
This shows your most frequently redirected URLs with their status codes. High-traffic redirect chains are your top priority — they affect the most users.
Detecting Chains from Logs
Chains are harder to spot in raw logs because each hop is a separate log entry. Look for patterns:
# Find URLs that redirect to URLs that also redirect
awk '$9 ~ /^3[0-9][0-9]$/ {print $7}' access.log | sort -u > redirected_urls.txt
# Check if destinations are also redirecting
while read url; do
dest=$(curl -sI "https://example.com$url" | grep -i "^location:" | awk '{print $2}' | tr -d '\r')
if curl -sI "$dest" | grep -qi "^location:"; then
echo "CHAIN: $url -> $dest -> ..."
fi
done < redirected_urls.txt
Trace your redirect chains
Find redirect loops, broken chains, and unnecessary hops instantly.
Method 4: Check Your Redirect Rules Directly
Sometimes the fastest way to find chains is to read your redirect configuration:
Apache .htaccess
# Look for rules that redirect to URLs that are also redirected
# This creates a chain:
Redirect 301 /old-page /middle-page
Redirect 301 /middle-page /new-page
# Fix by redirecting directly:
Redirect 301 /old-page /new-page
Redirect 301 /middle-page /new-page
Nginx
# Chain — /old redirects to /middle, which redirects to /new
location = /old { return 301 /middle; }
location = /middle { return 301 /new; }
# Fix — both point directly to /new
location = /old { return 301 /new; }
location = /middle { return 301 /new; }
Config sprawl causes chains
Chains often appear when redirect rules are added over time by different people. A redirect added in 2021 points to a URL that was itself redirected in 2023. Audit your redirect config regularly.
How to Fix Redirect Chains
Once you have found your chains, the fix is straightforward: flatten them.
Map the chain
For each chain, document every hop: A -> B -> C -> D.
Update intermediate redirects
Make every URL in the chain redirect directly to the final destination. A -> D, B -> D, C -> D.
Update internal links
Find and update any internal links that point to redirected URLs. Link directly to the final destination instead.
Verify the fix
After deploying, check each URL with cURL to confirm the chain is gone: curl -sIL "https://example.com/old-page" | grep -iE "^(HTTP/|location:)"
How Many Chains Are Too Many?
| Chain Length | Severity | Action |
|---|---|---|
| 1 redirect (no chain) | Normal | No action needed |
| 2 hops | Minor | Fix when convenient, prioritize high-traffic URLs |
| 3 hops | Moderate | Fix soon — measurable SEO and performance impact |
| 4+ hops | Critical | Fix immediately — significant ranking and UX damage |
Related Articles
Find the chains, flatten the chains, verify the fix. Your crawl budget and your users will thank you.
Never miss a broken redirect
Trace redirect chains and detect issues before they affect your users and SEO. Free instant tracing.