Redirect Map Builder
Free, no signup. A migration lives or dies on whether every old URL lands somewhere real. Paste your old URLs and new URLs and get a suggested 301 map — each row scored into a confidence tier with a plain-English reason, an override dropdown, a first-class unmatched bucket, and a 410 kill-list for pages with no equivalent.
Built your map? Verify the live chains afterwards with the Redirect Chain Mapper.
Paste 404 log or GSC not-found export
Normalization options
Example data — replace with your own
Runs entirely in your browser — nothing you paste is uploaded or stored. Sitemap import and content matching are opt-in exceptions — see below. Anonymous run-level outcome counters may be used for aggregate research; URLs, domains, IPs, and identifiers are never included, and no statistic is released below 100 runs.
Pattern rules — bulk path transforms applied before matching
How the matching evidence works
Each row’s “Why” control shows every matcher that ran. Raw scores are internal ordering only, not confidence percentages; the tier descriptions come from the labeled fixture calibration below.
Fetches page metadata only (title, H1, description) — live for new URLs, from Wayback first and Common Crawl only when Wayback has no usable capture — and ranks by text similarity. Capped per run; no full-body scrape, no embeddings. Content guesses are styled distinctly so they're never confused with a structural match.
Pattern rules go to formats that can run them (Bulk Redirects can't — they're listed as a note there). Rows are ordered specific → general; self-redirect no-ops are dropped; 410 rows export where the platform supports them and remain explicit notes otherwise. The WordPress plugin CSV stays import-only; use its review companion CSV for confidence, evidence, and Ahrefs session context.
Bulk redirect and soft-404 audit
Paste exported redirect/status/content evidence as JSON. Clicks, traffic, referring domains, provenance, hops, final canonical, raw/rendered error evidence, and intent text stay attached to each source row.
Sample report Example data — real, matcher-verified result
Say you migrated a blog and product catalogue. Your old URLs:
https://example.com/2019/06/seo-tips
https://example.com/about-us.html
https://example.com/product.php?id=482
https://example.com/blog/deprecated-tactic …and your new URLs:
https://example.com/blog/seo-tips
https://example.com/about-us
https://example.com/shop/482-blue-widget …and the builder returns:
- Two Strong matches, safe to accept. The dated blog post matched by slug ("seo-tips") and the PHP product page matched by its numeric ID (482) — see what each confidence tier means.
/about-us.htmlis actually an Exact match (extension-stripped hit on/about-us) — here it's shown marked 410 instead, to demonstrate the kill-list toggle overriding an automatic pick./blog/deprecated-tactichas no equivalent — its best candidate is only an 18%-similar weak guess, below the accept threshold, so it lands in unmatched for a manual decision, content matching, or a 410.- Once the map looks right, tick Check destinations are live 200s before export, or read site migrations for the full redirect-mapping process.
How to use it
- Paste your old URLs on the left — the pre-migration set that will start 404'ing. A GSC Pages export, a crawl of the old site, or the 404 report all work; upload a CSV/TXT and the first URL-looking column is sniffed out automatically.
- Paste your new URLs on the right — the live destination set — or drop in a
sitemap URL and press Load to pull its
<loc>entries. - Press Build redirect map. Each old URL gets a suggested destination, a confidence tier, and a plain-English reason. Use Load sample first if you just want to see it work.
- Work the list: change any pick from the dropdown, click 410 to mark a page gone, or hit Accept all Exact + Strong to lock in the confident rows and focus on the rest. The unmatched and 410 filters isolate what still needs a decision.
- Export to Apache
.htaccess, nginx, Cloudflare_redirects/Bulk Redirects, or CSV — and optionally Check destinations are live 200s before you ship.
What the results mean
Each row carries a confidence tier and a status. The summary pills tally them:
- Exact (green) — the path is identical, or identical once the file extension is
ignored (
/about-us.html→/about-us). Trust these. - Strong (blue) — a matching last slug segment, a shared numeric ID, or a match asserted by one of your pattern rules. Very likely correct; skim them.
- Fuzzy (amber) — the whole path is similar in tokens and scored at or above your accept threshold. Plausible, but review each one.
- Unmatched (red) — no candidate cleared the bar (a below-threshold Weak best is demoted here too). These need a manual pick, content matching, or a 410.
- Already exists (grey) — the old URL is also in your new list, so no redirect is needed; it is dimmed and excluded from the map.
- 410 Gone (purple) — you flagged the page as retired; it exports as a kill-list entry, not a redirect.
- In a loop (purple, left-barred) — chain flattening found the target itself redirects back, which would create a loop. Fix the destination before shipping.
When you run Check destinations are live 200s, each destination also gets a small badge: 200 (clean), N redirects → … (you're mapping to a redirect, not the final URL), or 404/unreachable (a broken destination to fix first).
How it works
The matching engine runs entirely in your browser. Both lists are normalised first — optionally
treating /a and /a/ as equal, comparing paths case-insensitively, stripping
tracking params (utm, gclid, fbclid), and ignoring file extensions. Then each old URL runs a matcher
cascade, strongest first: exact path, exact path minus extension, last-slug match, numeric-ID
extraction, and finally whole-path token similarity. The first matcher that fires sets the tier; a
below-threshold token best is demoted to unmatched rather than shown as a shaky guess.
The optional trailing-slash normalisation is migration matching only: it lets /a
and /a/ represent the same content candidate. The Redirect Chain Mapper keeps them
distinct because its job is to expose an actual slash redirect hop.
After matching, a chain-flattening pass detects cases where an old URL points at another old URL and
rewrites the map to the final destination (or flags a genuine loop). Correct a row by hand and the
tool offers to induce a pattern rule — e.g. /blog/* → /articles/* — and apply it
to every similar row at once. The only server calls are opt-in: sitemap import, Tier 2 content
matching (fetches title/H1/description only, live for new URLs and from Wayback or Common Crawl for dead old ones),
and the destination-liveness check.
Features
- Calibrated confidence tiers (Exact, Strong, Fuzzy, Weak) with a plain reason per row, not a bare percentage.
- A first-class unmatched bucket and a 410 kill-list so retired pages never get silently dropped or dumped on the homepage.
- Per-row override dropdown with alternates, plus Accept all Exact + Strong to clear the easy rows in one click.
- Pattern rules (wildcard or regex) with a live match-count preview, auto-detected directory remaps, and correction-driven rule induction.
- Import from CSV/TXT upload or a sitemap URL; adjustable normalisation and fuzzy-accept threshold.
- Optional Tier 2 content matching and a destination-liveness check that reuses the bulk status checker.
- Exports to Apache
.htaccess, nginx, Cloudflare_redirectsand Bulk Redirects, and CSV — ordered specific → general, with self-redirect no-ops dropped. - Autosaves to your browser; download/import the whole project as JSON.
Limitations
It matches on URL structure, not meaning — two unrelated pages that happen to share a slug can match, which is why Fuzzy rows are flagged for review. It does not crawl your site to discover URLs (paste or import them). Sitemap imports follow nested indexes within explicit depth, document, and URL caps. The destination check and content matching are capped per run and only reach public URLs. And it builds the map — it doesn't deploy the redirects; you export the rules and add them to your server or CDN.
Frequently asked questions
What is a redirect map?
A redirect map is a list that pairs every old URL with the new URL it should 301 redirect to after a site migration or restructure. It is the deliverable you hand to whoever configures the redirects, and getting it right is what preserves rankings and stops visitors hitting 404s. This tool builds that list for you by matching your old URLs to your new ones and scoring each pairing so you know which rows to trust and which to review.
How does it decide which old URL matches which new URL?
It runs a cascade of matchers, strongest first: identical path (Exact), identical path ignoring the file extension (Exact), a matching last slug segment or a shared numeric ID (Strong), then token similarity of the whole path (Fuzzy above your threshold, Weak below it). The first matcher that fires sets the tier, and the row shows the plain reason — for example "slug match" or "shared ID token 482". You can override any pick from the dropdown, and correcting one row offers to generalise the fix into a pattern rule for similar URLs.
Is my URL list uploaded anywhere?
No. Parsing, normalisation, matching, chain-flattening and every export run entirely in your browser, and your project autosaves to that browser only. The only network calls are optional and clearly opt-in: importing a sitemap by URL, the Tier 2 "match remaining by content" step, and the destination-liveness check. If you paste your URLs and export, nothing leaves your machine.
What should I do with the unmatched URLs?
Unmatched rows are the whole point of the tool being loud about them — they are the old URLs with no confident new equivalent, and they are exactly what you would otherwise miss. For each one, either pick a destination manually from the dropdown, run Tier 2 content matching to get suggestions, or mark it 410 Gone if the page genuinely has no replacement. Leaving them unmatched means those URLs 404 after launch.
When should I use a 410 instead of a 301?
Use a 301 when the old page has a real equivalent on the new site. Use 410 Gone when the content is genuinely retired with no replacement — a discontinued product, an old campaign page, thin content you are pruning. A 410 tells search engines the URL is intentionally gone so they drop it faster than a soft 404, and it keeps you from redirecting dozens of dead pages to the homepage, which Google treats as a soft 404 anyway. The tool exports 410 rows as a separate kill-list.
Site passport Local context for this saved site
Local data
Saved targets, named lists, and recent check summaries remain only in this browser.
Rate this tool
Feature requests for Redirect Map Builder
Upvote what you want most. New ideas can be submitted from the floating Feedback menu; requests appear here once approved, and the most-wanted rise to the top.
You won't be emailed about that request anymore.
Loading…
➕ Request a feature
New requests are reviewed before they appear here.
Über das Tool
Plane eine Website-Migration, indem du alte und neue URL-Mengen abgleichst und eine bewertete 301-Map erzeugst. Jede Zeile erhält eine Vertrauensstufe, einen verständlichen Grund, eine manuelle Override-Auswahl und einen sicheren Zielstatus.
Unmatched-URLs und eine 410-Kill-Liste bleiben sichtbar; der Builder flacht Ketten ab und exportiert Regeln für Apache, nginx und Cloudflare. Strukturelles Matching läuft vollständig im Browser.
Funktionen
- Import von CSV/TXT, GSC-Not-found- oder Ahrefs-404-Listen und verschachtelten Sitemaps mit festen Limits
- Exact-, Strong-, Fuzzy- und Weak-Matching mit Pfad-, Slug- und numerischer-ID-Evidenz
- Manuelle Overrides, Unmatched- und 410-Filter sowie Accept-all-Exact+Strong für sichere Reihen
- Export als Apache-.htaccess, nginx, Cloudflare _redirects/Bulk Redirects oder CSV plus Ziel-Liveness- und optionales Metadaten-Matching
Funktionsweise
Importiere alte URLs links und neue URLs rechts, wähle Normalisierung und Schwellenwert und starte Build redirect map. Die Kaskade prüft identischen Pfad, Extension-Varianten, letzten Slug/ID und Tokenähnlichkeit. Prüfe Unmatched/410 manuell, akzeptiere sichere Reihen, kontrolliere Live-200-Ziele und exportiere das gewünschte Plattformformat.
Einschränkungen
- Matching vergleicht URL-Struktur, nicht Bedeutung; ein gleicher Slug beweist keine inhaltliche Entsprechung.
- Fuzzy- und Weak-Treffer sind Vorschläge und müssen geprüft werden; ein Export deployt keine Weiterleitungen.
- Die optionalen Netzwerkprüfungen greifen nur auf öffentliche URLs zu und sind begrenzt; Ziele vor dem Versand auf echte 200-Antworten prüfen.
Häufig gestellte Fragen
Was ist eine Redirect-Map?
Eine Redirect-Map paart jede alte URL mit einer neuen Ziel-URL für einen 301 nach einer Migration. Sie bewahrt Rankings und verhindert 404s; dieses Werkzeug bewertet die Paarungen, deployt sie aber nicht.
Wie entscheidet der Builder, welche URLs zusammengehören?
Er prüft Pfadgleichheit, Pfad ohne Extension, letzten Slug oder gemeinsame numerische ID und danach Tokenähnlichkeit. Der erste Treffer bestimmt die Vertrauensstufe; du kannst jede Auswahl überschreiben.
Was mache ich mit Unmatched-URLs?
Wähle ein Ziel manuell, aktiviere optional Content-Matching oder markiere die Seite als 410 Gone, wenn sie wirklich ausgemustert ist. Unmatched nach dem Launch würden sonst 404s erzeugen.
Wann sollte ich 410 statt 301 verwenden?
Nutze 410 für ausgemusterte Inhalte ohne Ersatz, etwa alte Kampagnen oder dünne Seiten. Ein 301 gehört zu einer echten Entsprechung; leite tote Seiten nicht pauschal auf die Homepage.