# Limits and requirements

> Current CSVJetty runtime constraints for CSV files, configured columns, account plans, React integrations, and webhook endpoints.

Canonical HTML: https://www.csvjetty.com/docs/reference/limits

## CSV file limits

- CSV files only.
- Maximum file size: 20 MB.
- At least one header row and one data row.
- 1–100 unique, nonempty source headers.
- Source header length: up to 200 characters.
- Every record must contain the same number of fields as the header row.

## Column limits

- 1–30 configured destination columns.
- Column names are unique identifiers up to 50 characters.
- Up to 10 aliases per destination column.
- Up to 100 values for a select column.
- Regex patterns can contain up to 200 characters.

## Plan limits

| Plan | Monthly imports | Rows per upload |
| --- | --- | --- |
| Free | 100 imports / month | 10,000 rows / upload |
| Paid | 500 imports / month | 20,000 rows / upload |

Monthly allowances reset on the first day of each month in UTC. Development mode can be used for testing without consuming the monthly import allowance.

## Framework requirements

- React 18 or 19.
- Next.js App Router integrations should render CSVJetty from a client component.
- Pages Router integrations can render CSVJetty from a normal page or component.

Treat imported rows as untrusted input. CSVJetty browser validation does not replace authentication, authorization, or server-side validation.

## Webhook requirements

- The configured endpoint must use HTTPS.
- Credentials must not be embedded in the webhook URL.
- Custom ports and URL fragments are not supported.
- Verify the CSVJetty HMAC signature against the raw request body.
- Reject signatures with timestamps older than five minutes.
- Use the supplied idempotency key to deduplicate delivery.
