Redirect checker

See every hop between a URL and the page it lands on: status code, where it points and how long each one costs. Checks http, https, www and non-www in one go.

Test as

Redirect status codes at a glance

CodeMeaningCached by browsers?Use it for
301Moved PermanentlyYes, by defaultOld URL → new URL, http → https, domain moves
308Permanent RedirectYes, by defaultSame as 301 but the method (POST) is kept
302FoundOnly with cache headersShort-term moves, A/B or geo routing
307Temporary RedirectOnly with cache headersTemporary move that must keep the method
303See OtherNoAfter a form POST, send the browser to a result page

Status meanings follow RFC 9110 (HTTP Semantics). Browsers also remember Strict-Transport-Security: once a site has sent HSTS, the browser upgrades http to https internally (shown in DevTools as a 307 "Internal Redirect") without asking the server.

What a redirect costs

Every hop is a full request: the browser waits for the response before it even knows where to go next. If the next URL is on another host (example.com → www.example.com), it also pays a new DNS lookup, TCP connection and TLS handshake. On a mobile connection with a 150 ms round trip that can be half a second per hop, all of it added to time to first byte before the page starts loading.

Fixing redirect chains

  1. Redirect straight to the final URL. Combine protocol and host rules so http://example.com goes to https://www.example.com/ in a single 301.
  2. Update internal links, canonicals and sitemaps to the final URL so visitors and crawlers never hit the redirect at all.
  3. Watch trailing slashes. /pricing → /pricing/ is an extra hop on every link that gets it wrong.
  4. Send HSTS (and consider the preload list) so repeat visitors skip the http hop entirely.
  5. Use permanent codes for permanent moves. A 302 left in place for years keeps search engines guessing which URL to index.

Questions developers ask

What does a redirect checker do?

It requests a URL without following redirects automatically, records each response (status code, Location header, time), then requests the next URL in the chain until it reaches a page that is not a redirect. You see every hop a browser or search engine crawler would have to make.

What is the difference between a 301 and a 302 redirect?

301 (Moved Permanently) and 308 (Permanent Redirect) tell browsers and search engines that the move is permanent: browsers may cache it and Google treats it as a strong signal to index the target URL. 302 (Found) and 307 (Temporary Redirect) say the move is temporary, so the original URL stays the canonical candidate. 307 and 308 also require the browser to keep the request method (a POST stays a POST).

How many redirects are too many?

Each hop costs at least one round trip, and a new host also costs DNS, TCP and TLS setup, so even one redirect is measurable on mobile. Google's documentation says Googlebot follows up to 10 hops and recommends keeping chains short; Chrome gives up after 20. The practical goal is zero redirects for links you control and at most one for old or typed URLs.

Do redirects hurt page speed?

Yes. Nothing on the final page can start loading until the last redirect has been answered, so redirect time is added directly to Time to First Byte and to every paint metric. That is why the TTFB and website speed tests on this site show redirect hops separately.

Why check all four http/https and www variants?

Visitors and old links reach you through http://, https://, with and without www. Each variant should go to the canonical URL in one hop. A common mistake is http://example.com → https://example.com → https://www.example.com: two hops where one would do. Tick "check all four variants" to see every entry point at once.

Is a meta refresh or JavaScript redirect detected?

No. This tool reads HTTP status codes and the Location header, which is how server-side redirects work. A meta refresh or a JavaScript location change happens only after the page has downloaded and is slower and weaker for SEO; if the final page should redirect but shows 200, look for one of those in its HTML.