# Cloudflare Queues vs Inngest

Canonical: https://inetgeek.com/compare/cloudflare-queues-vs-inngest/

Every value below is read from Cloudflare Queues's and Inngest's own documentation. See https://inetgeek.com/methodology/ for how.

## At a glance

| Criterion | Cloudflare Queues | Inngest |
| --- | --- | --- |
| Free tier | Yes | Yes |
| Included per month | 1,000,000 operations a month on Workers Paid, then $0.40 per million. An operation is each 64 KB written, read or deleted, so a typical message costs three — Cloudflare's own formula is ((messages × 3) − 1,000,000) / 1,000,000 × $0.40. Workers Free allows 10,000 operations a day. | 50,000 executions a month on the free Hobby plan and 1,000,000 on Pro, pay-as-you-go to 20M. An execution is one function run or one step, so a run with two steps counts as three. |
| Message retention | 4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours. | Queue depth rather than a time window: 100,000 queued items on the free plan and 1,000,000 or more on Pro. Trace retention is 7 days on Pro and 90 on Enterprise. |
| Concurrency | 250 concurrent consumer invocations, push-based only, with per-queue throughput capped at 5,000 messages a second and a 25 GB backlog. | 5 concurrent steps on the free plan, 100 or more on Pro, custom on Enterprise. |

## Where they differ

### Included per month

- Cloudflare Queues: 1,000,000 operations a month on Workers Paid, then $0.40 per million. An operation is each 64 KB written, read or deleted, so a typical message costs three — Cloudflare's own formula is ((messages × 3) − 1,000,000) / 1,000,000 × $0.40. Workers Free allows 10,000 operations a day. ([source](https://developers.cloudflare.com/queues/platform/pricing/))
- Inngest: 50,000 executions a month on the free Hobby plan and 1,000,000 on Pro, pay-as-you-go to 20M. An execution is one function run or one step, so a run with two steps counts as three. ([source](https://www.inngest.com/pricing))

### Message retention

- Cloudflare Queues: 4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours. ([source](https://developers.cloudflare.com/queues/platform/pricing/))
- Inngest: Queue depth rather than a time window: 100,000 queued items on the free plan and 1,000,000 or more on Pro. Trace retention is 7 days on Pro and 90 on Enterprise. ([source](https://www.inngest.com/pricing))

### Concurrency

- Cloudflare Queues: 250 concurrent consumer invocations, push-based only, with per-queue throughput capped at 5,000 messages a second and a 25 GB backlog. ([source](https://developers.cloudflare.com/queues/platform/limits/))
- Inngest: 5 concurrent steps on the free plan, 100 or more on Pro, custom on Enterprise. ([source](https://www.inngest.com/pricing))

## Which should you choose?

Pick Cloudflare Queues if Workers applications that want a queue with no egress or throughput charges and a retention window measured in days rather than hours.

Pick Inngest if Multi-step workflows that need durable execution and retries between steps, rather than a bare queue you write a consumer for.

Consider something else: Cloudflare Queues — Billing is per 64 KB operation rather than per message, so a large payload or a chatty retry loop costs several times what the message count suggests.

Consider something else: Inngest — Every step is a billable execution, so a three-step workflow costs three times what the run count implies, and the free plan allows five concurrent steps.

## Documented by only one

- Entry paid plan: Inngest: $99/month for Pro, described as a starting price with usage above the included allowance billed on top.
- Pricing model: Inngest: Per execution, where a step counts the same as a run, plus separate meters for events ingested, span data, scores and realtime connections. The pricing page ships a calculator because the execution count is not the run count.
- Maximum message size: Cloudflare Queues: 128 KB per message, with roughly 100 bytes of that taken by internal metadata. Messages above 64 KB are billed as multiple operations.
- Maximum delay: Cloudflare Queues: 24 hours, set with delaySeconds when sending or retrying.
- Dead letter queue: Cloudflare Queues: Supported

## Questions this comparison answers

**Should I choose Cloudflare Queues or Inngest?**

Pick Cloudflare Queues if Workers applications that want a queue with no egress or throughput charges and a retention window measured in days rather than hours.
Pick Inngest if Multi-step workflows that need durable execution and retries between steps, rather than a bare queue you write a consumer for.
