Redirect checker

Trace every redirect hop for up to 10 URLs at once: the status code, Location and caching headers at each step, plus meta-refresh and JavaScript redirects the server can't show you. Pick Googlebot, Bingbot, Chrome or iPhone to see what each one is sent.

Check redirects

Requests come from our server, one hop at a time (max 15 hops). Nothing is stored. The user-agent setting changes only the header we send; sites that verify real Googlebot by IP address will still know it's us.

What a good redirect looks like

One hop, permanent, straight to a page that answers 200. For a site move or an http → https switch that means 301 or 308 from every old URL directly to its final https address, not via the home page and not through a chain of rules that each fix one thing (protocol, then www, then trailing slash).

What this checker flags

  • Chains: more than one hop. Each costs a round trip; Googlebot follows up to 10 (per Google Search Central) and other crawlers give up sooner.
  • Loops: the chain revisits a URL. Browsers show ERR_TOO_MANY_REDIRECTS.
  • Temporary codes on what looks like a permanent move.
  • Client-side redirects: meta refresh and JavaScript location changes, which a plain HTTP check would miss.
  • Downgrades from https to http mid-chain, and a canonical tag that disagrees with where the redirect lands.

Why the user agent matters: some sites send phones to an m. subdomain, geo- or bot-route visitors, or (when hacked) show crawlers different redirects than people. Compare “Googlebot” with “Safari on iPhone” to spot it. For the meaning of each code, see 301 vs 302 and the status code reference.

Redirect codes at a glance

CodePermanent?Keeps method?
301YesNo (POST may become GET)
302NoNo
303NoAlways becomes GET
307NoYes
308YesYes
meta refreshGoogle treats 0-second as permanentn/a

Source: RFC 9110 §15.4; Google Search Central, “Redirects and Google Search”.

Questions people ask

How do I check if a URL redirects?

Paste it above and press Check. Every hop is listed with its status code and Location header until the chain ends at a page that answers 200 (or fails). In a terminal, curl -sIL followed by the URL prints the same chain.

How do I check whether a redirect is 301 or 302?

Look at the status code shown for each hop. 301 and 308 are permanent, 302, 303 and 307 are temporary. A browser hides this, so you need a checker or your browser's DevTools Network tab with “Preserve log” switched on.

Can I check redirects in bulk?

Yes, up to 10 URLs per run here, and you can export the results as CSV. For hundreds of URLs, the dead link checker on our home page checks up to 500 and shows the redirect count and final URL for each.

Why does the checker show a different result from my browser?

Your browser may have cached an old 301, or the site may route by device, country, cookie or user agent. Try the iPhone or Chrome user agent, and test in a private window to bypass the cache.

Does this checker follow JavaScript redirects?

It doesn't run JavaScript, but it scans the final page source for meta refresh tags and common window.location redirects and reports where they point.

How many redirects are too many?

Aim for one. Google follows up to 10 hops, but every extra hop adds latency, and long chains are fragile when someone later edits one of the rules.

Keep going