Redirect Checker

Trace the full redirect path of any link: every hop with its status code, redirect type, method semantics, response headers and timing, plus loop, downgrade and chain-quality diagnostics.

The URL goes to the DevDome server, which requests each hop with a GET and a disclosed desktop-browser user agent. Results are not stored or sent to analytics.

The five redirect codes and what they do to your request

Permanent versus temporary is only half the story: the codes also differ in what happens to the request method, which matters the moment a form or API call gets redirected. This table is the reference the trace uses for its per-hop semantics.

CodeMeaningMethod behavior (RFC 9110)
301 Moved Permanently The resource moved for good; caches and search engines transfer to the target. Clients may change a POST into a GET on the next request.
302 Found Temporary move; the original URL stays canonical. Clients may change a POST into a GET, same as 301.
303 See Other Points at a different resource, typically after a form submission. The next request is always a GET, by definition.
307 Temporary Redirect Strict temporary redirect. Method-preserving: a POST stays a POST.
308 Permanent Redirect Strict permanent redirect. Method-preserving: a POST stays a POST.

Server redirects, meta refresh, JavaScript and HSTS are different animals

An HTTP redirect is a status code plus a Location header, visible to every client. A meta refresh is an instruction inside the HTML body; this tool fetches a bounded slice of the page and follows it, labeled as its own transition type. A JavaScript redirect only happens when scripts run, so the trace flags the pattern but does not follow it. And an HSTS upgrade happens inside the browser before any request is sent, which is why the trace shows the server's own HTTP-to-HTTPS redirect plus the Strict-Transport-Security header that browsers will cache. The result panel never mixes these four into one count.

One honest limit: some destinations answer automated requests differently from real browsers, so the very last hop can differ from what you would see by hand, even though the redirect path up to it is exact.

Redirects rot quietly. Watch them after you fix them

A migration that verified clean on launch day drifts: a plugin update adds an HTTP hop, a CDN rule starts looping a path, a campaign link dies with its shortener. The moment to learn about that is when it happens, not when a visitor complains. DevDome Site Health monitors your site continuously, and this checker is the manual companion for debugging the chains it finds.

Redirect checker FAQ

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

A 301 says the move is permanent: browsers cache it aggressively and search engines transfer the old URL's signals to the new one. A 302 says the move is temporary: the original URL stays indexed. The subtle part is method handling: both 301 and 302 permit clients to turn a POST into a GET on the next request, which is why 308 and 307 exist as the strict method-preserving versions. This 301 redirect checker shows the exact code at every hop plus its method semantics.

What is a redirect chain and why does it matter?

A redirect chain is more than one redirect between the link and the final page, for example HTTP to HTTPS to a trailing-slash URL. Each hop costs every visitor a network round trip, and search crawlers follow only a limited number of hops before giving up. Chains are rarely fatal but always waste: when you control the link, point it directly at the final URL. The trace above counts HTTP redirects and document transitions separately, so the number is real.

How do I find a redirect loop?

Paste the URL above. If the chain revisits a URL it already passed through, the trace stops and reports a loop explicitly. Browsers show users an error page in that situation, so a loop means the URL is effectively down. Loops usually come from conflicting rules: a plugin redirecting to HTTPS while the server redirects back, or two pages redirecting to each other.

Why does the final hop show a different status than my browser sees?

The trace sends a normal GET with a desktop browser user-agent, disclosed below the result. Some large sites answer automated clients differently: they may rate limit, block, or serve alternate responses. The path of redirects up to that point is still exact; only the final page's answer can differ. Meta refresh redirects are followed from the HTML; JavaScript redirects are flagged but not followed because that needs a real browser.

Does the checker follow HSTS upgrades?

HSTS is a browser mechanism: after a site sends the Strict-Transport-Security header once, the browser upgrades future http:// requests to HTTPS internally, before any network request. A server-side tracer observes the server's own 301/308 upgrade instead. When a hop carries an HSTS header, it appears in that hop's response headers in the trace, so you can see the policy that browsers will cache.

What happens to URLs I check here?

The URL is sent to the DevDome server, which requests it and each subsequent hop; the destination sites see those requests. Results are returned to your browser and not stored, shared or sent to analytics. Avoid tracing URLs whose query strings carry secrets like password-reset tokens; the strip-query option removes the query string before tracing, and the tool warns you when a URL looks sensitive.