Redirect Checker
Follow a URL through every 301, 302 and 308 it meets, and see where the chain actually ends.
What this tool does
Redirect Checker hands your URL to the OmniKitly service, which requests it with automatic redirect following switched off so that each step is taken deliberately. The service reads the status line and the Location header, resolves a relative Location against the URL it has just asked for, re-checks the resulting address, and issues the next request itself. The result is a table, one row per hop, with the status, the Location it pointed at, and a note explaining what that status means for search or for a browser — a 302 that should have been a 301, a hop with no Location at all, a chain long enough to be worth flattening. The hop count includes the request that ended the chain, so one 301 landing on a page that answers 200 is reported as two hops, not one.
Reading a hop chain is how two reasonable decisions turn out to have become four requests. A host that upgrades http to https, a rule that adds www, a CMS that appends a trailing slash and a marketing tool that rewrites the path each add a hop, and none of the people who added them can see the others. Every hop is a round trip a visitor waits through, and a 302 sitting where a 301 was intended keeps the old address alive indefinitely, because a temporary redirect tells crawlers to hold on to the URL they started from.
The requests come from the service, not from your browser, and that changes what the trace can see. They carry the OmniKitly/1.0 user agent, no cookies — none are sent, and none set by one hop are carried into the next — and no referrer, and they originate from the server's own IP address, so a site that redirects by country, by device or by whether you are signed in answers that visitor rather than you. Only HTTP status redirects are followed: 301, 302, 303, 307 and 308. Nothing here renders or executes the page, so a meta refresh or a JavaScript assignment to location arrives as a 200 and reads as the end of the chain.
Three limits are worth knowing before you trust a result. The Maximum hops setting genuinely controls the ceiling — 1 to 20, ten by default — and a chain longer than that abandons the run with "That URL redirected too many times" rather than being named as a loop; the report itself does check for a URL repeating within the chain it did complete, and flags that as a loop when it finds one. Addresses that resolve to private, loopback, carrier-NAT or link-local ranges are refused at every hop, so an intranet or a laptop staging server cannot be traced. And no file is uploaded: the URL travels to the service over an encrypted connection as a job setting, where it is held in the job record until that record and the underlying JSON report are deleted together, six hours after the run by default.
How to use it
- Enter the URL to trace. One address per run, with the scheme written out. The service parses the string strictly, so example.com on its own is rejected as an invalid URL where https://example.com is accepted. The text you type is sent as the job's url setting, and it is the service, not the page, that turns down anything malformed or non-http.
- Set the hop ceiling if the default is not enough. It offers 1 to 20 and starts at 10. A chain that exceeds it ends the run with "That URL redirected too many times" rather than a report, so raise it before tracing a site you already suspect has an unusually long chain.
- Read the chain in order. Each row names the URL that was requested, the status it returned, the Location header it pointed at, and a short note on what that status means. A summary line above the table gives the final destination and its status in one line, and lists any problem the whole chain shows — a scheme downgrade partway through, a hop that revisits an earlier URL, or a chain long enough that it is worth collapsing into one redirect.
- Act on what the ordering shows. An http hop before the https one, a 302 on a move that is permanent, or three requests where one rule would do are all visible as separate entries rather than as a single destination.
Processing & privacy
Secure server processing. This operation requires temporary server processing.
Common use cases
Checking a site migration
Old addresses should reach their new ones in a single 301 — two entries in the chain, no more. A longer list says the request is being passed along a queue of rules instead.
Untangling a canonical mismatch
The http, non-www and trailing-slash variants of one page often each add a hop. Tracing them shows which normalisation runs first and which one is redundant.
Auditing a shortened or tagged link
A tracking link can pass through two or three intermediaries before the landing page. The chain names every host it touches, including any that were not meant to be in the path.
Confirming a redirect is permanent
A 302 left in place after a permanent move keeps signals attached to the old URL. The status column shows which code is actually being served, rather than which one was configured.
Questions
Is my URL sent anywhere?
Why does the trace stop before it reaches the end?
Does the Maximum hops setting do anything?
Does it follow a meta refresh or a JavaScript redirect?
Will I see the redirects a real visitor sees?
Can I trace a URL on my own network?
What happens to a relative Location header?
What if a redirect has no Location header?
Does the report include the page it ends on?
How long will it wait for a slow site?
Related tools
- Meta Tag Preview — See how your title and description look in search results.
- WCAG Contrast Checker — Test colour pairs against AA and AAA thresholds.
- Favicon Generator — Generate a full favicon set from one source image.
- Open Graph Preview — Preview how a link unfurls on social platforms.
- Social Card Preview — Check Twitter, LinkedIn and Slack card rendering.
- Robots.txt Generator — Build a robots.txt with sensible defaults.