Redirect Chain Checker
Check 301 and 302 redirects, trace the full chain, and spot loops. Free, no signup.
When a URL moves, the hops between the old address and the page people actually land on decide how long they wait and how much ranking signal survives the trip. This redirect chain checker walks that path one hop at a time and shows you the status code and target of each, so you can confirm a 301 resolves cleanly or flatten a chain that has quietly grown through a few years of migrations. Paste a single URL to check whether a 301 is set up the way you expect and see exactly where it points.
Not sure whether a hop should be permanent or temporary? The guide on 301 vs 302 redirects covers when each one is right. For the messier cases, read redirect chains and loops on how to find them and flatten them. Moving a whole list of old URLs at once? The Redirect Mapper traces them in bulk.
How it works
- 01
Enter a URL
Paste the starting URL: an old page, a shortened link, or any address you want to trace.
- 02
Follow the chain
Sitewell requests the URL and follows each 301 or 302 in order, recording the status code and target of every hop.
- 03
Inspect the path
See the whole redirect chain, confirm the final destination, and get a warning if the hops loop back on themselves.
Frequently asked questions
- What is a redirect chain?
- A redirect chain is what you get when an old URL points at a second URL, that one points at a third, and so on before a request finally lands on a real page. One hop from the old address to the new one is not a chain. Two or more is, and that is usually the point at which it is worth running a redirect chain checker over the URL to see what the path actually looks like.
- How do I check a 301 redirect?
- Paste the URL into the checker and it follows the redirect for you, showing each hop's status code and target. You can confirm the redirect is a 301 rather than a 302, see the exact URL it points to, and check that it reaches the final page in a single hop instead of bouncing through several.
- What is the difference between a 301 and a 302 redirect?
- A 301 is a permanent redirect. It tells search engines the page has moved for good and passes ranking signals to the new URL. A 302 (or 307) is temporary and asks engines to keep the original URL indexed. Use 301 for moved or merged pages, and 302 only for short-lived diversions.
- How can I tell if a redirect is a 301 or a 302?
- The checker labels every hop with its exact status code, so you can see at a glance whether a redirect is a permanent 301 or a temporary 302 (or 307/308). If you are deciding which one a page should use, the guide on 301 vs 302 redirects walks through when each is right.
- Why do redirect chains hurt SEO?
- Every extra hop costs a round trip before anyone sees the page, and each one is another chance to leak link equity along the way. Long chains can also run past the number of hops a crawler is willing to follow, which leaves the real page undiscovered. Pointing the original URL straight at the final destination in a single 301 avoids all of that.
- How many redirects is too many?
- Browsers and search engine crawlers both stop following after a set number of hops, and those ceilings are lower than most people expect. They are not a target to aim for. In practice, anything past two hops is leftover wiring from an old migration, and you can flatten it by rewriting the first redirect to point at the last URL in the chain.
- What is a redirect loop?
- A redirect loop happens when URL A redirects to B and B redirects back to A, or any longer cycle, so the page never resolves. Browsers give up and show a 'too many redirects' error. Sitewell flags loops automatically so you can find the rule that closes the circle.
- Does this follow meta refresh and JavaScript redirects?
- It traces server-side HTTP redirects (301, 302, 307, 308) hop by hop and reports the status and target of each. A meta refresh or a JavaScript redirect happens in the browser after the response arrives, so it is not part of the HTTP chain. Check those in a browser instead.