12 min read
How to Check URL Redirects (and Read a Redirect Chain)
Check URL redirects step by step with TrueURL, curl and DevTools, read every hop of a redirect chain, and fix loops, long chains and mixed 301/302 redirects.
Read articleFree redirect tool
Trace every hop between a URL and its final destination. Find unnecessary redirects, temporary codes and slow hops, then flatten the chain to a single redirect.
Press Enter to check
Cloudflare's edge always validates certificates, so this cannot skip the check. Certificate problems are reported in the result.
Sent with the first request, up to 16 KB. JSON bodies are sent as application/json, others as a form, unless you set a Content-Type header.
1 to 50. Browsers stop after 20.
Sites can redirect phones, crawlers and link preview bots differently.
Sent with every request in the chain.
No custom headers.
Enter a value to send this header. Header values are never saved.
Follow <meta http-equiv="refresh"> tags and Refresh headers found in HTML pages.
Follow simple, unconditional redirects such as location.href = "…" in page scripts.
Settings are remembered in this browser. Cookies, header values and the POST body are never saved.
A redirect chain is the sequence of redirects a browser or crawler has to follow before it reaches a page with content. One hop, such as /old-page to /new-page, is normal. Chains grow when rules pile up over the years: an HTTP to HTTPS rule, then a www rule, then a trailing slash rule, then a rule from the last redesign. This chain has four redirects where one would do:
http://example.com/shop 301
https://example.com/shop 301
https://www.example.com/shop 301
https://www.example.com/shop/ 302
https://www.example.com/store/ 200
Each row is one hop. The status shows the kind of redirect: 301 and 308 are permanent, while 302, 303 and 307 are temporary. The method shows where a POST turned into a GET, as browsers do after a 301, 302 or 303. The raw Location value shows exactly what the server sent, which helps you spot relative paths, missing slashes or stray query strings. Hops labelled meta refresh or JavaScript are client-side redirects found in the page's HTML (or in a Refresh header) rather than in a Location header.
A chain ends in one of four ways: a normal response at the final URL, a redirect loop, the Max Hops limit, or an error on a specific hop, such as a DNS failure, a timeout or a certificate problem.
http://example.com/page goes directly to https://www.example.com/page/.12 min read
Check URL redirects step by step with TrueURL, curl and DevTools, read every hop of a redirect chain, and fix loops, long chains and mixed 301/302 redirects.
Read article13 min read
What every 3xx status code means: 301, 302, 303, 307 and 308 compared on permanence, method handling, caching and SEO, with nginx, Apache and PHP examples.
Read articleAim for one redirect from any old URL to its final URL. Two can be acceptable when unavoidable, for example an HTTP to HTTPS upgrade followed by a host change. TrueURL flags chains with more than three redirects. Googlebot gives up after 10 hops, and browsers stop after about 20 with a "too many redirects" error.
Google has said that 3xx redirects don't lose PageRank, so a chain doesn't directly dilute ranking signals. The practical problems are slower pages, wasted crawl requests and a higher chance that one hop in the chain is broken or temporary. Treat chains as technical debt and flatten them.
A chain ends eventually, on a final URL. A loop never ends, because it leads back to a URL that was already visited, and browsers show an error instead of a page. TrueURL detects both; the Redirect Loop Checker explains the common causes of loops and how to fix them.
Yes. Set HTTP Method to POST in Advanced Settings and add a request body. The chain then follows browser rules: after the POST, a 301, 302 or 303 continues as a GET without the body, while a 307 or 308 repeats the POST with the same body.
The final URL's host name differs from the one you entered (a leading www. is ignored). That is expected for short links and domain migrations. If a page on your own site unexpectedly ends up on another domain, look closer: it can point to a misconfigured rule, a hacked site or an open redirect.
Yes, by default. TrueURL scans HTML responses for meta refresh tags and simple JavaScript redirects, continues the chain from there and labels those hops, so you can tell them apart from HTTP redirects. You can switch this off to see server-side redirects only, or use the Meta Refresh Checker for details.
The request for that hop failed before any HTTP response arrived: the host name didn't resolve, the connection was refused or timed out, the TLS certificate was invalid, or the redirect pointed to an invalid or blocked address. The hop's error message tells you which one. The hops before it are still shown, so you can see exactly where the chain broke.