FREE TOOL

Redirect checker

Paste a URL and see every redirect it takes — each hop with its HTTP status code — and the URL it finally lands on. It follows 301, 302, 303, 307 and 308 responses, stops at 10 hops, and expands any of 29 known link shorteners along the way. It does not show response headers beyond the status, and it does not check whether the final page loads correctly.

INPUT
try
200 OK417 ms (api)
CLEAN
No findings
3 checks run
1 redirect → https://github.com/
StatusURL
301http://github.com
200https://github.com/
The full /v1/links gate also checks
Destination domainURL shortener
Also available through the API.

Live call to the same /v1 endpoint customers use. Rules only on this page; nothing you type is stored.

What it checks

  • link.redirect_chain — the walk. data.chain.hops[] (URL and status per hop), data.chain.finalUrl, data.chain.truncated (true when the 10-hop cap stopped it), and data.chain.blocked (URL and reason, "scheme" or "host") when a hop was refused. The cap of 10 is tighter than curl's default of 50 and a browser's roughly 20 on purpose: a legitimate chain does not need more.
  • link.shortener — whether the URL you pasted is on a known shortener host; data.shortener.service names it.
  • link.destination_reputation — registration date and typosquat check on the final domain; data.destination.rdap.createdAt and ageDays.

What the result means

For this page the chain is the result; the verdict is secondary. clean means the chain finished within 10 hops with no refused hop and a destination domain that raised nothing. The findings that can fire are the same six as on the link checker: link.hop_cap_exceeded (medium), link.shortener_chain (medium), link.unsafe_redirect_target (high), domain.not_registered (high), domain.newly_registered (medium), domain.typosquat (medium).

Why it matters

Redirect chains cost you twice: each hop is a round trip for the visitor, and crawlers give up after a few. A chain that ends somewhere you did not expect is the faster problem to find — an old campaign link on a lapsed domain, a shortener that now points at someone else's page, a tracking hop that swallowed the UTM parameters. The status code per hop is what tells a 301 you meant from a 302 you inherited.

QUESTIONS

Redirects,
answered.

From your own code

curl -s -X POST https://api.stormdoor.dev/v1/links \
  -H "Authorization: Bearer sk_live_..." \
  -H "content-type: application/json" \
  -d '{"url":"http://github.com"}'

Read data.chain.hops, data.chain.finalUrl and data.chain.truncated. API keys are issued when signups open. Join the waitlist and you will hear first.

Read more

/v1/links docs · link.hop_cap_exceeded · link.shortener_chain
Sibling tools: link checker, domain age checker.

Guides about this

All guides