Redirect Map Validator for Site Migrations
Pricing
from $1.00 / 1,000 url checkeds
Redirect Map Validator for Site Migrations
Paste your old URL → new URL redirect map and check every redirect hop by hop: wrong target, no redirect, chains, 302s, loops, HTTPS→HTTP and 404s at the end.
Pricing
from $1.00 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Josep Peruga
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Paste the redirect map from your site migration (old URL → new URL) and find every redirect that is wrong before Google does: old URLs that don't redirect, redirects that land on the wrong page, chains of several hops, temporary 302s where you need a 301, loops, HTTPS → HTTP downgrades, and targets that return 404.
You get one row per old URL with the full hop-by-hop chain, plus a pass/fail summary.
Use it on sites you own or manage: right after a migration, a domain move, an HTTPS switch, a CMS change or a URL restructure, and again a few weeks later to catch regressions.
Input
Paste the map into Redirect map, one redirect per line. Commas, semicolons and tabs all work, so you can copy two columns straight from a spreadsheet. A header row is skipped.
old_url,new_urlhttps://old-shop.example/products/blue-shirt,https://shop.example/shirts/bluehttps://old-shop.example/about-us,/abouthttp://shop.example/sale
- A relative target (
/about) resolves against the old URL. - A line with only one URL is traced without an expected target: you still get the chain, final URL and status.
- API users can send
redirectsas JSON ([{"from": "...", "to": "..."}]) andurlsas a plain list.
What it checks
Every old URL is requested without following redirects automatically. The Actor follows the Location header itself, one hop at a time, so every hop is recorded.
| Issue | Meaning |
|---|---|
no-redirect | The old URL answers directly (no redirect) although a different target was expected |
wrong-target | The chain ends on a URL other than the expected one |
redirect-chain | More than one hop before the final URL. Each extra hop costs crawl budget and slows users down |
temporary-redirect | A 302, 303 or 307 somewhere in the chain. Migrations normally want 301 or 308 |
https-to-http | A hop downgrades from HTTPS to HTTP |
redirect-loop | The chain returns to a URL it already visited |
too-many-hops | More than maxHops redirects |
final-not-found / final-http-error | The chain ends on a 404/410, or another 4xx/5xx |
redirect-without-location / invalid-location-header / non-http-redirect | A broken redirect response |
blocked-by-robots | robots.txt disallows the URL, so it was not requested (see below) |
timeout / network-error | No response after one retry |
The comparison with the expected URL ignores host case, fragments, default ports and (by default) a trailing slash. You can also ignore query strings.
Output
Each dataset row:
{"ok": false,"from": "https://old-shop.example/about-us","expectedTo": "https://old-shop.example/about","finalUrl": "https://shop.example/about","finalStatus": 200,"matchesExpected": false,"hops": 2,"firstStatus": 302,"chain": [{ "url": "https://old-shop.example/about-us", "status": 302, "location": "https://shop.example/about-us", "ms": 120 },{ "url": "https://shop.example/about-us", "status": 301, "location": "https://shop.example/about", "ms": 95 },{ "url": "https://shop.example/about", "status": 200, "ms": 88 }],"issues": ["temporary-redirect", "redirect-chain", "wrong-target"],"checkedAt": "2026-10-27T21:00:00.000Z"}
The OUTPUT record in the key-value store has the totals: URLs checked, passed, failed and a count per issue. Export the dataset as CSV or Excel and filter on ok = false to get your fix list.
How it behaves on your site
- It identifies itself as
RedirectMapValidator/1.0and obeys robots.txt for that agent (or*), includingCrawl-delayup to 10 s per host. - A staging site often blocks all crawlers. For sites you own or are authorised to test, you can turn Respect robots.txt off.
- It downloads no page bodies, only status codes and headers.
- It collects no personal data. It records URLs, status codes and timings.
Pricing
Pay per event: each checked old URL is one url-checked event. Use maxUrls and the run's maximum cost setting to cap spend. The run stops cleanly when the cap is reached.
Limitations
- JavaScript redirects and
<meta http-equiv="refresh">are not followed; only HTTP redirects are. - Each URL is checked from Apify's servers. Redirects that depend on the visitor's country, language or cookies may differ for real users.
Support
Open an issue on the Actor's Issues tab. Breakages are fixed within 48 hours.
This Actor is built and maintained by an AI agent working for its publisher. A human owns the account and is responsible for it.