Redirect Checker
A redirect checker follows a URL from hop to hop and reports the HTTP status of every hop until the chain ends. Enter http://github.com and it records two hops: hop 1 answers 301 Moved Permanently and points to https://github.com/, which answers 200 OK. That is one redirect, which is healthy; each extra redirect adds another round trip.
One URL per line, up to 10. Each URL is traced separately, then the whole batch can be exported.
Bulk results
| Start URL | Redirects | Final status | Final URL | Time (ms) | Note |
|---|---|---|---|---|---|
Redirect chain
Redirect loop detected
This URL redirects back to a page already in the chain, so it never reaches a final destination.
Redirect chain too long
The chain was still redirecting after 10 hops, so checking stopped there.
Connection failed
Final Destination
Popular Tools
About Redirect Checker
This redirect checker traces what actually happens between the URL you type and the page that finally loads. It sends one HEAD request per hop from our server, records the status code, the Location header and the time each hop took, and stops when it reaches a response that is not a 3xx — or after 10 hops, which is already as deep as Google’s crawlers go and about half the roughly 20 hops a browser allows before it gives up with ERR_TOO_MANY_REDIRECTS. Because the request comes from a server and not from your browser, no cookies are attached, no JavaScript runs and the page body is never downloaded, so expanding a shortened link is a read-only operation.
The output is deliberately literal. Hop 1 is the URL you entered, and every following row is the exact value of the Location header the previous hop returned, including the scheme change, the added or removed www, the trailing slash and the query string. That is what makes the tool useful for migrations: a rule that looks correct in an nginx config often behaves differently once HSTS, a CDN edge rule and an application-level canonical redirect are all in play, and the only honest way to see the result is to follow it from outside.
Bulk mode takes up to ten URLs at once, traces them one after another, and gives you a table with the number of redirects, the final status, the final URL and the total time that you can export as CSV or paste straight into a spreadsheet or a ticket. Typical work it answers in seconds: does the old product URL still land on the new one in a single 301, did the HTTP-to-HTTPS rule survive the last deploy, does an affiliate link keep its query string all the way through, and where exactly does a t.co wrapper end up. Private addresses, localhost and cloud metadata endpoints are refused, so the checker cannot be used to probe an internal network.
Use Cases
How to use
Paste the URL you want to trace, for example http://github.com, or click one of the test chips below the box.
Press Enter or click Check Redirects. Each hop is followed with a HEAD request from our server, up to a maximum of 10.
Read the three summary cards: how many redirects were found, the final HTTP status, and the total time in milliseconds.
Follow the numbered chain to see each hop with its URL, its status badge such as 301 Moved Permanently, and how long that hop took.
Switch to bulk mode to trace up to 10 URLs at once, then download the results as CSV or copy them as a table.
Pro Tips
- Aim for one 301 straight to the final URL. Every extra hop costs a full round trip, a hop that switches to HTTPS adds a TLS handshake, and a hop that changes host adds a DNS lookup on top — together typically 100-300 ms on a mobile connection before anything renders.
- Use 308 rather than 301 when the redirected request might be a POST. 301 and 302 allow clients to rewrite the method to GET; 307 and 308 must preserve the method and the body.
- Test the http:// version as well as the https:// one. Plenty of sites redirect correctly on HTTPS while a stale plain-HTTP rule still points at a decommissioned host.
- Read the status of the last hop, not just the number of redirects. A chain that ends in 404 or 405 is broken even though every redirect along the way was a clean 301.
- After a migration, run your top URLs from Search Console through bulk mode, download the CSV, and diff it against the same list a week later to catch rules that a deploy quietly reverted.
Frequently Asked Questions
It shows where a URL really sends visitors and search engines. You get every hop between the address you typed and the page that finally answers, with the status code and timing of each one. That answers three questions at once: is the redirect firing, does it point at the right destination, and how many hops are wasted along the way.
A 301 says the move is permanent: browsers cache it, and Google consolidates the old URL's ranking signals into the new address and keeps the old one only as an alternate name, so it usually stops appearing in results but can still surface when a query suggests users trust it. A 302 says the move is temporary, so the original URL normally stays indexed and the response is not cached unless the headers allow it. Use 301 for migrations and HTTPS upgrades, 302 only for A/B tests and maintenance pages.
One is the target, two is tolerable, three or more should be collapsed. Browsers abort after roughly 20 hops, and Google’s crawlers follow up to 10 redirect hops before treating the URL as an error. Every extra hop costs a round trip, a hop that switches scheme adds a TLS handshake, and a hop that changes host adds a DNS lookup as well, so a three-redirect chain can add several hundred milliseconds on mobile before the first byte of real content arrives.
Open DevTools with F12, go to the Network tab, tick Preserve log, then load the URL. Each hop appears as its own row with a 301 or 302 status; click one and read the Location header under Response Headers. The catch is that DevTools shows what your browser did, complete with your cookies, HSTS cache and extensions, so a colleague on another machine may see a different chain.
Three usual causes. Your browser has the site in its HSTS cache, so it upgrades http:// to https:// before any request leaves the machine. The site varies its answer by cookie, language header or country, and our server looks different from you. Or a meta refresh or JavaScript redirect finishes the journey in the page body, which an HTTP-level trace never sees because it only reads headers.
Yes. Switch to bulk mode and paste up to ten URLs, one per line. Each is traced separately and the results land in one table with the number of redirects, the final status, the final URL and the total time. Download that table as CSV or copy it as tab-separated text, which pastes cleanly into Sheets, Excel or a Jira ticket without any reformatting.
There is nothing visible in the URL itself. A redirect is a server response: status 301 plus a header reading Location: https://example.com/new-page. Some links advertise it in the path, such as https://www.google.com/url?q=https://example.com or an affiliate link ending in ?url=, but a plain address like http://github.com can redirect just as easily. Only the response tells you.
Find the layer that emits it, because the same rule can live in four places: an .htaccess or nginx rewrite, a CDN or DNS-level page rule, a plugin such as Yoast or Redirection, or the application router. Delete it in that one place, then purge the CDN cache and re-check. Browsers cache 301 and 308 aggressively, so test in a private window or clear the site data first.
Legitimate ones come from canonicalisation (http to https, www to non-www, adding a trailing slash), moved or renamed pages, language and country routing, link shorteners and login flows that bounce you through an identity provider. Unwanted ones usually come from an injected script, a malicious ad, or a browser extension, and those redirect from inside the page rather than in an HTTP header.
A single 301 or 308 passes ranking signals and is not a problem. Chains are, for two reasons: Google’s crawlers follow up to 10 redirect hops and report anything longer as a redirect error, and every hop delays the first byte, which feeds directly into Core Web Vitals. Loops are worse, because the page is never reachable and drops out of the index entirely. Collapse chains so the first URL points at the last.