Generate permanent 301 redirects in bulk, with chains shortened and loops caught
Runs in your browser. Nothing you type is sent anywhere. Checked against sources on 16 Oct 2026.Moving a site or renaming pages means dozens of 301s at once, and mistakes are costly: a redirect that points at another redirect wastes a hop and some ranking, and one that points back at itself makes the page unreachable. Paste the whole list from a spreadsheet; chains are found and can be shortened in one click, loops are refused, and a duplicate old address is flagged before it ships.
Set the options you need, or start from the example.
The result is made again every time you change something.
Copy it or download it. Nothing was sent anywhere.
Paste one redirect per line, the old address and then the new one, and the rules are written as you type. Old addresses can be paths or full URLs copied from a browser or an analytics export; tabs, commas and arrows also work, so a spreadsheet column pair pastes straight in. Add a code at the end of a line to override the default, or write 410 instead of a new address for a page that is gone.
| Code | Meaning | Use it for |
|---|---|---|
| 301 | Moved permanently | Renamed pages, a new domain, HTTPS |
| 308 | Permanent, same method | APIs and forms that POST |
| 302 / 307 | Temporary | Campaigns, maintenance, A/B tests |
| 410 | Gone | Pages removed on purpose |
HTTPS and the host are handled in one hop, before the page rules. Test with 302 first: browsers remember a 301 for a long time.
The rest of the article, and all 6 questions about .htaccess Redirect Generator, are on the .htaccess Redirect Generator page.
Add RewriteEngine On once, then one line per page: RewriteRule ^old-page$ /new-page [L,R=301]. The pattern has no leading slash in .htaccess, the caret and dollar make it match only that exact page, and R=301 makes the move permanent. Place the rules near the top of the file, before any WordPress or framework block.
301 and 308 are permanent: search engines move the old page's ranking to the new address. 302 and 307 are temporary, so the old address stays indexed. 307 and 308 also require browsers to repeat the same method, such as POST, while 301 and 302 allow a switch to GET. Most page moves should use 301.
Combine the conditions so the visitor makes a single hop: redirect when HTTPS is off or the host starts with www, and send them to https plus the host without www. This generator writes exactly that with three RewriteCond lines and one RewriteRule, or a pair of server blocks for Nginx, instead of two separate redirects in a row.
Every extra hop costs a little time, and Google follows at most 10 hops before giving up, so chains waste crawl effort and slow visitors. After a second site move, old addresses often point at pages that were redirected again. This generator spots each chain and rewrites the rule to point straight at the final page in one click.
Rates and rules change; check the source before you rely on a figure.
Still stuck? Ask about .htaccess Redirect Generator and anybody who knows can answer. No account needed.
Same job, other tools: GUID Generator – Generate GUIDs for .NET, SQL Server and Windows, in brace format · ULID Generator – Sortable 26-character ULIDs, monotonic within a millisecond, with a time decoder · SHA-256 Generator – SHA-256 hash of any text or file, in hex or Base64 · Cron Expression Generator – Generate a cron expression by choosing when the job should run · Block AI Crawlers – Keep model crawlers out while search crawlers carry on.
On the related tools: Sitemap Index Generator – Split a large site into numbered sitemaps with an index file.