Bulk Redirect Map Builder
Paste or build a list of old and new URLs, pick your server, and get a ready-to-paste redirect block for nginx, Apache, Netlify, CSV, or JSON. Every redirect defaults to a permanent 301, and you can set 302 per row. It all runs in your browser, so nothing you enter is uploaded.
How to build a redirect map
- Add a row for each redirect with the old path in 'from' and the new path in 'to', setting 301 or 302 per row.
- Choose your target format: nginx, Apache, Netlify, CSV, or JSON.
- Copy the generated block or download it, then drop it into your server config or redirects file.
Examples
A single 301 in Apache format
[{ from: "/old-page", to: "/new-page" }] as ApacheRedirect 301 /old-page /new-page
The same redirect in nginx format
[{ from: "/old-page", to: "/new-page" }] as nginxrewrite ^/old-page$ /new-page permanent;
A temporary 302 in Netlify format
[{ from: "/sale", to: "/summer-sale", status: 302 }] as Netlify/sale /summer-sale 302
Frequently asked questions
Is my list of URLs sent to a server?
No. The whole redirect map is built in your browser with JavaScript. Nothing you type is uploaded, logged, or stored, so it is safe to use with internal paths, staging URLs, or a migration plan that is not live yet.
What is the difference between a 301 and a 302 redirect?
A 301 is permanent and tells search engines to pass ranking signals to the new URL, so it is the right choice for moved or merged pages. A 302 is temporary and keeps the old URL indexed, which suits short promotions or A/B tests. Every row defaults to 301 and you can switch any row to 302.
Which formats can it export?
Five: nginx rewrite directives, Apache Redirect lines, a Netlify _redirects file, a CSV with a from,to,status header, and a JSON array. Pick the one that matches your stack and paste the result straight into your config or redirects file.
How does the nginx output handle different status codes?
A 301 becomes 'rewrite ^/old$ /new permanent;' and a 302 becomes 'rewrite ^/old$ /new redirect;'. Any other 3xx code, such as 307 or 308, is written as an explicit 'return' inside a location block so the exact status is preserved.
What happens to rows with a missing path?
Any row that is missing either the from or the to value is skipped, so a half-finished line never produces a broken rule. If no row has both paths filled in, the builder asks you to add at least one complete redirect.
Where do I put the generated redirects?
nginx directives go inside a server block, Apache Redirect lines go in your .htaccess or vhost config, and the Netlify lines go in a file named _redirects at the root of your published site. CSV and JSON are handy for spreadsheets, audits, or feeding another script.
Related tools
Redirect Checker
Paste a redirect map and see every chain mapped out, with loops, multi-hop chains, duplicate sources and temporary 302s flagged. Runs in your browser.
Htaccess Generator
Build an Apache .htaccess file with toggles for HTTPS, www, redirects, blocked IPs, error pages, caching and compression. Copy or download it.
Sitemap Validator
Paste your sitemap XML and check it against the sitemaps.org rules. Flags missing loc tags, bad URLs, invalid priority and lastmod. Runs in your browser.
Article Schema Generator
Generate Article, NewsArticle or BlogPosting JSON-LD schema. Add headline, author, publisher and dates, then copy the script into your page.
Breadcrumb Schema Generator
Build BreadcrumbList JSON-LD structured data. Add your breadcrumb trail, reorder the steps, then copy or download the script for your page.
Bulk Hreflang Generator
Generate hreflang annotations for many languages at once. Add language and URL rows, pick HTML, XML sitemap, or HTTP header output. Runs in your browser.