🔀

Redirect Checker: See Where Any URL or Link Redirects

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. This checker follows 301, 302, 303, 307 and 308 responses as well as HTML meta refresh tags, flags loops and long chains, and can send the request as Googlebot or as a phone.

One URL per line, up to 10. Each URL is traced separately, then the whole batch can be exported.

Embed this tool on your website

× px

                        

💡 Integration Tip

Copy the embed code and paste it into your website HTML. The responsive version adapts to all screen sizes automatically.

2 ratings
✓

Popular Tools

No more tools to show
Explore All Tools

What do 301, 302, 303, 307 and 308 mean?

All five are 3xx responses defined in RFC 9110 section 15.4. They differ in two things a browser cares about: whether the request method survives the redirect, and whether the answer may be cached and reused. The SEO column is how Google Search treats the signal.

HTTP redirect status codes compared: method handling, caching and search-engine treatment.
Code Name Method after the redirect Cacheable by default Search-engine signal Use it for
301 Moved Permanently POST may be rewritten to GET Yes Strong canonical signal; the new URL replaces the old one Permanent moves, HTTP to HTTPS, non-www to www
302 Found (temporary) POST may be rewritten to GET No, unless headers say so Old URL usually stays indexed A/B tests, maintenance pages, geo splits
303 See Other Always changed to GET No Treated as temporary Post/Redirect/Get after a form submission
307 Temporary Redirect Preserved, body included No Treated as temporary Temporary moves of APIs and form endpoints that must keep the method and body
308 Permanent Redirect Preserved, body included Yes Same weight as a 301 Permanent moves that must keep POST, PUT and DELETE

Two codes are often mistaken for redirects and are not: 304 Not Modified is a cache validation answer with no Location header, and 300 Multiple Choices offers a list of options instead of one target. A meta refresh tag is not an HTTP redirect either, but browsers follow it, so the checker shows it as its own hop marked meta refresh; a JavaScript location change never appears, because nothing on the page is executed. Neither does the “307 Internal Redirect” Chrome shows when HSTS upgrades http:// to https://: the browser invents that line before any request leaves the machine, so no server can send it and a server-side trace never sees it.

How do I check if a redirect is working?

Enter the old address, not the new one, and start from the exact scheme visitors use: http:// and https:// are separate rules on most servers. A working redirect gives a 3xx with a Location header on hop 1 and a 200 on the last hop, with the path and query string intact. If the last hop is 404, 403 or 405 the rule fired but points at nothing useful, and if hop 1 already returns 200 the redirect never fired at all.

  • Hop 1 returns 301, 302, 307 or 308 and not 200.
  • The final hop returns 200, not 404, 403 or 500.
  • The final URL is the exact destination, including the path, the trailing slash and any query string you sent.
  • The chain contains a single redirect: hop 1 answers 3xx and hop 2 answers 200. More redirects than that means rules are stacking.

To read every header a hop sends back, such as Location, Cache-Control and Strict-Transport-Security, inspect that URL with the HTTP headers checker.

A hop that fails with a certificate error instead of a status code stops browsers too: check that host’s certificate with the SSL checker.

How do you fix a redirect chain or loop?

A loop happens when two rules disagree: the CDN forces https://example.com while the origin forces http://www.example.com, so each hop undoes the other and the browser stops with ERR_TOO_MANY_REDIRECTS. This checker stops after 10 hops; when a URL comes round again it names the hop that redirected back into the chain, and when the chain is only too long it names the last URL it reached. Fix it by deciding on one canonical form (scheme, host and trailing slash), applying it in exactly one layer, and rewriting the other rules to point straight at the final URL instead of at each other.

  1. Pick one canonical form: https, one host, one trailing-slash convention.
  2. Enforce it in a single place, usually the CDN or the web server, never in both plus the application.
  3. Collapse chains: change the first rule to point at the final URL so A goes straight to C instead of A to B to C.
  4. Re-run the checker on the old URL and confirm a single redirect ending in a 200.

Fixing it on Apache? The .htaccess generator writes the 301 rules for you, including the http-to-https and www redirects, so each old URL needs a single hop.

Is using a redirect checker safe?

Safer than clicking the link yourself. The trace runs on our server, not in your browser: no cookies from your browser are sent, no JavaScript runs, and of a normal page only the first 64 KB are read, to look for a meta refresh tag. You see the destination host before you decide to visit it, which is exactly what you want with a t.co, bit.ly or lnkd.in wrapper. Requests to localhost, private ranges such as 192.168.0.0/16 and cloud metadata endpoints are refused, a redirect into those ranges is stopped at the hop that tries it, and every check ends after 10 hops or 20 seconds.

About Redirect Checker

This redirect checker traces what actually happens between the URL you type and the page that finally loads. From our server it sends one GET request per hop, without cookies, records the status code, the Location header and the time each hop took, and moves on to the next URL until it reaches a response that is not a redirect — 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. When a hop answers 200 with an HTML page, it reads at most the first 64 KB looking for a meta refresh tag, because that kind of redirect lives in the page and not in the headers. Nothing on the page is executed, which is also why JavaScript redirects are out of reach: they only exist once a browser runs the page’s scripts.

