Back to Trigger

Limits

docs/limits.mdx

4.4.510.1 KB
Original Source

import RateLimitHitUseBatchTrigger from "/snippets/rate-limit-hit-use-batchtrigger.mdx";

You can view your current limits, quotas, and rate limit usage in real-time by visiting the Limits page in the dashboard (accessible from the left sidebar). This page shows current rate limit token availability, quota usage, and plan features for your organization.

Concurrency limits

Pricing tierLimit
Free10 concurrent runs
Hobby25 concurrent runs
Pro100+ concurrent runs

Extra concurrency above the Pro tier limit is available via the dashboard. Click the "Concurrency" page from the left sidebar when on the Pro plan to purchase more.

Rate limits

Generally speaking each SDK call is an API call.

LimitDetails
API1,500 requests per minute

You can request a higher rate limit from us if you're on a paid plan.

<RateLimitHitUseBatchTrigger />

Queued tasks

The maximum number of runs that can be queued per queue (not across all queues in the environment). Each queue can hold up to its limit independently. When a queue hits its limit, new triggers to that queue are rejected.

<Note> The limits below apply to [Trigger.dev Cloud](https://trigger.dev). If you self-host Trigger.dev, queue size limits are configurable via the `MAXIMUM_DEV_QUEUE_SIZE` and `MAXIMUM_DEPLOYED_QUEUE_SIZE` environment variables — see [Self-hosting environment variables](/self-hosting/env/webapp#run-engine). </Note>
Pricing tierDevelopment (per queue)Staging / Production (per queue)
Free50010,000
Hobby500250,000
Pro5,0001,000,000

Maximum run TTL

On Trigger.dev Cloud, all runs have an enforced maximum TTL of 14 days. Runs without an explicit TTL automatically receive the 14-day TTL; runs with a TTL longer than 14 days are clamped to 14 days. This prevents queued runs from accumulating indefinitely. If you self-host, you can configure a maximum TTL via the RUN_ENGINE_DEFAULT_MAX_TTL environment variable — see Self-hosting environment variables.

Schedules

Pricing tierLimit
Free10 per project
Hobby100 per project
Pro1,000+ per project

Additional bundles above the Pro tier are available for $10/month per 1,000 schedules. Contact us via email or Discord to request more.

When attaching schedules to tasks we strongly recommend you add them in our dashboard if they're "static". That way you can control them easily per environment.

If you add them dynamically using code make sure you add a deduplicationKey so you don't add the same schedule to a task multiple times. If you don't your task will get triggered multiple times, it will cost you more, and you will hit the limit.

If you're creating schedules for your user you will definitely need to request more schedules from us.

Projects

Pricing tierLimit
All tiers10 per organization

Each project receives its own concurrency allocation. If you need to support multiple tenants with the same codebase but different environment variables, see the Multi-tenant applications section for a recommended workaround.

Preview branches

Pricing tierLimit
FreeNot available
Hobby5 preview branches
Pro20+ preview branches

Additional bundles above the Pro tier are available for $10/month per preview branch. Contact us via email or Discord to request more.

Realtime connections

Pricing tierLimit
Free10 concurrent connections
Hobby50 concurrent connections
Pro500+ concurrent connections

Additional bundles are available for $10/month per 100 concurrent connections. Contact us via email or Discord to request more.

Task payloads and outputs

LimitDetails
Single trigger payloadMust not exceed 3MB
Batch trigger payloadEach item can be up to 3MB (SDK 4.3.1+). Prior: 1MB total combined
Task outputsMust not exceed 10MB

Payloads and outputs that exceed 512KB will be offloaded to object storage and a presigned URL will be provided to download the data when calling runs.retrieve. You don't need to do anything to handle this in your tasks however, as we will transparently upload/download these during operation.

Batch size

A single batch can have a maximum of 1,000 items with SDK 4.3.1+. Prior versions are limited to 500 items.

<SoftLimit />

Batch trigger rate limits

Batch triggering uses a token bucket algorithm to rate limit the number of runs you can trigger per environment. Each run in a batch consumes one token.

Pricing tierBucket sizeRefill rate
Free1,200 runs100 runs every 10 sec
Hobby5,000 runs500 runs every 5 sec
Pro5,000 runs500 runs every 5 sec

How it works: You can burst up to your bucket size, then tokens refill at the specified rate. For example, a Free user can trigger 1,200 runs immediately, then must wait for tokens to refill (100 runs become available every 10 seconds).

<Note> When you hit batch rate limits, the SDK throws a `BatchTriggerError` with `isRateLimited: true`. See [Handling batch trigger errors](/triggering#handling-batch-trigger-errors) for how to detect and react to rate limits in your code. </Note>

Batch trigger processing concurrency

When you send a batch trigger, we convert it into individual runs. This limit controls the maximum number of batches being converted into runs simultaneously per environment. It is not a limit on how many batch runs can be executing at once.

Pricing tierLimit
Free5 concurrent batches
Hobby10 concurrent batches
Pro50 concurrent batches

Log retention

Pricing tierLimit
Free1 day
Hobby7 days
Pro30 days

Log size

We limit the size of logs to prevent oversized data potentially causing issues.

<Expandable title="log limits">

Attribute Limits

  • Span Attribute Count Limit: 256
  • Log Attribute Count Limit: 256
  • Span Attribute Value Length Limit: 131072 characters
  • Log Attribute Value Length Limit: 131072 characters

Event and Link Limits

  • Span Event Count Limit: 10
  • Link Count Limit: 2
  • Attributes per Link Limit: 10
  • Attributes per Event Limit: 10

I/O Packet Length Limit

128 KB (131,072 bytes)

Attribute Clipping Behavior

  • Attributes exceeding the value length limit (1028 characters) are discarded.
  • If the total number of attributes exceeds 256, additional attributes are not included.

Attribute Value Size Calculation

  • Strings: Actual length of the string
  • Numbers: 8 bytes
  • Booleans: 4 bytes
  • Arrays: Sum of the sizes of all elements
  • Undefined or null: 0 bytes
</Expandable>

Alerts

An alert destination is a single email address, Slack channel, or webhook URL that you want to send alerts to.

Pricing tierLimit
Free1 alert destination
Hobby3 alert destinations
Pro100+ alert destinations

If you're on the Pro plan and need more than the plan limit, you can request more by contacting us via email or Discord.

Query

Query execution is subject to the following limits:

LimitDetails
Max execution time10 seconds per query
Max result rows10,000 rows per query
Concurrent queries3 per project

Query lookback period

The maximum time range a query can look back is based on your plan:

Pricing tierLimit
Free1 day
Hobby7 days
Pro30 days

If your query's time range exceeds your plan's lookback limit, it will be automatically clipped to the maximum allowed period.

Metric widget concurrency

The number of metric widgets that can be queried concurrently per project.

LimitDetails
Concurrent widget queries30 per project

Machines

The default machine is small-1x which has 0.5 vCPU and 0.5 GB of RAM. You can optionally configure a higher spec machine which will increase the cost of running the task but can also improve the performance of the task if it is CPU or memory bound.

See the machine configurations for more details.

Team members

Pricing tierLimit
Free5 team members
Hobby5 team members
Pro25+ team members

Additional seats are available for $20/month per seat. Contact us via email or Discord to request more.