Redirect chains are when one URL redirects to another, which redirects to another before it reaches the real page — A → B → C. A redirect loop is worse: A sends you to B and B sends you back to A, so the page never resolves at all. Both waste crawl budget, slow the shopper’s journey, and dilute the link equity flowing through every hop. The fix is simple to state and worth doing properly: flatten each chain so the original URL points straight to the final destination in one 301 hop, and remove every loop so no URL is left unreachable. This guide shows where chains and loops come from on Shopify, how to find them, and how to clean them up for good.
What chains and loops actually are
A single redirect is healthy: an old URL returns a 301 (permanent) status and the browser follows it once to the live page. Problems start when redirects stack on top of each other.
-
A redirect chain is more than one hop between the requested URL and the final page:
/products/old-handle → 301 → /products/newer-handle → 301 → /products/final-handle (A) (B) (C)A visitor (and Googlebot) has to make three requests to see one product. Every hop adds latency and is another chance for equity to leak.
-
A redirect loop never resolves:
/collections/sale → 301 → /collections/clearance → 301 → /collections/sale → …The browser bounces between the two URLs until it gives up and shows an error like “too many redirects.” That page is effectively unreachable — for shoppers and for search engines.
Why they matter
Chains and loops cost you in four ways at once:
- Latency. Each hop is a full round trip. Two or three extra redirects on a product link add up, and speed is both a ranking factor and a conversion factor — the same reason a slow Shopify store underperforms.
- Wasted crawl budget. Search engines allocate a finite amount of crawling to your store. Every hop they follow is a request spent going nowhere useful instead of on your real pages. Long chains may not be followed to the end at all, so the final URL can go undiscovered.
- Diluted link equity. A 301 passes ranking signals, but stringing several together gives equity more places to leak. One clean hop preserves more of it than three.
- Broken journeys and dead pages. A loop returns an error, not a product. Shoppers who hit it leave, and any inbound link, ad or bookmark pointing at that URL is wasted.
Where chains and loops come from on Shopify
Chains are almost never created on purpose. They accumulate:
- Migration residue. When you moved to Shopify, you (hopefully) built a redirect map from the old URLs to the new ones. If the store later changed again, or the map itself pointed at interim URLs, those old redirects now hop through a URL that has since moved. This is the single most common source — see Shopify 404 errors after migration for the wider migration picture.
- Changed product handles. Rename a product or collection and Shopify offers to create a redirect
from the old handle to the new one automatically. Do that twice —
handle-v1→handle-v2→handle-v3— and the first redirect still points at the middle handle, not the current one. Now every link tohandle-v1runs a two-hop chain. - App-generated redirects. Some apps (SEO tools, URL managers, discount and landing-page apps) create their own redirects. Uninstall or reconfigure the app and its redirects can linger, layered on top of yours — the kind of leftover residue that quietly breaks internal journeys.
- Manual redirects over time. Different people add redirects over the years without checking what already exists. A new “redirect from” gets pointed at a URL that is itself already a redirect target, and the chain grows a link.
Loops usually come from two redirects created independently that happen to reference each other — for
example, an old redirect points /a → /b, and later someone adds /b → /a to “fix” a different
problem, not realizing the first rule exists.
How to find them
You can’t flatten what you can’t see. Use three lenses together:
- Crawl for redirect chains. A site crawler (Screaming Frog, Sitebliss, Ahrefs Site Audit) has a dedicated “redirect chains” report. Point it at your live domain and, ideally, feed it your list of old URLs so it follows every one to its end. The report shows each hop and flags loops automatically — the fastest way to see the full picture.
- Google Search Console. The Indexing → Pages report lists URLs excluded as “Page with redirect.” Cross-reference the ones that still earn impressions in the Performance report — those are the chains actually costing you visibility.
- The Shopify URL redirects list. In the admin, go to Online Store → Navigation → URL Redirects (or Settings → Redirects in newer layouts). This is the full list of redirects Shopify itself serves. Export it to a spreadsheet and scan for “redirect to” values that also appear as a “redirect from” somewhere else in the list — that overlap is a chain.
Merge the findings into one sheet: one row per source URL, its current hops, and the true final destination.
How to fix them
The rule is one line: each source URL should 301 straight to its final live destination — no intermediate hops, no loops.
Before (a chain):
/products/blue-widget-old → 301 → /products/blue-widget-2023 → 301 → /products/blue-widget
After (flattened):
/products/blue-widget-old → 301 → /products/blue-widget
/products/blue-widget-2023 → 301 → /products/blue-widget
Both old handles now reach the live product in a single hop. To do this in Shopify:
- Trace each chain to its true end. Follow the hops until you reach a URL that returns a real
200page, not another redirect. That final URL is the destination for every source in the chain. - Repoint the source directly. In URL Redirects, edit the first redirect’s “redirect to” value so it points at the final URL. Repeat for any middle URLs that are themselves indexed or linked — each should point at the final destination too.
- Remove loops. For a loop, decide which URL is the real live page, point the other one at it in one hop, and delete the reverse redirect that closed the loop.
- Delete redundant redirects. Once every source points at the final URL, any intermediate redirect that no longer sits on a live path can be removed to keep the list clean. (If a middle URL still has its own inbound links, keep it — but pointed at the final destination, not the next hop.)
For a large store, don’t hand-edit hundreds of rows. Shopify supports bulk CSV import of redirects (with Redirect from and Redirect to columns), and the Admin API can update them programmatically — the right approach when a migration left a big tangle behind.
How to prevent them coming back
- Always redirect to the final URL, never to another redirect. Before you save a new “redirect to” value, check it isn’t already a “redirect from” elsewhere in the list.
- When you change a handle, update the existing redirect instead of letting a new one stack on
top. If
handle-v1already redirects tohandle-v2and you rename tohandle-v3, edit the first rule to point athandle-v3— don’t just accept the auto-createdhandle-v2→handle-v3hop. - Review the redirect list periodically. A quarterly crawl for chains and loops catches new ones before they compound, especially after installing or removing apps.
- Audit app redirects when you uninstall. Removing an app doesn’t always remove the redirects it created; check the list afterward.
Common mistakes
- Adding a new redirect on top instead of updating the old one. The number-one cause of chains: “redirecting” an already-redirected URL by creating a fresh rule rather than editing the existing target.
- Redirecting to the homepage to “clear” a chain. That throws away the page’s rankings — send it to the closest live equivalent instead.
- Fixing a loop by adding a third redirect. That usually makes it a longer loop. Delete the offending rule; don’t paper over it.
- Only checking the live URLs and forgetting old ones. The chains that hurt most are on old, externally linked URLs you no longer see in your navigation.
When to get help
A handful of chains from a couple of renamed products, you can flatten in an afternoon. A store with years of migration residue, app redirects and hundreds of stacked rules is a different job — one where missing a loop leaves a linked, revenue-earning page unreachable. That untangling is core to any real store migration engagement: we export the full redirect list, crawl for every chain and loop, repoint each source to its final destination in one hop, and remove the residue. If your organic traffic slid after a replatform, the redirect tangle is often part of why — see Shopify traffic dropped after migration. And if you want a second opinion first, a free profit audit will surface the chains and loops that are costing you most.
Redirects piling up into chains? Send us your store URL — we’ll map your redirects, flatten the chains to single hops, kill any loops, and clean up the residue. See our store migration service or get a free profit audit.