FREE THOUGHT · FREE SOFTWARE · FREE WORLD

See every hop a URL takes: 301 or 302, where each Location points, how long each step took, and whether the chain ends on a real page. Check one URL as a browser, Googlebot or GPTBot, or paste a list of up to 25.

Requests come from askapache.com's server, only to public addresses on ports 80, 443, 8080 and 8443. Results are cached for two minutes.

See every hop between a URL and its final page

Enter a URL and the redirect checker follows it hop by hop, the way a browser or Googlebot would. For each hop you get the status code, the Location header, the server, the response time and the full response headers. At the end you get a verdict: how many hops, whether there is a loop, whether HTTPS was lost along the way, and whether the final page is a 200.

Switch to bulk mode to check up to 25 URLs at once, one per line, which is handy after a migration. You can also choose the User-Agent (a browser, Googlebot, Bingbot or a mobile phone) to catch servers that redirect bots differently from people.

Reading the results

  • 301 / 308: permanent. This is what you want for moved pages.
  • 302 / 307: temporary. Fine for short-term moves; a red flag when it is left in place for a permanent change.
  • Meta refresh or JavaScript redirect: not an HTTP redirect at all. Crawlers handle them poorly; replace them with a 301.
  • 4xx / 5xx at the end: the chain leads nowhere. Fix the target or redirect to a relevant page.

Why redirect chains hurt

Each hop is another DNS lookup, TCP and TLS handshake, adding hundreds of milliseconds on mobile. Google follows up to about 10 hops but recommends keeping it to one, and every extra hop is a chance for something to break. The usual culprit is stacked rules: http:// to https://, then non-www to www, then the old path to the new one. Collapse them into one rule with the redirect generator:

RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L,NE]

Check it from the command line

curl -sIL -o /dev/null -w '%{http_code} %{url_effective}\n' http://example.com/old-page
curl -sIL http://example.com/old-page | grep -iE '^(HTTP|location)'

Privacy and limits

The checker only fetches public websites on the standard web ports. Private and internal addresses are refused at every hop, including after a redirect, and only headers and a small part of each body are read. Results are cached for a short time, and the tool is rate-limited to keep it fast for everyone.

FAQ

My browser goes straight to the page but the checker shows a redirect. Why?

Browsers cache 301s and HSTS. Your browser may be skipping hops it remembers. The checker always starts fresh.

Why does Googlebot get a different result?

Some sites, plugins or CDNs redirect by User-Agent or country. Showing crawlers something different from users can be treated as cloaking, so make the paths match.

What is a redirect loop?

A URL that eventually redirects back to itself. Browsers show "too many redirects". Paste your rules into the .htaccess tester to find the rule that matches its own target.