What a redirect checker shows
When a page moves, the server answers the old address with a 3xx status code and a
Location header pointing to the new one. Browsers follow it
silently, so you rarely see how many steps it takes. The checker requests the address without
following redirects automatically, records each hop and its status code, and stops at the first page
that answers with content or an error.
It flags the problems that cost traffic: chains longer than one hop, loops where a URL redirects back to itself, redirects without a destination, and final pages that are not served over HTTPS.
Status codes in a chain
- 301 and 308 — moved permanently. Search engines index the new URL.
- 302 and 307 — moved temporarily. Search engines keep the old URL indexed.
- 303 — see other, mostly used after form submissions.
- 200 — the final page. Anything in the 4xx or 5xx range means the chain ends in an error.
Typical problems and fixes
Chains after migrations. http → https → www → new path is four requests where one would do. Point every old variant directly at the final URL, and update internal links so they never hit a redirect at all.
Loops. Two rules that send traffic back and forth — often a trailing-slash rule fighting a CMS setting, or a CDN forcing HTTPS while the origin forces HTTP. The page never loads and the browser shows "too many redirects".
Temporary redirects for permanent moves. A 302 tells search engines to keep the old URL. If the move is final, switch it to 301.
Redirects to errors. After a migration, old URLs sometimes redirect to pages that no longer exist. Check your most-linked old URLs, not just the homepage.
FAQ
How many redirects are too many?
Should I use 301 or 302?
What is the difference between 301 and 308, or 302 and 307?
Why does my redirect work in the browser but show an error here?
Can I run this check from code?
redirect_chain. Send the URL with "checks": ["redirect_chain"] to get the chain as JSON, for example after every deploy.