Trace a redirect
The list mode above handles up to 100 URLs a day. For anything bigger — every tracking link in a campaign, a whole domain fleet, a site migration with thousands of old URLs — send me the list and I will run it and return one table with the final URL, status codes and what needs fixing for each row.
How it works
Request without following
The checker fetches the URL from a Cloudflare edge server with redirects switched off, so every hop is captured instead of collapsed into the final page.
Read the status and Location
Each 3xx answer is recorded with its exact code, the Location header it sent, the server that sent it and how long it took, then the next URL is requested.
Scan the final page
When a page finally answers, its HTML is checked for a meta-refresh tag or inline JavaScript redirect, a canonical tag and a noindex directive — the redirects HTTP headers cannot see.
Confirm in your browser
A server sees one version of a site. Use the buttons in the result to open the final URL, or follow the chain yourself, and see exactly where a real visitor ends up.
What each redirect code is telling the client
A redirect is just a status code and a Location header, but the code carries a promise about the future, and browsers and search engines hold you to it.
| Code | Meaning | Method | Use it for |
|---|---|---|---|
| 301 | Moved permanently. Browsers cache it, search engines transfer ranking signals and drop the old URL. | May change POST to GET | Domain moves, HTTP → HTTPS, www canonicalisation, retired pages. |
| 302 | Found — temporary. The original URL stays indexed; the client should ask again next time. | May change POST to GET | A/B tests, geo routing, tracking-link clicks, login walls, maintenance pages. |
| 303 | See other. “Go and GET this instead.” | Always GET | Redirecting after a form submission so a refresh does not resubmit. |
| 307 | Temporary, strict. Same as 302 but the request method and body must be preserved. | Preserved | Temporary moves of API endpoints and anything that receives POSTs. Also what HSTS produces inside the browser. |
| 308 | Permanent, strict. Same as 301 but the method is preserved. | Preserved | Permanent moves of API endpoints and form handlers. |
| meta | An HTML <meta http-equiv="refresh"> tag. The page loads, then the browser jumps. | GET | Legacy hosting that cannot set headers. Avoid where you have any choice. |
| JS | A script that assigns location.href. Only a browser running JavaScript follows it. | GET | Client-side apps. Invisible to curl, most crawlers and every mail client. |
Why this matters more for cold email than for a normal website
Every link in a campaign is rewritten to pass through a tracking domain, which records the click and then redirects to the real destination. That means each click is a redirect chain by design, and the destination is usually somewhere the sender has no direct control over — a calendar page, a case study, a landing page on the main site with its own HTTP → HTTPS → www rules.
Gmail, Outlook and the enterprise link scanners in front of them follow those chains before the human does. A hop that downgrades to HTTP, lands on a 404, or bounces through four temporary redirects reads as sloppy at best and phishing-adjacent at worst. On a fleet of thirty domains it is very easy for one destination to quietly break and stay broken, because you rarely click your own links. Run the tracking URL from a real sent message through this checker and you see exactly what the recipient and their filter see.
Chains and loops
Two hops is common and usually accidental: http://example.com becomes https://example.com, which then becomes https://www.example.com. Each hop is another round trip on the visitor's connection and another place for ranking signals to leak. Google says it follows up to ten hops, but treats anything past two or three as a quality signal, and older tools and some mail clients stop earlier.
The fix is always the same: make the first rule point straight at the final URL rather than at the next rule. A loop — where the chain comes back to a URL it already visited — is nearly always two rules disagreeing about the canonical host, and it shows up to visitors as the browser's “too many redirects” error.
Permanent when you mean it, temporary when you don't
The most common mistake this tool surfaces is a 302 doing a 301's job. The HTTP → HTTPS hop, a domain migration and a retired page are all permanent, and a 302 on any of them tells search engines to keep indexing the old address. Cloudflare's Redirect Rules, Nginx and Apache all default to a temporary redirect unless you say otherwise, so it is worth checking rather than assuming.
The reverse mistake is subtler. Browsers cache a 301 aggressively, so a permanent redirect put in place during a migration and later changed will keep sending returning visitors to the old destination for a long time. If a redirect is still being adjusted, leave it as a 302 until it settles.
Checking a list
Paste up to a hundred URLs and the checker works through them ten at a time, one batch a minute, with the results filling in as they arrive. Each row shows the verdict, the chain of status codes and the final URL; the Details button opens the full hop-by-hop view for that row without spending another check, and Copy CSV gives you the table for a spreadsheet.
The limits are deliberate. Every check is a real request from a Cloudflare address to someone else's server, and a tool that let anyone fire thousands of them would get that address blocked — and would be a nuisance to the sites on the receiving end. Ten a minute and a hundred a day per person is enough to audit a migration or a campaign's links without either of those things happening.
What a server sees is not always what you see
This checker follows the chain from a Cloudflare edge server, which is the honest view: it is what every crawler and link scanner gets. But sites that route by country, by device, by cookie or by login state, and sites that challenge datacenter IP addresses, can send a real visitor somewhere different. That is why each result includes buttons to open the final URL and to follow the chain from the start in your own browser. If the two disagree, the difference is itself the finding.
Frequently asked questions
Is a 302 redirect bad for SEO?
Not on its own. A 302 is the right answer when the move really is temporary. It becomes a problem when it stands in for a 301 on a permanent move, because search engines keep the old URL in the index and are slower to pass ranking signals to the new one. Google has said it eventually treats a long-lived 302 as permanent, but there is no reason to rely on that.
Why does my tracking link show a 302?
That is normal. Sending tools use a temporary redirect on the click because the destination is not a permanent home for that link, and because they do not want the browser to cache it and skip the click record next time. What matters is what happens after the tracking hop: the destination should be HTTPS and answer 200.
The checker says one thing but my browser lands somewhere else. Which is right?
Both. The checker reports what a server-side client receives, which is what crawlers and mail scanners get. Your browser may be sent elsewhere by country, device, a cookie you already hold, or a bot challenge that only fires on datacenter addresses. Use the open-in-browser buttons on the result and compare.
How many redirects is too many?
One is ideal. Two is common and worth collapsing. Three or more and you are paying real latency and leaking ranking signals on every visit. Browsers give up somewhere around twenty; Google stops following at ten and dislikes anything over five.
Should HTTP to HTTPS be a 301 or a 302?
301. The move to HTTPS is permanent by definition. Pair it with an HSTS header on the HTTPS response so returning browsers skip the insecure request altogether.
What is a meta refresh, and why is it flagged?
It is an HTML tag that tells the browser to load another page after a delay. It works, but it is slower than an HTTP redirect, it passes weaker signals to search engines, and many non-browser clients ignore it. If you control the server, use a 301 instead.
Does this check the redirect on the final page's canonical tag?
Yes. When the chain ends on an HTML page, the checker reads its canonical tag and warns if it points somewhere other than the URL you landed on, since search engines will consolidate to the canonical and the redirect should agree with it.
How many URLs can I check?
Ten a minute and a hundred a day per person, in either mode. A single check costs one; a list is processed in batches of ten with a pause between batches, and the tool keeps going on its own until the list is done or the day's allowance is used. The count resets at midnight UTC.
Why is there a limit at all?
Each check is a live request from a Cloudflare address to the site you name. Without a cap, the checker could be used to hammer a target, and the address would end up blocked for everyone. The cap is set where a real audit fits comfortably and abuse does not.
Can I check a URL that redirects to a private or internal address?
No. The checker refuses to follow hops into private networks, localhost or link-local addresses, and stops the chain with an error if a redirect points there.
Can I check a whole list of URLs at once?
Yes — use “Check a whole list instead” under the form to paste up to 100 URLs a day (10 per minute). For a larger batch, email it to toukir@toukirahmed.com or send it on WhatsApp (+880 1750 284642) and I will run it and send back one table with the final URL, every status code and what needs fixing per row.
Last reviewed
What to run next
The checks that most often follow this one.
More in this category
Guides that go deeper
When the tools tell you something is wrong
The diagnostics here are free and always will be. When the fix is bigger than a DNS record, this is the work I do.
Deliverability rescue
Mail landing in spam, replies gone quiet, or a domain suddenly blocked. I find the actual cause rather than guessing, and fix it.
- Authentication and alignment failures
- Blocklist delistings and reputation repair
- Gateway and filter-level blocks
- A written report on what broke and why
Email & sending infrastructure
Sending domains, inboxes, authentication and warmup, built to survive volume instead of burning down in a month.
- Domain and inbox fleets at any scale
- SPF, DKIM, DMARC and tracking domains
- Google Workspace and Microsoft 365 inboxes
- Handover documentation you actually own
Domain, DNS & migration
Changing registrar, mail provider or host without a day of downtime or a week of mail silently failing.
- Registrar and nameserver moves
- Workspace and Microsoft 365 migrations
- MX, SSL and subdomain cutover
- Staged rollout with rollback at every step
Monitoring & retainer
Infrastructure drifts. Records get edited, certificates expire, domains get listed. Ongoing eyes on the fleet.
- Scheduled checks across every domain
- Alerts before your clients notice
- Monthly reporting
- Priority response when something breaks
Start with a call
Bring a domain and the symptom. I will tell you what is actually wrong and whether you need me at all — plenty of people leave that call able to fix it themselves.
Thirty minutes, no pitch
We will run the checks together on your actual domains, and you will leave knowing what is broken, what it takes to fix, and what it should cost. If that is a job you can do in-house, I will say so.