WriteMySEO / Blog / Redirect Chains Cost Crawls, Not PageRank
SEO technology

Redirect Chains Cost Crawls, Not PageRank

Redirect chains rarely leak ranking signals. What they actually cost is crawl requests, discovery latency, and hops past Googlebot's limit. Here's how to measure yours.

The standard advice about redirect chains is built on a claim Google has repeatedly denied: that each hop "leaks link equity." That framing survives because it's easy to say and impossible for anyone outside Google to disprove. Meanwhile the costs that are observable — extra fetches, delayed discovery, hard hop limits, and canonicalization ambiguity — get less attention than they deserve.

If you fix chains for the wrong reason, you'll prioritize the wrong ones. A two-hop chain on a page nobody links to is noise. A four-hop chain sitting in front of every product URL in your sitemap is a crawl tax you pay on every recrawl, forever.

Where multi-hop chains come from

Nobody designs a five-hop redirect. Chains accumulate because redirect rules live in different layers that each run independently, and each layer only knows its own job.

A realistic stack:

  1. CDN edge rule upgrades http:// to https://
  2. CDN edge rule adds or strips www
  3. Application normalizes casing or strips a tracking parameter
  4. Framework router enforces a trailing slash
  5. A 2019 migration rule maps /old-category/item to /shop/item
  6. A 2023 migration rule maps /shop/item to /products/item

Each rule is one 301. Request http://example.com/Old-Category/Item?utm_source=x and you get six. Nothing is broken — every hop returns a valid Location header — which is exactly why nobody notices. Browsers follow all of it in a few hundred milliseconds and users never see a problem.

Migration layering is the worst offender. Each migration adds a rule that points at the current URL rather than resolving against the final one, so chains grow by one hop per redesign and never shrink.

What Googlebot does when it hits a chain

Google's documentation on redirects describes a limit of 10 redirect hops. If Googlebot doesn't receive content within that limit, Search Console reports a redirect error, and the crawler resumes the chain on a later crawl rather than giving up permanently.

The practical mechanics matter more than the limit:

Does a chain actually lose PageRank?

Google representatives, including Gary Illyes, have stated publicly that no PageRank is lost through 30x redirects, and John Mueller has repeated versions of that since. That's a statement from the vendor, not something anyone can independently verify, so treat it as a strong prior rather than proof.

Here's the decision rule that works regardless of who's right. If a redirect resolves cleanly and quickly to a relevant target, the signal question is almost certainly moot and your effort is better spent elsewhere. Worry when one of these is true instead:

Not all redirect types behave the same

MechanismResolved atMethod preservedNotes
301 / 308Fetch time308 onlyPermanent; strongest canonical hint
302 / 307Fetch time307 onlyGoogle may still consolidate if it persists
meta refresh (0s)Parse timen/aGoogle supports it; slower and weaker than HTTP
JS location changeRender timen/aRequires rendering; worst for discovery latency
rel=canonicalIndexingn/aNot a redirect; users still land on the old URL

If you control the server, HTTP redirects are the only option worth defaulting to. The others exist for cases where you don't.

How to inventory your chains

The fastest single-URL check:

curl -sIL -o /dev/null \
  -w '%{num_redirects} hops | %{time_total}s | %{url_effective}\n' \
  'http://example.com/Old-Category/Item'

For full chain visibility, print every hop:

curl -sIL 'http://example.com/old' | grep -Ei '^(HTTP/|location:)'

At scale, run your crawler with redirect-following disabled so every hop is recorded as its own row, then join url → location repeatedly until you reach a non-3xx. That gives you chain length, terminal status, and loop detection in one pass. Following redirects silently is what hides the problem.

Then check the two places chains actually hurt:

What to fix, in order

  1. Flatten chains that sit in front of indexable templates. Rewrite old migration rules to point at the current final URL, not at the next rule in line. This is a config change, not a redesign.
  2. Remove 3xx URLs from sitemaps and internal links. Internal links to redirecting URLs are the largest avoidable source of 3xx crawl requests on most sites, and they're entirely under your control.
  3. Collapse normalization rules into one layer. Protocol, host, case, and trailing slash should be decided in a single rule that emits one Location, not four chained ones.
  4. Convert render-time redirects to HTTP redirects wherever a server or edge worker can make the decision.
  5. Re-measure with logs, not a crawler. A crawl tells you the chain exists; logs tell you how many times Googlebot paid for it last week.

Fix the chains that run across templates and sitemaps. Leave the orphaned two-hop ones alone — the measurable cost there is close to zero, and so is the payoff.

redirectscrawlinglog filesmigrations

WriteMySEO produces marketing content, not legal, medical, financial, or compliance advice. Figures cited reflect publicly reported industry data at time of writing and shift over time.

Get started

We write this well about your industry, every month.

AI-drafted, human-reviewed SEO content on a flat subscription. Blog posts, metadata, schema, and internal links, shipped on a monthly rhythm.

See plans

More from the blog