📝 Inputs

One pair per line. Use a comma, tab, space, or => to separate old and new URL.

🎯 Output

0
Pairs parsed
0
Valid rules
0
Skipped
Paste at least one pair to see the rules.
Back up first. Always copy your existing file (robots.txt, sitemap.xml, <head> tags, .htaccess, etc.) somewhere safe before replacing it with output from this tool. Test on a staging environment if you have one.

FAQ

What each field / button does

The input textarea

Paste one old → new URL pair per line. The old and new URL can be separated by any of: a comma, a tab, one or more spaces, or the arrow =>. Lines starting with # are treated as comments and ignored. Lines that can't be parsed are flagged but don't stop the rest from generating.

Load sample

Fills the input with a few example rows so you can see all four accepted separator styles in action.

Open .csv / .txt

Opens a file picker so you can load an existing CSV, TSV, or TXT file of redirects directly instead of pasting them. The file is read in your browser; nothing uploads.

Add header comment

When on, prepends a small comment block to the output noting which tool generated it and the date. Some teams use this for change tracking.

Skip blank lines silently

When on, empty lines are ignored without producing warnings. When off, every blank line shows up as a "skipped" issue, which is useful for strict feedback on the input.

Output format tabs

Five formats matching common hosting setups: Apache .htaccess uses Redirect 301 rules in a file at the site root. nginx produces location blocks for inside a server { } config. Cloudflare Workers is JavaScript that runs at the edge. Cloudflare Pages and Netlify both use a plain text _redirects file in the site root with the format /old /new 301. All five produce equivalent 301 redirects.

General questions

Should I use full URLs or just paths?

Either works. If you paste a full URL like https://example.com/old-page, the tool extracts just the path for server-config formats (Apache, nginx, Cloudflare Pages, Netlify) since those run inside the site root. Cloudflare Workers output preserves full URLs because workers can run across hostnames.

What is a 301 vs a 302?

A 301 is permanent. It tells search engines and browsers to update bookmarks and pass any ranking signals to the new URL. A 302 is temporary, used when the old URL will come back. This tool only outputs 301s.

How are duplicates handled?

If two rows have the same source URL, the tool flags it as a duplicate and only the first one is included in the output. Same target with different sources is fine (multiple old URLs can redirect to one new URL).

Does this tool send my URLs to a server?

No. Parsing, validation, and rule generation all happen in your browser. Your URL list never leaves your machine.