A redirection is not an error, so no broken link report will ever show it to you. That is exactly why redirects accumulate unnoticed until half your internal links arrive at their destination the slow way. This tool crawls your site and lists every address that answers with a 301, 302, 307 or 308, together with the pages that link to it.
Analysing the site, this can take a few minutes on a large website. Please leave this page open.
Not every redirection is a problem. Most sites need a few, and a correctly configured one costs almost nothing. The report separates the harmless from the expensive so that you only spend time on what matters.
| What we report | Why it appears | What to do |
|---|---|---|
| Loop | The redirections point at each other, so the page never arrives. The browser gives up and shows an error. | Repair immediately. This page is unreachable for everyone. |
| Dead end | The redirection works but the final address answers 404 or another error. | Repair. This is a broken link wearing a disguise, and a plain broken link report will not catch it. |
| Chain | Two or more redirections in a row before reaching the page. | Point the first address straight at the final one. |
| Temporary | A 302 or 307, which tells search engines the move is not permanent. | Check it is really temporary. If the move is permanent, use a 301 instead. |
| Permanent | A single 301 or 308 landing on a working page. | Usually nothing. Worth updating the internal link anyway, see below. |
Each hop in a chain is a full round trip: a request leaves the browser, the server answers, and the browser starts again at the new address. Three redirects before the page appears means three round trips paid by every visitor, on every visit, before a single byte of your content is delivered. On a mobile connection this is measured in whole seconds.
Search engine crawlers apply their own patience limit and may stop following before reaching the end of a long chain. When that happens the destination page is simply not seen.
A redirection exists to catch addresses you do not control: old links on other sites, bookmarks, printed references. Inside your own site you control both ends, so a link pointing at an address that redirects is a link you forgot to update. Keep the redirect for the outside world, and correct the internal link so your own pages go straight to the destination.
A 301 tells search engines the move is permanent: they transfer the accumulated ranking signals to the new address and eventually drop the old one. A 302 tells them the opposite, that the old address is the real one and will come back, so they keep it indexed and pass nothing along. Using a 302 for a permanent move is one of the most expensive small mistakes in web maintenance, and it is invisible until you look at the codes. Google states which code to use in which case in Redirects and Google Search. The status code reference covers the whole family, including 307 and 308.
This one is worth checking on your own site right now. A visitor typing the address without the prefix often travels like this:
http://example.com/page 301 -> https://example.com/page 301 -> https://www.example.com/page 200 the page finally loads
Two redirections where one would do. Both rules are individually correct, which is why nobody notices: each was added at a different time for a good reason. The fix is a single rule that applies the protocol and the host in one step, so the first request lands directly on the final address.
Each entry shows the address as it was requested, then every hop with its code, then the final destination and its status. Under it you get the pages that link to that address, up to five of them, because those are the files you open to correct the link.
Work through the list in the order the report gives you: loops first since those pages are unreachable, then dead ends, then chains, then temporary redirects you meant to be permanent. Single permanent redirects landing on a working page can be left alone if you are short on time.
On Apache the rules live in the .htaccess file at the root of your site. To collapse the protocol and host chain shown above into one step:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]
To make a single move permanent rather than temporary, the code is part of the directive:
Redirect 301 /old-page.html https://www.example.com/new-page.html
Our guide on fixing 404 errors covers the rest of the repair decisions, and the glossary defines redirect chain, redirect loop and canonical URL.
A correctly configured permanent redirect is not. What costs you is the wrong type, chains that slow every request, and redirects that end on a missing page. Those three are what this report isolates.
One is normal. Two is worth collapsing. Beyond that you are paying a real cost on every visit, and crawlers may not follow to the end. Google documents that its crawlers follow up to ten hops before giving up, in How HTTP status codes affect Google's crawlers. Our crawler stops after five hops and reports the address as having too many redirects.
Not quickly. External links and bookmarks pointing at the old address can survive for years, and removing the rule turns each of them into a 404. Fix the internal links so your own pages do not use it, and leave the rule in place for the outside world.
The crawler follows the links it finds in your pages, so every address in the report is linked from somewhere on your site. The source pages listed under the entry tell you exactly where.