Bulk CSV Import
Create up to 500 redirect rules at once by uploading a CSV file. All rule types are supported — exact paths, wildcards, named parameters, and catch-alls.
How to import
Rules go live globally within about 60 seconds of import.
CSV format
Columns
| Column | Required | Notes |
|---|---|---|
| source_path | Yes | Must start with /. Leave blank for a catch-all rule. Supports wildcards (/blog/*) and named params (/posts/[slug]). |
| destination | Yes | Must be a full URL including https://. Use http:// only when explicitly needed. Named param tokens (e.g. [slug]) are substituted at request time. |
| type | No | 301 or 302. Defaults to 301 when omitted or blank. |
Example file
source_path,destination,type /old-page,https://example.com/new-page,301 /blog/*,https://example.com/posts,301 /posts/[slug],https://example.com/articles/[slug],301 /docs/[section]/[...rest],https://example.com/help/[section]/[...rest],301 ,https://example.com,301
The last row has a blank source_path — this creates a catch-all rule that matches any request with no other matching rule.
Formatting notes
Supported rule types
Every rule type available in the dashboard can also be defined in CSV.
/old-page,https://example.com/new-page,301Matches only the exact path. Fastest match type — checked first.
/blog/*,https://example.com/posts,301Matches any path starting with the prefix. The * matches one or more segments but the value is not passed to the destination.
/posts/[slug],https://example.com/articles/[slug],301Captures a path segment and substitutes it into the destination. Use multiple tokens for multiple segments. Use [...rest] to capture everything including slashes.
,https://example.com,301Blank source_path matches any request that has no other matching rule. Useful for full-domain redirects.
For full pattern matching documentation see the redirect rules reference.
Validation & errors
Each row is validated independently. Invalid rows are skipped and reported — valid rows in the same file are still imported.
| Error | Cause |
|---|---|
| must start with / | source_path is not blank and does not begin with /. Check for extra spaces or a missing leading slash. |
| Missing destination URL | The destination column is empty. |
| Invalid destination URL | The destination is not a valid URL. Make sure it includes https://. |
| must use http or https | The destination uses a non-http scheme such as ftp:// or mailto:. |
| must be 301 or 302 | The type column contains a value other than 301 or 302. |
| exceeds the 500 row limit | The file has more than 500 data rows. Split into multiple files. |
| 1 MB limit | The file is larger than 1 MB. |
Exporting from Excel or Google Sheets
Google Sheets
File → Download → Comma Separated Values (.csv). The exported file is UTF-8 without BOM and imports cleanly.
Microsoft Excel
File → Save As → CSV UTF-8 (Comma delimited) (.csv). Excel adds a UTF-8 BOM to the file — this is stripped automatically before parsing, so no manual cleanup is needed.
Avoid "CSV (MS-DOS)" or "CSV (Macintosh)" export options in Excel — these use non-UTF-8 encodings that may cause character corruption in URLs with special characters. Use CSV UTF-8 instead.
Limits
| Plan | Total rules per domain | Max rows per CSV |
|---|---|---|
| Hobby (free) | 100 | 100 (plan limit applies) |
| Pro | Unlimited | 500 |
| Agency | Unlimited | 500 |
For migrations larger than 500 rules, split your CSV into multiple files and import them one at a time. Max file size is 1 MB per upload.
Migrating from other tools
Cloudflare Page Rules
Export your Page Rules from the Cloudflare dashboard. Forwarding URL rules map directly — convert the match URL to source_path (path only, no domain) and the destination URL to destination. Cloudflare uses $1 for wildcard capture; our format uses named params like [slug] instead. See the Cloudflare migration guide for a full field comparison.
.htaccess
RewriteRule and Redirect directives can usually be converted directly. Simple Redirect 301 /old /new lines map to exact-match rows. Regex-based RewriteRules with back-references ($1) are best rewritten as named param rules.
Ahrefs / Screaming Frog / SEMrush exports
These tools export broken link reports with source URLs and suggested destinations. Copy the path column to source_path, fill in the destination column, settype to 301, and import.
Have questions not covered here?
Contact us →