Redirect checker

Paste a URL. We follow it one hop at a time, the way a browser or crawler does, and show every redirect with its status code (301, 302, 307, 308), where it points and how long it took, then the final page's status. Loops, temporary redirects on permanent moves, missing HTTPS and meta refresh redirects are flagged. Free, no signup.

Tip: start from http:// without www to test the whole HTTPS and www setup at once.

What the status codes mean

301 Moved PermanentlyThe page has a new address for good. Browsers cache it and search engines pass the old URL's ranking to the new one. The standard choice for HTTP to HTTPS, www changes and renamed pages.
308 Permanent RedirectSame as 301, but the request method and body are kept (a POST stays a POST). Fine for pages too.
302 Found / 307 Temporary RedirectThe move is temporary: browsers don't cache it and search engines keep the old URL indexed. Right for language, login or A/B redirects, wrong for a permanent move.
303 See OtherSends the browser to another page with a GET, usually after a form submission.
Meta refreshAn HTML tag, not a status code: <meta http-equiv="refresh" content="0; url=/new">. The page loads first, then moves. Use a server redirect when you can.
JavaScript redirectCode such as location.href = ... that runs after the page loads. This checker reads HTTP responses and doesn't run scripts, so it shows that page as the end of the chain. To see where a page ends up after its scripts run, take a screenshot of it: the result shows the page a browser lands on.

How 16 big sites redirect a bare http:// address

We typed each domain as http://domain into this checker on 25 October 2026, from a server in Canada (some final pages are country versions). Only 4 of the 16 reach their page in one hop. Most send HTTP to HTTPS, then add www in a second redirect; the extra hop costs a round trip on every first visit.

SiteChain and final URL
wikipedia.org301 › 301 › 200
https://www.wikipedia.org/
github.com301 › 200
https://github.com/
apple.com301 › 200
https://www.apple.com/
microsoft.com307 › 301 › 301 › 200
https://www.microsoft.com/en-us/ (1.4 s of hops)
bbc.co.uk301 › 301 › 200
https://www.bbc.co.uk/
theguardian.com301 › 301 › 302 › 200
https://www.theguardian.com/international
stripe.com301 › 307 › 200
https://stripe.com/en-ca
shopify.com301 › 200
https://www.shopify.com/
youtube.com301 › 301 › 200
https://www.youtube.com/
linkedin.com301 › 200
https://www.linkedin.com/
mozilla.org302 › 301 › 302 › 200
https://www.mozilla.org/en-US/ (0.9 s)
netflix.com301 › 301 › 302 › 200
https://www.netflix.com/ca/
paypal.com301 › 302 › 200
https://www.paypal.com/ca/home
dropbox.com301 › 301 › 200
https://www.dropbox.com/
amazon.com301 › 301 › 202
https://www.amazon.com/ (bot wall, no HSTS)
stackoverflow.com301 › 302 › 403
https://stackoverflow.com/questions (bot wall)

Amazon and Stack Overflow answered our checker with a bot wall (202 and 403) at the end of the chain; browsers get the page. Language and country redirects (Microsoft, Mozilla, Netflix, PayPal, Stripe) use 302 or 307 on purpose, since the target depends on the visitor.

Fixing common redirect problems

ChainsRedirect every old variant straight to the final URL in one hop (http://example.com → https://www.example.com/), and update internal links, canonicals and sitemaps to the final URL so they need no redirect at all.
LoopsUsually two rules undoing each other (www ↔ non-www, or a CDN set to "flexible" SSL that talks HTTP to an origin that redirects to HTTPS). Check the Location of each hop above to see which rule fires.
302 on a permanent moveChange it to 301 (or 308). Many frameworks default to 302: Express res.redirect(), Laravel redirect() and Django redirect() all send 302 unless you ask for a permanent one.
No HSTSSend Strict-Transport-Security: max-age=31536000 on HTTPS responses, so browsers skip the plain HTTP request on later visits.

Check where URLs end up, in code

Trace redirects from your own code

This check also runs over the Shotmint API, free with any key (500 checks a day, 0 credits), which suits migration scripts that must confirm hundreds of old URLs still land on the right page:

curl -s "https://shotmint.creasework.com/v1/check?type=redirects&url=http://github.com" \
  -H "X-API-Key: YOUR_KEY"
# {"type":"redirects", "credits_used":0, "start":"http://github.com/", "final_url":"https://github.com/",
#  "final_status":200, "redirects":1, "total_ms":103, "loop":false, "hops":[...], "issues":[]}

Screenshots and PDFs from the Shotmint API follow redirects like a browser, scripts included, and report the final page's own status in an X-Page-Status header. /v1/content returns the final URL as final_url:

curl "https://shotmint.creasework.com/v1/content?url=http://example.com&format=text" \
  -H "X-API-Key: YOUR_KEY"
# {"url":"http://example.com", "final_url":"...", "status":200, "title":..., "content":...}

Checking the rest of a page's SEO? See the robots.txt checker, Open Graph checker and structured data checker. Pay-as-you-go API: €5 buys 2,000 renders and credits never expire. Get 25 free API renders a month

Related tools

llms.txt checker · Broken link checker · robots.txt checker · SSL checker · HTTP header checker · SPF checker · DMARC checker · Website technology checker · Structured data checker · Favicon checker · Open Graph checker · Diff checker · all free tools