
What an internal redirect actually is
You have a page. On it there is a link to another page on your own site. When someone clicks that link, or when Googlebot follows it, the server does not serve the page directly. Instead it returns a redirect status, usually a 301 (permanent) or a 302 (temporary), and says "the thing you want is over here." The browser or crawler then makes a second request to that new location. That extra hop is the internal redirect.
Nothing is broken here. The visitor still lands on a working page. That is exactly why this issue slips past so many teams: it never throws an error, it never shows a 404, and everything looks fine in a browser. It is death by a thousand tiny detours. One redirected internal link is nothing. Ten thousand of them across a large site is a real drag on crawl efficiency and a small tax on every page load.
Why it matters for SEO and crawling
Three concrete reasons this belongs on your fix list:
Crawl budget. Every redirect is a round trip Googlebot has to make before it reaches the content. On a site with a few hundred pages this is invisible. On a site with hundreds of thousands of URLs, redirect hops eat into the finite number of requests Google is willing to spend on you per day. Requests burned on redirects are requests not spent discovering or refreshing real pages.
Link signals. Google has said a 301 passes ranking signals, and modern handling means you rarely lose measurable equity through a single well configured 301. But you are relying on Google to consolidate the signal correctly every time, forever. Pointing the link at the final destination removes the middleman and removes the risk. Free clarity, no downside.
Speed. A redirect adds a full network round trip before the real page even starts loading. On mobile connections that can be a couple hundred milliseconds per hop, and it stacks if you have chained redirects. Users on your own navigation should never pay that toll.
Single hop versus a redirect chain
How to detect internal redirects
This is a solved problem. You do not need to guess.
- Screaming Frog SEO Spider. The fastest route. Crawl the site, then open the Response Codes tab and filter to Redirection (3xx). Better still, run the "Redirect Chains" report under Reports, which lists the source page, the redirected URL, and the final destination in one export. Sort by source and you have your work order.
- Sitebulb. Flags "Internal URLs that redirect" as a dedicated hint and shows you the linking pages, which is what you need to actually fix them.
- Google Search Console. The Pages report under Indexing shows "Page with redirect" as a status. Useful for confirming Google's view, less useful for pinpointing which internal links to edit.
- Server logs. If you want proof of how often bots are hitting redirected internal URLs, grep your access logs for 301 and 302 responses to Googlebot. Great evidence for prioritising.
How to fix it, step by step
- Export the redirect list from Screaming Frog with source page, redirected link, and final destination columns.
- For each row, confirm the final destination returns a clean 200 and is the page you actually want to link to. Do not blindly trust the redirect target.
- Edit the link in the source page, template, menu, or database so the href points at the final 200 URL. Most site wide instances come from a handful of shared templates or nav components, so fixing the template clears thousands of rows at once.
- Watch for chains. If A redirects to B which redirects to C, update your link to C and, separately, flatten the redirect rules so B points straight to C too.
- Re-crawl and confirm the redirect count drops. Keep the redirect rules in place at the server level as a safety net for old external links and bookmarks. You are removing internal links to them, not the rules themselves.
What good looks like
| Scenario | Response chain | Verdict |
|---|---|---|
| Internal link to live page | 200 | Ideal |
| Internal link through one 301 | 301 to 200 | Fix when convenient |
| Internal link through a chain | 301 to 301 to 200 | Fix now |
| Internal link to a loop | 301 to 301, no 200 | Emergency |
A healthy site has close to zero internal links that resolve through a redirect. Redirect rules still exist on the server to catch legacy inbound traffic, but your own navigation, menus, breadcrumbs, and body links all point at final 200 URLs.
- Point every internal link at the final 200 URL
- Fix the shared template or menu once to clear thousands of rows
- Keep server side redirect rules for legacy external traffic
- Flatten chains so each redirect goes straight to the destination
- Re-crawl after edits to confirm the count fell
- Shrug it off because "301s pass equity anyway"
- Leave redirect chains of three or more hops in place
- Delete the redirect rules and break old inbound links
- Link to a redirect target without checking it returns 200
- Fix one page by hand when a template edit fixes all of them
FAQ
Does a single internal redirect actually hurt rankings?
Should I remove the redirect rule after I fix the links?
What is the difference between a redirect and a redirect chain?
Why do these appear if I never linked to a redirect on purpose?
A full crawl surfaces the chains, loops, and template level offenders that hand crawling one at a time will miss. We turn the export into a prioritised work order.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







