What is a redirect map generator?
A redirect map generator turns a plain list of old URLs and their new destinations into the exact configuration syntax a web server or hosting platform expects for a 301 or 302 redirect. Instead of hand-writing RewriteRule lines or a vercel.json array for a site migration with dozens or hundreds of URLs, you paste the mapping once and this tool outputs nginx, Apache .htaccess, Netlify _redirects, Vercel vercel.json, and Cloudflare Bulk Redirects CSV simultaneously — and flags any redirect chains or loops in the list before you push it live.
How to use it
Paste one redirect per line into the input box. Each line needs an old URL and a new URL separated by a comma, a tab, or an arrow (-> or =>); a CSV export from a spreadsheet works unchanged. Add an optional third column to override the status code for that specific row, for example /old,/new,302. End an old URL with /* to generate a wildcard/prefix redirect that carries the rest of the path through. Pick a default status code, toggle HTTPS-forcing and trailing-slash normalization if you want them baked into the nginx/Apache output, then click Generate redirect config. Review the chain and loop warnings, switch between the five output tabs, and copy or download the file for your platform.
Two worked examples
Example 1 — input
/old-blog/hello-world,/blog/hello-world /pricing-old,/pricing,302
nginx output
# Redirect map — generated by waynetools
location = /old-blog/hello-world { return 301 /blog/hello-world; }
location = /pricing-old { return 302 /pricing; }
.htaccess output
Redirect 301 /old-blog/hello-world /blog/hello-world Redirect 302 /pricing-old /pricing
Example 2 — input with a wildcard and a loop
/promo/*,/deals/* /deals,/promo /promo,/deals
Netlify _redirects output
/promo/* /deals/:splat 301 /deals /promo 301 /promo /deals 301
Detected issue
LOOP: /deals -> /promo -> /deals
The tool walks /deals to its target /promo, then walks /promo's target /deals, which is already in the path — so it reports a loop instead of silently shipping a config that would 500 or infinite-redirect in the browser.
Frequently asked questions
What input formats does the redirect map generator accept?
One redirect per line, in any of these forms: old-url,new-url (CSV), old-url new-url (tab or space separated), or old-url -> new-url / old-url => new-url. You can optionally add a third column for the status code, like /old,/new,302. Lines starting with # are treated as comments and skipped, and blank lines are ignored, so you can paste a CSV export directly from a spreadsheet.
What is a redirect chain and why does it matter?
A redirect chain happens when /a redirects to /b, and /b itself redirects to /c, so a visitor or crawler hitting /a has to follow two hops to reach the final page. Chains add latency, can leak link equity in search engines, and sometimes exceed a browser's or crawler's max-redirect limit. This tool walks every mapping to its final destination and flags any URL that is more than one hop away, so you can point /a straight at /c instead.
What is a redirect loop and how is it detected?
A redirect loop happens when following the chain of redirects eventually returns to a URL already visited, for example /a → /b → /a, which browsers stop with an ERR_TOO_MANY_REDIRECTS error and search engines simply drop. The tool follows each mapping's target through the full list, keeping track of every URL already visited in that path; if a target matches a URL already in the current path, it is reported as a loop with the exact cycle shown, before you ever deploy the config.
Which redirect status code should I use, 301 or 302?
Use 301 (Moved Permanently) when the old URL is gone for good, such as after a site migration, URL restructure, or domain change — it tells browsers and search engines to transfer ranking signals and update their stored links to the new URL. Use 302 (Found / temporary) when the move is short-lived, like an A/B test, a maintenance redirect, or a seasonal page, since it tells crawlers to keep indexing the original URL and check back. This tool defaults every row to 301 but lets you set a global default or override per row with a third CSV column.
Does this tool upload my URL list anywhere?
No. Parsing, chain and loop detection, and all five config outputs are generated in plain JavaScript in your browser. There is no server call and no network request after the page loads, so it keeps working with the network disconnected. That makes it safe to paste an unreleased migration map or internal staging URLs without them ever leaving your machine.
Can I generate config for more than one platform from the same list?
Yes, that is the point of the tool: paste your old→new URL list once and it renders nginx, Apache .htaccess, Netlify _redirects, Vercel vercel.json, and Cloudflare Bulk Redirects CSV simultaneously in five tabs, all generated from the same parsed and validated mapping, so you don't have to re-run a single-platform generator five times or keep the outputs in sync by hand.
Does it handle wildcard or path-prefix redirects?
Yes. If an old URL ends in /*, the generator emits a prefix-matching rule for each platform: a regex location block in nginx, a RewriteRule with a captured group in .htaccess, a splat rule in Netlify, a source with :path* in Vercel, and a wildcard source URL in the Cloudflare Bulk Redirects CSV. Wildcard rows are also excluded from exact-match chain and loop detection since prefix matches can't be walked the same way as literal URLs.