The output is deliberately literal. Hop 1 is the URL you entered, and every following row is the exact URL the previous hop sent you to, including the scheme change, the added or removed www, the trailing slash and the query string; a hop reached through a meta refresh is marked as such, with its delay. 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. Because some sites send phones, crawlers and desktop browsers to different places, the request can go out as our own crawler, as Chrome on Windows, as Safari on an iPhone, as Googlebot (smartphone or desktop) or as Bingbot.

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. The variants button builds the four combinations of http and https, with and without www, for the address you entered and traces them in one go, which is the quickest way to confirm that every entry point collapses into one canonical URL.

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 shortened link end up. Private addresses, localhost and cloud metadata endpoints are refused, and each check stops after 20 seconds, so the checker cannot be used to probe an internal network.

Use Cases

Verifying a site migration: paste your ten highest-traffic old URLs into bulk mode and confirm each one returns a single 301 straight to its new address instead of a 302 or a detour through the homepage.
Auditing an HTTP-to-HTTPS rollout: http://github.com should answer 301 and land on https://github.com/ with a single redirect. Three redirects usually means the HSTS rule, the www rule and the application are each redirecting in turn.
Unwrapping a shortened link before you click it: t.co, bit.ly and lnkd.in wrappers are expanded server-side, so you see the destination host without loading the page or running its scripts in your browser.
Debugging campaign tracking: check whether ?utm_source and ?gclid survive every hop, because a redirect that drops the query string silently destroys the attribution for that click.
Diagnosing an ERR_TOO_MANY_REDIRECTS report from a customer: when a URL comes round a second time the trace stops right there and names the hop that redirected back into the chain — nearly always a CDN forcing HTTPS while the origin forces HTTP; a chain that never repeats but keeps going stops at the 10-hop cap instead and names the last URL it reached.

How to check where a URL redirects

1

Paste the URL or link you want to test, for example http://github.com, or click one of the example chips below the box.

2

Optionally choose who the request comes from: our default crawler, Chrome, an iPhone, Googlebot or Bingbot. Sites that treat phones or bots differently will show a different chain.

3

Press Enter or click Check Redirects. Each hop is requested from our server and followed through 301, 302, 303, 307 and 308 responses and meta refresh tags, for up to 10 hops.

4

Read the summary: how many redirects were found, the final HTTP status, the total time and the final URL. A warning appears when the URL loops or passes through more than one redirect.

5

Follow the numbered chain to see each hop with its URL, its status badge such as 301 Moved Permanently, whether it was a meta refresh, and how long that hop took.

6

To test several addresses, switch to bulk mode (up to 10 URLs) or click the variants button to trace the http, https, www and non-www versions at once, then export the results as CSV.

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:// and www versions as well as the https:// one; the variants button does all four at once. 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.

Troubleshooting

Problem:

The check returns 403 when I choose Googlebot.

Solution:

Many large sites confirm that a visitor claiming to be Googlebot really comes from Google’s network and refuse everyone else, including this checker. Compare with the default or Chrome agent; to see what Google itself received, use URL Inspection in Search Console.

Problem:

The chain ends in 403, 405 or 503, but the page opens in my browser.

Solution:

The site is probably filtering clients: a bot shield or CDN challenge that needs cookies and JavaScript, or a block on server IP ranges. Try the Chrome or iPhone agent; if the answer does not change, the filter works on the network or on behaviour, and a server-side check cannot get past it.

Problem:

My browser shows ERR_TOO_MANY_REDIRECTS, but the checker shows a normal chain.

Solution:

The loop probably depends on something this checker does not send: a cookie, a logged-in session, or the HSTS entry your browser keeps. Clear the site’s cookies or open a private window, then compare the http:// and https:// versions with the variants button to find the rule that sends visitors back.

Problem:

A hop fails with an SSL certificate error instead of a status code.

Solution:

The certificate on that host is expired, self-signed or issued for another name, so the connection is refused before any redirect can be read. Browsers stop at the same point. Renew or fix the certificate, or point the previous hop at a host with a valid one.

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. It is also the safe way to see where a shortened or affiliate link leads before you click it.

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.

Enter your domain and click the variants button. It traces http://, https://, http://www. and https://www. for the same path in one batch. In a healthy setup all four end on the same final URL with a 200: the canonical version shows no redirect and each of the other three a single 301 or 308. Two redirects on the http://www. version usually mean the scheme and the host are fixed by separate rules that can be merged into one.

Yes. Choose the user agent before you run the check: Chrome on Windows, Safari on an iPhone, Googlebot smartphone or desktop, or Bingbot. Sites that send mobile visitors to an m. subdomain or treat crawlers differently will show a different chain for each. One caution: many large sites verify that a visitor claiming to be Googlebot really comes from Google’s network and answer 403 otherwise, so a 403 with the Googlebot agent often means exactly that. To see precisely what Google received, use URL Inspection in Search Console.

Meta refresh, yes. When a hop answers 200 with an HTML page, the checker reads its first 64 KB, finds a meta refresh tag that carries a URL and follows it as the next hop, marked as a meta refresh with its delay in seconds. JavaScript redirects, no: they only happen once a browser runs the page’s scripts, and this checker never executes anything. If the last hop is a 200 but your browser ends up somewhere else, a script is the likely cause; the Network tab in DevTools shows it as a navigation started by a script.

Four 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. The site sends phones and desktops to different places, which you can reproduce by switching the user agent. Or a JavaScript redirect finishes the journey after the page loads, which a server-side trace never sees.

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. The variants button fills the same table with the four http/https and www versions of one address.

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.

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.

Sources and further reading

FreeWebTools AI
Powered by free AI models · Full chat →