Skip to content

Network

Redirect Chain Checker

Redirect Chain Checker

Beta

Follow a URL through every redirect. See each hop's HTTP status code, the Location it points to and how long it took, up to the final page. Loops and private addresses are caught.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas
Examples:
The URL is sent to FindUtils (api.findutils.com), which requests it and follows each redirect for you.

How the check works

  1. 01

    Your URL goes to FindUtils

    A browser page cannot read another site's redirects, so the page sends the URL to FindUtils, which makes the requests from its own servers.

  2. 02

    Each hop is requested and checked

    Every hop gets a HEAD request (GET only if HEAD is refused). Before a redirect is followed, its target is checked: only public http and https addresses are requested.

  3. 03

    The chain ends, or is stopped

    It ends at the first response that does not redirect. It stops at a loop, after 10 requests, or at a redirect to a private or local address.

How to Check a Redirect Chain

  1. Enter the URL

    Paste the link you want to trace, such as http://example.com. A bare domain gets https:// in front.
  2. Run the check

    Click Check. FindUtils requests the URL and follows each redirect, one hop at a time.
  3. Read the hops

    Each hop shows its status code, the URL requested, where it points next and how long it took. The summary shows the final URL and the number of redirects.
  4. Fix what you find

    Point old links straight at the final URL, replace temporary redirects that should be permanent, and break any loop the checker reports.

Common Uses

Site migrations

After moving pages, check that each old URL reaches its new home in one permanent redirect rather than a chain of several.

HTTP to HTTPS and www rules

Check that http://, https://, www and non-www versions of a domain all end at the same canonical URL without going through extra hops.

Tracking and short links

See where a short link or a campaign link really goes before you share it, and how many hops it takes to get there.

Debugging loops

When a page never loads with "too many redirects", the chain shows which two URLs point at each other.

Why check a redirect chain?

A link can pass through several redirects before it reaches a page: http to https, the bare domain to www, an old path to a new one, a tracking link to its target. Each hop costs a round trip, a temporary redirect where a permanent one was meant can confuse search engines, and a loop means the page never loads. A status code table tells you what 301 means; this tool shows you which codes a real URL returns, in order, with the Location each hop points to and how long each one took.

Redirect Chain Checker follows a URL through every redirect and shows the chain hop by hop: the URL requested, the HTTP status code, the Location it points to and the time each hop took, up to the final response. It reports the final URL and the number of redirects, catches loops, stops after 10 requests, and follows a meta refresh it finds by reading the first 16 KB of the final HTML page.

A browser page cannot read another site's redirects, so this page sends the URL to FindUtils, which makes the requests from its own servers and checks every hop before following it: only public http and https addresses are requested. To look up what a status code means, use the HTTP Status Code Lookup. To check the security headers of the final page, use the Security Headers Analyzer, and to check its certificate, the SSL Certificate Checker.

How it compares

On a command line, curl -sIL https://example.com prints the headers of every hop, and a browser's network panel shows the redirects it followed. This page gives the same chain as a readable list without a terminal, with each hop's time, loop detection and a guard against private addresses, and it works on a phone.

Unlike curl on your own machine, the requests come from FindUtils's servers. The page sends the URL to FindUtils at api.findutils.com; the REST API and MCP tool use the same module. FindUtils does not store that input, and logs the request without its content.

Tips for Clean Redirects

  • Link to the final URL directly; every hop you remove saves a round trip.
  • Use 301 or 308 for a permanent move and 302 or 307 only for a temporary one.
  • Combine the https and www rules so a visitor makes one hop, not two.
  • If a chain loops here but works in your browser, the site may be waiting for a cookie.
  • Check the final status too: a chain that ends in a 404 is a broken link, however clean the redirects are.

Frequently Asked Questions

What does the Redirect Chain Checker show?

It shows every hop a URL goes through before the final page: for each hop, the URL requested, the HTTP status code (such as 301, 302 or 200), the Location it redirects to, and the time in milliseconds. Above the list you see the final URL, the number of redirects and the total time. If the chain loops, gets too long or points somewhere it may not follow, it says where and why it stopped.

What is the difference between 301, 302, 307 and 308 redirects?

301 (Moved Permanently) and 308 (Permanent Redirect) say the resource has moved for good; 302 (Found) and 307 (Temporary Redirect) say the move is temporary. 307 and 308 also require the client to repeat the same method and body, while a 301 or 302 may turn a POST into a GET. 303 (See Other) tells the client to fetch the target with GET. For a page that has moved for good, use 301 or 308.

How many redirects does the checker follow?

At most 10 requests per chain. If the URL is still redirecting after that, the result stops with "Too many redirects". Each request also has a time limit, and so does the whole chain, so a server that hangs cannot hold the check open. A healthy chain is short: one redirect from an old URL to its new home is ideal.

How does it detect a redirect loop?

It remembers every URL in the chain. When a redirect points back to a URL that was already requested, it stops and reports a loop instead of requesting it again. The checker sends no cookies, so a site that redirects until a cookie is set, such as a consent or login page, can show as a loop here even though a browser gets through.

Does it detect meta refresh and JavaScript redirects?

It detects meta refresh redirects, but only by reading a capped amount of the page: when the final response is an HTML page, it reads up to the first 16 KB and looks for a meta http-equiv="refresh" tag with a URL, then follows it as a hop. It does not run JavaScript, so a redirect made by a script is not seen.

Why are some URLs refused?

Only public http and https addresses are requested. A URL, or any redirect in the chain, that points to a private network address (such as 10.x.x.x or 192.168.x.x), to localhost, to a link-local address such as 169.254.169.254, to a name with no dot, to a non-web scheme such as ftp: or file:, or that carries a user name and password, is not requested. The chain stops at that hop and says why. This keeps the checker from being used to reach internal systems.

Why does my browser end somewhere else than the checker?

The requests come from FindUtils's servers, not from your browser, and they send no cookies and a FindUtils user agent. A site can redirect differently by country, language, device, login state or user agent, so the checker shows the chain those servers get. Compare with your browser's network panel if the two differ.

Why does a hop say GET instead of HEAD?

The checker asks for each hop with a HEAD request, which returns the status and headers without the page. Some servers refuse HEAD with 405 (Method Not Allowed) or 501 (Not Implemented); for those hops it repeats the request with GET and does not read the body. The hop is marked so you know which method gave the result.

What leaves my browser, and is the URL stored?

This page sends the URL you enter to FindUtils at api.findutils.com over HTTPS, the same endpoint the REST API uses; nothing else on the page is sent. FindUtils then requests that URL, and each redirect it is allowed to follow, from its own servers, so those sites see a request from FindUtils, not from you. The REST API and MCP tool are a separate path: a call sends the input you include to FindUtils over HTTPS, where it is processed and the result returned. FindUtils does not store that input, and logs the request without its content.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool