Redirect Checker
See every hop a URL takes, the status code and time of each one, and where it finally lands. Check one URL or paste up to 100, then export the results as CSV.
We fetch each URL from our server, follow up to 10 redirects, and read only the final page's HTML to find its canonical tag. Private and internal addresses are refused. Single-URL results are cached for 5 minutes.
What each finding means
| OK | The URL answered 200 directly with no redirect. Nothing to fix. |
|---|---|
| Redirect (301, 302, 303, 307, 308) | Each hop shows the status code and its meaning. 301 and 308 are permanent and pass signals to the destination. 302, 303, and 307 are temporary and tell Google the original URL may return. |
| Chain | Two or more redirects before the final page. Flagged as a defect when longer than three hops. Google follows up to ten, but every hop costs time and crawl budget. |
| Loop | A hop points back to a URL already visited. The page never loads. We stop at the repeated URL and show the full path. |
| http to https, www change, hostname change | Normalization hops are expected once, but your own links, sitemap, and canonical should use the final form so crawlers never need them. A move to a different domain is highlighted so you can confirm it is intended. |
| 4xx or 5xx destination | The chain ends on an error page. A redirect to a 404 loses the old URL's ranking; a 5xx makes Google retry and eventually drop the URL. |
| Meta refresh | The final page contains a client-side redirect that browsers follow but this check does not. Replace it with a server-side 301 or 308. |
| Temporary code, permanent target | A 302, 303, or 307 leads to a scheme or www normalization, or to a page that declares itself canonical. Those moves are permanent by nature, so use 301 or 308. |
| Canonical mismatch | The final page's rel=canonical names a different URL. Redirect straight to the canonical, or correct the tag. |
| Could not fetch | Invalid URL, refused destination (private IP, raw IP, internal hostname), DNS failure, connection error, or a timeout. This is not an SEO finding about the page; it means we could not reach it from here. |
Limitations and data sources
- Requests are made from Cloudflare's network with a GET and a HelloSEOToolsBot user agent. Sites that vary redirects by country, device, cookies, or bot detection may behave differently for your visitors or for Googlebot.
- Each URL follows at most 10 hops with a 12 second limit, and the whole batch runs under a 22 second budget with five URLs in flight at a time. URLs that cannot start before the budget runs out are marked "skipped: time budget"; rerun them in a smaller batch.
- Only the final page's HTML is read, capped at 300 KB, to find the canonical tag and any meta refresh. JavaScript redirects are not executed.
- Raw IP addresses, localhost, private ranges, and internal hostnames are refused by design.
- Duplicate lines are removed before checking. Lines beyond 100 are dropped and the count is shown.
Frequently asked questions
- What is the difference between a 301, a 308, and a 302 redirect?
- 301 and 308 are permanent: they tell search engines the page has moved for good, so ranking signals should move to the new URL. 308 also requires the client to keep the same request method and body, which matters for POST requests but not for normal page loads. 302 (and 303 and 307) are temporary: the original URL is expected to come back, so Google keeps it in the index and consolidates signals more slowly. For a real move, use 301 or 308.
- Why do redirect chains hurt SEO?
- Every hop is another round trip before the content loads, which slows users and spends crawl budget on URLs that carry no content. Signals such as links pass through each hop with some loss, so a long chain dilutes link equity reaching the final page. Chains are also where loops and mixed permanent and temporary codes usually appear. The fix is one redirect from each old URL straight to the final one.
- How many redirect hops does Google follow?
- Googlebot follows up to 10 redirect hops in a single crawl. If it has not reached content by then, Search Console reports a redirect error and the URL is not indexed. This tool stops at the same limit and labels the chain so you can see where it went. Aim for one hop; treat anything over three as a defect.
- Why should the canonical tag match the final URL?
- The redirect tells Google the new home of the page, and the canonical tag on that page tells Google which URL to index. When they disagree, the signals from the old URL are split between two destinations and Google may index a URL you did not intend. Redirect straight to the canonical URL, or fix the canonical so it names the page that is actually served.
API
The same data is available as JSON, free, no key required. Single URL results are cached for 5 minutes (add &fresh=1 to bypass):
GET https://helloseotools.com/api/redirects?url=https://example.com
POST https://helloseotools.com/api/redirects
content-type: application/json
{"urls":["https://example.com","http://github.com"]}
Up to 100 URLs per POST. Please keep automated use under a few requests per second. Heavy or abusive use will be rate limited.
Related tools
- WHOIS Lookup: registrar, expiry, status codes, and live DNS for a domain.
- Indexability Checker: robots.txt, meta robots, X-Robots-Tag, and canonical for one page.
- SERP Preview: see how a title and description will look in Google results.
- Schema Generator: build valid JSON-LD structured data.
- SEO Audit: a full on-page check with evidence for every finding.