Redirect chain

Moderate effort

Found on 6% of audited stores.

Update every internal link that passes through a redirect chain to point directly at the final destination URL, eliminating all intermediate hops.

What it is

A redirect chain occurs when clicking or following a link takes a visitor (and search engine crawlers) through two or more redirects before landing on the final page — for example, Page A → Redirect 1 → Redirect 2 → Final Page. Each step in that chain is an extra stop the browser and Googlebot must make before reaching the real content. Even a single unnecessary redirect adds latency; a chain of two or more compounds the problem significantly. The fix is straightforward: change the link's href so it points straight to the final URL, cutting out all the middlemen.

Why it matters

Every hop in a redirect chain costs you in three ways. First, PageRank (link equity) is diluted with each redirect — Google has confirmed that it loses some signal at every step, meaning pages at the end of long chains rank lower than they should. Second, each hop adds real load time (typically 100–300 ms per round trip), which directly hurts Core Web Vitals scores like Largest Contentful Paint and Time to First Byte — both ranking factors in Google's page-experience signal. Third, Googlebot has a limited crawl budget per site; chains waste that budget on intermediate URLs instead of your actual content pages, slowing down discovery and indexing of new or updated pages. Fixing redirect chains on your own internal links is entirely within your control and delivers immediate, measurable improvements to ranking potential, page speed, and crawl efficiency.

How to fix it

  1. Audit your site's internal links to identify every link whose target URL redirects one or more times before reaching its final destination. Use a crawler (Screaming Frog, Sitebulb, Ahrefs Site Audit, or Google Search Console's Coverage/Links reports) to export a list of all redirect chains.
  2. For each chained link, record the true final URL — the one that returns a 200 OK status code — after all redirects have been followed.
  3. Open the page or template that contains the offending link and replace its href value with the final URL. If the same intermediate URL appears in a global element (navigation menu, footer, breadcrumb template, or site-wide banner), updating it once in that shared component fixes all instances simultaneously.
  4. After updating links, re-crawl the affected pages to confirm that each link now resolves in a single hop (HTTP 200) with no intermediate 301/302 responses.
  5. Check Google Search Console's 'Links' report and your crawl tool again after Googlebot's next crawl (typically within a few days to two weeks) to verify the chains are gone and equity is flowing to the correct final URLs.
  6. As a standing process, review internal links whenever you change a URL or add a redirect, so new chains never accumulate.

Fix it on your platform

Pick your platform for the exact steps.

How to fix redirect chain on Shopify
  1. Run a crawl (e.g. Screaming Frog) on your store and export all internal links that pass through redirects. Note each chained URL and its final destination.
  2. For links inside page or blog content: go to Online Store → Pages (or Blog Posts), open each affected page in the rich-text editor, select the hyperlinked text, click the link icon, and replace the URL with the final destination URL.
  3. For navigation menu links: go to Online Store → Navigation, open the relevant menu (e.g. Main Menu or Footer), click the item whose URL is a redirect, and update it to the final URL. Save.
  4. For links hard-coded in theme templates (e.g. header.liquid, footer.liquid, collection pages): go to Online Store → Themes → Actions → Edit Code, locate the template file containing the link, and update the href to the final URL.
  5. If you installed an SEO or redirect app (e.g. Redirectify, SEO Manager), open it and review the redirect list — remove or update any redirect that is itself pointing to another redirect rather than to a live 200 page.
  6. Re-crawl the store after changes to confirm zero-hop chains remain.
