Bulk Redirects
Bulk Redirects are available on Enterprise and Pro plans
With bulk redirects, you can handle thousands of simple path-to-path or path-to-URL redirects efficiently. You can configure bulk redirects at deployment time through files in your repository, or at runtime through the dashboard, API, or CLI. They are framework agnostic and Vercel processes them before any other route specified in your deployment.
Use bulk redirects when you have thousands of redirects that do not require wildcard or header matching functionality.
You can configure bulk redirects at deployment time through source control, or update them at runtime through the dashboard, API, or CLI. Use deployment-time redirects when you want redirects versioned with your code, or runtime redirects when you need to change them without redeploying.
Runtime changes are saved to a staging version first and only take effect once you publish or promote that version to production.
You can test bulk redirects locally with vercel dev when you configure bulkRedirectsPath in vercel.json.
| Method | Configuration | When changes apply | Best for |
|---|---|---|---|
| Deployment time | bulkRedirectsPath in vercel.json | On deploy | Redirects managed in source control |
| Runtime | Dashboard, API, or CLI | After publishing/promoting | Updates that should not redeploy |
Visit Getting Started to create bulk redirects with deployments or in the dashboard, API, or CLI.
Each redirect supports the following fields:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
source | string | Yes | N/A | An absolute path or fully qualified URL that matches each incoming request, excluding the query string. The source field does not support query parameters. Vercel ignores any query parameters you include in source. Max 2048 characters.Example: /old-marketing-page or https://old-domain.com/page |
destination | string | Yes | N/A | A location destination defined as an absolute pathname or external URL. Max 2048 characters. Example /new-marketing-page |
permanent | boolean | No | `false | Toggle between permanent (308) and temporary (307) redirect. |
statusCode | integer | No | 307 | Specify the exact status code. Can be 301, 302, 303, 307, or 308. Overrides permanent when set, otherwise defers to permanent value or default. |
caseSensitive | boolean | No | false | Toggle whether source path matching is case sensitive. |
preserveQueryParams | boolean | No | false | Toggle whether to preserve the query string on the redirect. |
In order to improve space efficiency, all boolean values can be the single characters t (true) or f (false).
We recommend using status code 307 or 308 to avoid the ambiguity of non GET methods, which is necessary when your application needs to redirect a public API.
For complete configuration details and advanced options, see the bulkRedirectsPath configuration reference.
Bulk redirects are available on the Pro and Enterprise plans. They are not available on the Hobby plan.
Each project has a free configurable capacity of bulk redirects, and additional bulk redirect capacity can be purchased in groups of 25,000 redirects by going to the Advanced section of your project's settings. At runtime, requests served by bulk redirects are treated like any other request for billing purposes. For more information, see the pricing page.
| Plan | Included in plan | Price for additional capacity |
|---|---|---|
| Pro | 1,000 | $50/month per additional 25,000 |
| Enterprise | Custom | Custom |
- Bulk redirects do not support wildcard or header matching
- A maximum of 1,000,000 bulk redirects can be configured per project.
Was this helpful?