🔀

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.

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 or a JavaScript location change is not an HTTP redirect either, so it never appears in the chain above. Neither is 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.

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.

Is using a redirect checker safe?

Safer than clicking the link yourself. The trace runs on our server with a HEAD request, so the page body is never downloaded, no JavaScript runs, and no cookies from your browser are sent. 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, and the chain stops after 10 hops.

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

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 use

1

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

2

Press Enter or click Check Redirects. Each hop is followed with a HEAD request from our server, up to a maximum of 10.

3

Read the three summary cards: how many redirects were found, the final HTTP status, and the total time in milliseconds.

4

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.

5

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.

Sources and further reading

FreeWebTools AI
Powered by free AI models · Full chat →