How to fix redirect chain on WooCommerce
  1. Install and run Screaming Frog or Sitebulb against your WordPress site; export the 'Redirect Chains' report to identify every internal link that goes through multiple hops.
  2. For links inside posts, pages, or product descriptions: go to wp-admin → Posts / Pages / Products, open each affected entry in the Block Editor or Classic Editor, locate the linked text, click the link, and replace the href with the final 200-OK URL.
  3. For navigation menu links: go to Appearance → Menus, expand the menu item whose URL is chained, replace the URL field with the final destination, and save the menu.
  4. For links inside theme template files (header.php, footer.php, functions.php, or page templates): use Appearance → Theme File Editor (or edit via FTP/SFTP) to find and update the hard-coded href values.
  5. Review any redirect plugin (Redirection, Safe Redirect Manager, Yoast SEO redirects) to ensure no redirect entry points to another redirect; update the target to the true final URL.
  6. Flush any caching plugin (WP Super Cache, W3 Total Cache, WP Rocket) after saving changes, then re-crawl to verify.
How to fix redirect chain on BigCommerce
  1. Crawl your store with Screaming Frog or a similar tool and export the redirect-chain report, noting chained URLs and their final destinations.
  2. For links inside page content: go to Storefront → Web Pages, open each affected page, locate the linked text in the WYSIWYG editor, click the hyperlink icon, and update the URL to the final destination.
  3. For navigation/header/footer links: go to Storefront → My Themes → Edit Theme (Page Builder) or edit the theme files directly. In Page Builder, click the navigation or footer widget containing the link and update the URL. In theme files (Stencil CLI), edit the relevant Handlebars template.
  4. For product or category descriptions containing chained links: go to Products → View or Products → Product Categories, open the item, and edit the description field to update the link.
  5. Review any existing redirects under Storefront → 301 Redirects and correct any entry whose destination is itself a redirect rather than a final URL.
  6. Re-crawl and validate that all internal links now resolve directly to 200 OK pages.
How to fix redirect chain on Wix
  1. Use an external crawler (Screaming Frog pointed at your published Wix URL) to identify internal links creating redirect chains and note their final destinations.
  2. Open the Wix Editor for your site. Click on the element (button, text, image) that contains the chained link, click 'Link' in the toolbar, and replace the URL in the 'Web Address' field with the final destination URL. Click 'Done' and publish.
  3. For links in the site's navigation menu: open the Editor, click the menu widget, select 'Manage Menu', and update or add the correct final URL for the affected menu item.
  4. For links in the Wix footer or header strips: click directly on the footer/header element in the Editor, select the linked text or button, edit the link to the final URL, and republish.
  5. If you use Wix Redirects (Settings → SEO → Redirects), review each rule; if a redirect destination is itself a redirecting URL, update it to point directly to the final 200 URL.
  6. After publishing, re-crawl the live site to confirm chains are resolved.
How to fix redirect chain on Squarespace
  1. Run Screaming Frog or a similar crawler against your published Squarespace URL to export all redirect chains; note each final destination URL.
  2. For links inside page content blocks: open Pages in the Squarespace Editor, click Edit on the affected page, click the linked text or button, select 'Edit Link', and replace the URL with the final destination. Save and publish.
  3. For navigation links: go to Pages in the left panel, hover over the page or folder whose URL is a chain, click the gear icon (Settings), and correct the URL or slug. Alternatively, if the item is an External Link in the nav, click the three dots and update the URL.
  4. Review URL Redirects under Settings → Advanced → URL Redirects; if any redirect target is itself a redirecting URL, update it to point to the true final destination.
  5. For links inside footers or header announcement bars: open the footer/header via Design → Site Styles or the footer editing area, find the linked element, and update its href to the final URL.
  6. Re-crawl the published site after saving to confirm all chains are eliminated.
How to fix redirect chain on Webflow
  1. Crawl your published Webflow site with Screaming Frog or Ahrefs to export redirect chains; record the final destination URL for each.
  2. Open the Webflow Designer. Select the element (link block, text link, button) that contains the chained URL. In the Settings panel (gear icon), find the Link Settings section and replace the URL with the final destination URL.
  3. For links in the Navbar symbol or Footer symbol: open the Symbol in the Designer (double-click to enter), update the link URL inside, then press Escape. Because it's a symbol, the change propagates to every instance site-wide.
  4. For CMS-driven links (e.g. collection list items linked to a field): go to the CMS Collection in the Designer or Webflow Editor, check whether the link field value is set to an intermediate URL, and correct it to the final URL.
  5. Check Project Settings → SEO → 301 Redirects; if any redirect rule targets another redirecting URL, update it to the true final destination and republish.
  6. Publish the site and re-crawl to verify all internal links resolve in a single hop.
