Convert redirect rules between .htaccess, nginx, Netlify, Vercel and Cloudflare
Paste the config you have. Pick the format you need. Every rule either converts exactly or gets a warning with its line number. Nothing is stored, nothing is guessed by a model. Load an example.
Warnings
What each format can express
The converter keeps exact and prefix rules lossless everywhere. Regex and conditions are where formats differ.
| Format | File | Wildcard | Regex | Notes |
|---|---|---|---|---|
| Apache | .htaccess | RedirectMatch ^/a/(.*)$ | Yes | Redirect without a status is a 302. RewriteCond lines are kept as a warning, not converted. |
| nginx | redirects.conf | location ^~ /a/ + rewrite | Yes | return drops the query string unless $is_args$args is appended; the converter adds it. |
| Netlify | _redirects | /a/* /b/:splat | No | :param segments and ! force. Default status 301. |
| Vercel | vercel.json | /a/:path* | Per-segment | permanent: true is a 308. Explicit statusCode is emitted to keep your 301. |
| Next.js | next.config.js | /a/:path* | Per-segment | Same objects as Vercel. Paste the array as JSON; the JS file itself is not parsed. |
| Cloudflare Bulk Redirects | .csv | subpath_matching | No | Needs a hostname in source_url. Regex needs a Redirect Rule with regex_replace() on Business or higher. |
| Cloudflare Pages | _redirects | /a/* /b/:splat | No | Netlify syntax. 2,000 static and 100 dynamic rules per project. No ! flag. |
Why migrations break redirects
Every host has its own redirect syntax, its own default status code and its own idea of what a wildcard matches. An Apache Redirect matches sub-paths and defaults to 302; a Netlify line defaults to 301 and only wildcards at the end of a path; Vercel's permanent: true is a 308. A hand-ported list gets most rules right and quietly loses the rest, and you find out from Search Console weeks later.
RedirectForge parses each rule into one canonical form (exact, prefix, or regex, plus status, query handling and force) and writes it back in the target syntax. When a rule cannot be expressed exactly, it is not dropped and not approximated: it is listed under Warnings with its source line and the reason, so the review is a five-minute read instead of a diff of two files.
Pro: no rule cap, every format in one call
For sites with more than 200 redirects, and for agencies that migrate more than one site.
Unlimited rules and to: "all" over the API
The free converter stops at 200 parsed rules per conversion. A Pro key removes the cap and adds "to": "all", which returns every supported format in a single response so you can commit them all at once. Same deterministic engine, one key, unlimited runs.
Secure checkout by Stripe. Your API key is emailed the moment payment completes. Agency renews at $49 a year until you cancel.
Frequently asked questions
Which formats does it read and write?
Apache .htaccess (Redirect, RedirectMatch, RewriteRule), nginx (location, return, rewrite), Netlify _redirects, Vercel vercel.json, Next.js redirects, Cloudflare Bulk Redirects CSV and Cloudflare Pages _redirects. Every one of them works as both source and target.
What happens to regex rules?
Apache and nginx keep them as regex. Netlify, Vercel, Next.js and Cloudflare Pages get them as placeholders when the pattern is made of plain path segments (^/blog/([^/]+)/(.*)$ becomes /blog/:p1/*). Cloudflare Bulk Redirects cannot hold a regex at all, so the rule is left out of the CSV and listed in the warnings with the line number and a pointer to Redirect Rules.
Is the conversion exact?
Exact-match and prefix rules round-trip losslessly through every format, including status code and query-string handling. Anything else, such as RewriteCond conditions, server variables like %{HTTP_HOST}, case-insensitive flags or status codes the target does not support, is never silently dropped or approximated. It appears in the warnings with its source line and a one-line reason.
Is my config stored?
No. The rules are parsed in memory inside the request and the response is returned. There is no database, no account and no model call. The conversion is deterministic: the same input always produces the same output.
Is this free?
Yes, up to 200 rules per conversion, with no signup. Pro removes the cap and adds an API mode that returns every format in one call: $12 once for a single migration (key valid 7 days), or $49 a year for agencies that do this regularly.