Redirect Checker

Next

Paste a URL and the checker follows the HTTP redirect chain hop by hop, printing one row per step with the status code (301, 302, 303, 307 or 308), the Location it points to, and the server and content type it reports. It stops at the first non-3xx response or when it reaches your hop limit, and it flags a loop if a URL points back to one it already visited. SEO work lives and dies on this trace: one silent 302 in a multi-hop chain can leak PageRank, and a long chain wastes crawl budget Google will not refund.

How to trace a redirect chain

  1. 1

    Enter the starting URL

    Any URL, HTTPS or HTTP, with or without `www`. The checker adds a scheme if you leave it out.

  2. 2

    Set the hop limit

    Choose how many redirects to follow, from 1 to 20. The default stops a runaway or looping chain early.

  3. 3

    Run the check

    Each hop is requested in turn and followed until a non-3xx response is returned or the limit is reached.

  4. 4

    Read the chain

    Each row shows the hop number, the status code and type (permanent, temporary, OK, client error, server error or loop), the URL, and where it redirects to.

Redirect status codes and what they mean

RFC 7231 and RFC 7538 (for 308) define the semantics. The difference between them matters for SEO, caching, and whether the browser repeats a POST or falls back to GET.

Code Name Permanent? Method preserved? Cacheable by default?
301 Moved Permanently Yes Historically no Yes
302 Found No Historically no Only if headers allow
303 See Other No Forces GET No
307 Temporary Redirect No Yes Only if headers allow
308 Permanent Redirect Yes Yes Yes

For SEO, 301 and 308 consolidate PageRank to the destination; 302 and 307 do not (Google treats them as temporary and keeps the source in its index).

What a redirect chain should look like

  • 1 hop is fine. Old URL to new URL with a single 301. No link equity lost.
  • 2 hops is tolerable if one is an HTTP-to-HTTPS upgrade and one is www normalization.
  • 3 or more hops is a red flag. Each hop adds latency, and Google documents that very long chains may be abandoned. Consolidate the chain at the server so users and crawlers reach the destination in one step.

What this checker does and does not follow

The checker follows server-side HTTP redirects: any response with a 3xx status and a Location header. It does not execute the page, so two other kinds of redirect are not followed:

  • Meta refresh. <meta http-equiv="refresh" content="0; url=..."> is an HTML-level redirect written in the page body, not an HTTP header, so it shows here as a normal 200 response.
  • JavaScript redirects. window.location = '...' runs in the browser after the page loads, so a server-side fetch never sees it.

If a URL redirects only through one of those, use a headless-browser tool to see the final destination.

Debugging a broken chain

Most broken chains come from one of three causes: a redirect loop (a hop points back to a URL already visited), a dropped www that re-redirects, or a trailing-slash inconsistency where /page and /page/ bounce to each other. The checker stops and flags the loop when a URL repeats.

Frequently Asked Questions

No. It follows server-side HTTP redirects (a 3xx status with a Location header). Meta-refresh and JavaScript redirects run inside the page after it loads, so a server-side fetch does not see them; for those, use a headless-browser tool.

You can follow between 1 and 20 hops, with 10 by default. The checker stops at your limit or when a URL points back to one already visited, so a redirect loop cannot run forever.

Only if they resolve from the public internet. URLs behind a VPN, HTTP basic auth or on localhost (and other private addresses) are not reachable by the checker.

For every hop: its number, the HTTP status code and type (permanent, temporary, OK, client error, server error or loop), the requested URL, the Location it redirects to, and the server and content type reported in the response.

No. Each request is made and its result is returned to you directly; the URLs you paste are not logged.

Related Tools

Tool available in other languages