How to fix redirect chain on Adobe Commerce (Magento)
  1. Run Screaming Frog or Sitebulb against your store; export the redirect-chain report and record every chained URL plus its final 200 OK destination.
  2. For links inside CMS Pages or CMS Blocks: go to Content → Pages (or Content → Blocks), open the affected page/block in the WYSIWYG editor, locate the linked text, and change the href to the final URL. Save.
  3. For links inside category or product descriptions: go to Catalog → Categories or Catalog → Products, open the item, and edit the Description field to update any chained links.
  4. For hard-coded links in layout XML or PHTML templates: locate the relevant template file under app/design/frontend/<Vendor>/<Theme>/ (or the core module override), find the href, replace it with the final URL, and deploy static content (bin/magento setup:static-content:deploy).
  5. Review URL Rewrites under Marketing → SEO & Search → URL Rewrites; if a rewrite's Target Path is itself a redirect rather than a final URL, update the Target Path to the true destination and save.
  6. Clear the full-page cache (System → Cache Management → Flush Magento Cache) and re-crawl to confirm all chains are gone.
How to fix redirect chain on WordPress.org
  1. Install the free Redirection plugin (johngodley/redirection) or use Screaming Frog to audit all internal links and identify those that pass through redirect chains.
  2. For links inside posts or pages: go to wp-admin → Posts or Pages, open the affected entry, select the linked text in the Block or Classic Editor, and update the href to the final destination URL. Update/publish the post.
  3. For navigation menus: Appearance → Menus → expand the chained menu item → update the Custom Link URL field to the final URL → Save Menu.
  4. For theme template links: Appearance → Theme File Editor → locate the template file (e.g. header.php, footer.php) → find the href and update it to the final URL. Alternatively, use a child theme to override.
  5. In the Redirection plugin (Tools → Redirection): open the redirect list, find any entry whose 'Target URL' is itself a redirect, and update it to point directly to the final destination URL.
  6. Purge all caches (caching plugin + server-level) and re-crawl to verify.
How to fix redirect chain on Headless / Custom (I build in code)
  1. Run a crawl of your production site (Screaming Frog, custom script using fetch/axios following redirects) to build a map of all internal URLs and their redirect chains; export the 'Final URL' for each.
  2. Search your codebase (grep or IDE search) for each intermediate URL string and replace it with the final destination URL in all href attributes, router <Link> components, and any JSON/CMS content fields.
  3. Update any redirect rules in your server config (Nginx rewrite rules, Apache .htaccess, Next.js redirects in next.config.js, Netlify _redirects, Vercel vercel.json) so that no redirect target is itself a redirect.
  4. For CMS-sourced links (Contentful, Sanity, etc.), update the relevant link fields in the CMS dashboard to point to the final URL.
  5. Deploy, then use curl -IL <url> or a crawler to verify each previously-chained URL now returns HTTP 200 in a single request (or at most one intentional redirect to HTTPS/www).
  6. Add a CI/CD check or scheduled crawl to catch new chains before they reach production.
How to fix redirect chain on Next.js (Headless)
  1. Audit every internal `<Link href='...'>` and plain `<a href='...'>` across your components (e.g. `components/`, `app/`, `pages/`) plus any `router.push()` / `router.replace()` calls to collect all internal URLs that currently resolve through a redirect chain.
  2. Centralise all internal hrefs in a single canonical-URL map file (e.g. `lib/internalLinks.ts`). Each key is the old/intermediate URL and each value is the resolved final destination URL. Pull the data from your CMS or commerce API at build time if the URLs are dynamic.
  3. Create a utility hook `useCanonicalHref` (or a pure helper `resolveHref`) that looks up any given href in the map and returns the final URL, so every component shares the same resolution logic.
  4. Replace every hard-coded internal `<Link href='...'>` with `<Link href={resolveHref('/old-path')}>` and every programmatic `router.push('/old-path')` with `router.push(resolveHref('/old-path'))`. Do the same for `<a href='...'>` anchors.
  5. In `next.config.js`, audit the `redirects()` array: any redirect whose `source` is still referenced by an internal link should be removed once all internal links are updated, preventing the chain from being re-introduced.
  6. Run `next build` and use a crawler (e.g. Screaming Frog or a custom script using `fetch` with `redirect: 'manual'`) against the build output to verify that no internal link returns a 3xx status code before deploying.
