๐Ÿ”€ 301 Redirect Map Builder

Paste your old URLs and your new ones. Every old page is matched to its closest new page with a confidence score you can override, then the map exports as six ready to paste redirect files. Free, and your URL lists stay in your browser.

Two lists, old and new
One CSV of pairs I already made
Drop a file or click. A .txt, .csv or a sitemap.xml works.
Drop a file or click. A .txt, .csv or a sitemap.xml works.
Filled in for you if your lists already contain full URLs. Cloudflare and GoHighLevel need full URLs with the hostname, so those two exports are only written once both boxes have a domain. If the two domains differ, every export uses absolute targets.
Anything scoring below this goes to the fallback destination until you pick something for it by hand.
The two matching options only apply when the map is built, so change them before you press the button. Leave the Apache box ticked unless you want each rule to catch deeper URLs too: unticked, mod_alias matches the start of a path, so a live URL that was never in your list but starts with one of these paths is redirected as well.

Nothing is uploaded, the matching runs in this tab. Limits before you start: up to 4,000 URLs in each list, and a dropped file up to 8 MB. Treat the result as a first draft: the matcher reads text, it cannot know that "our story" became "about us", so read the low confidence rows before you ship.

Review the map

Export

Apache .htaccess
nginx locations
nginx map
vercel.json
Cloudflare
WordPress
GoHighLevel
Review CSV


  

๐ŸŽฌ Plus sitemap tools, PDF signing, video compression and 250+ more free toolsOpen Castwright

What a redirect map is for

When a site moves, every old URL that had links or rankings pointing at it needs to land on the closest page of the new site. If it does not, that page starts returning a 404 and the value built up over years goes with it. A redirect map is simply the list of old URL to new URL pairs, plus the server configuration that makes those pairs real. Building one by hand in a spreadsheet is where migrations quietly go wrong, because a spreadsheet does not tell you that the same old path is listed twice, so only the first rule would ever fire, or that one of your destinations is itself being redirected somewhere else.

How the matching works, and where it stops

Each old path and each new path is reduced to a comparable string, then scored with a Dice coefficient over character bigrams, which is a fast way of asking how much text two strings share. The score of the whole path is blended with the score of just the last segment, and an exact full path or an exact page slug is promoted to the top. That handles the boring majority: a product page that kept its name, a blog post that moved from /2019/06/why-gutters-matter.html to /blog/why-gutters-matter, a service page that lost a folder level. It cannot handle a rename with no shared words, so the confidence number exists to tell you exactly which rows to read. Sort your attention by it and the manual work drops to the handful of pages that genuinely changed name.

Six shapes of the same map

Apache reads .htaccess and does it with mod_alias, so there is no regular expression to escape. Nginx wants one exact location block per rule, or for a very large map a single map block that has to live in the http context rather than inside server. Vercel wants a redirects array inside vercel.json, and it caps that array at 2048 entries. Cloudflare Bulk Redirects wants a CSV with no header row and full URLs including the hostname. The WordPress Redirection plugin wants five columns, not two. GoHighLevel reads none of those formats, its redirects are set in Sites, then URL Redirects, so what you get for it is a clean pair list to import or paste there. One mapping pass, six outputs, plus a review CSV that is the sheet you send the client for sign off.

Check these before you go live

Read the chain warnings. A redirect that points at a URL which is itself redirected costs an extra hop, and some hosts and crawlers give up after a few. Read the duplicate warnings, because a source path listed twice means only the first rule ever fires. Keep the old sitemap reachable for a while so crawlers keep finding the old URLs and following the redirect. Test a few real URLs after deploying, especially any with a query string, because none of these six formats match on the query string by default. And keep the review CSV, it is the record of what you decided when someone asks in six months why a page moved.

An honest note on limits

This page builds files. It cannot deploy them, it cannot see your server, and no tool can promise a search engine will pass every signal through a move. What it removes is the spreadsheet, the copy and paste, and the escaping mistakes that make a generated config silently match nothing.