How to fix redirect chain on Gatsby
  1. Audit all redirect chains: run a crawl (e.g. Screaming Frog, `gatsby-plugin-sitemap` output, or a custom Node script) against your built site to enumerate every internal URL that resolves through 2+ hops. Export the mapping of `stale_url → final_destination_url` into a JSON file (e.g. `src/data/redirect-map.json`) that your build can consume.
  2. Centralise the canonical URL resolver: create `src/utils/resolveUrl.js`. It imports `redirect-map.json` and exports a `resolveUrl(href)` helper that walks the map until it finds a URL with no further redirect, returning the final destination. All internal `<Link>` usages will call this helper so stale paths can never slip through.
  3. Replace every raw internal `<Link to={href}>` / `<a href={href}>` across page templates, components, and MDX/Markdown-sourced content with `<Link to={resolveUrl(href)}>`. Prioritise high-traffic components first: `src/components/Header.jsx`, `src/components/Footer.jsx`, `src/components/ProductCard.jsx`, navigation menus, breadcrumbs, and any component that renders CMS-sourced rich text.
  4. Patch `gatsby-node.js` (or `gatsby-config.js`) to remove or consolidate `createRedirect` calls whose `fromPath` is itself a destination of another `createRedirect`, so Gatsby's own redirect table no longer creates chains at the platform level.
  5. Add a build-time validation step in `gatsby-node.js` (`onPostBuild` lifecycle): iterate every page's internal links (parsed from the HTML output in `public/`) and assert none of them appear as a key in `redirect-map.json`. Fail the build with a descriptive error if a stale link is found, preventing regressions.
  6. Run `gatsby build && gatsby serve`, re-crawl the local server, and confirm zero redirect chains remain. Update `redirect-map.json` and re-run this process whenever new redirects are added to the commerce platform or CMS.

Does your site have this issue?

Run a free SEOLZ scan to find redirect chain — and every other issue — across your whole site in minutes.

Scan my site free

Frequently asked questions

What is Redirect chain?

A redirect chain occurs when clicking or following a link takes a visitor (and search engine crawlers) through two or more redirects before landing on the final page — for example, Page A → Redirect 1 → Redirect 2 → Final Page. Each step in that chain is an extra stop the browser and Googlebot must make before reaching the real content. Even a single unnecessary redirect adds latency; a chain of two or more compounds the problem significantly. The fix is straightforward: change the link's href so it points straight to the final URL, cutting out all the middlemen.

Why does redirect chain matter?

Every hop in a redirect chain costs you in three ways. First, PageRank (link equity) is diluted with each redirect — Google has confirmed that it loses some signal at every step, meaning pages at the end of long chains rank lower than they should. Second, each hop adds real load time (typically 100–300 ms per round trip), which directly hurts Core Web Vitals scores like Largest Contentful Paint and Time to First Byte — both ranking factors in Google's page-experience signal. Third, Googlebot has a limited crawl budget per site; chains waste that budget on intermediate URLs instead of your actual content pages, slowing down discovery and indexing of new or updated pages. Fixing redirect chains on your own internal links is entirely within your control and delivers immediate, measurable improvements to ranking potential, page speed, and crawl efficiency.

How do I fix redirect chain?

Update every internal link that passes through a redirect chain to point directly at the final destination URL, eliminating all intermediate hops.

Authoritative references

Related SEO issues