# Cloudflare Queues vs Upstash QStash

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

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

## At a glance

| Criterion | Cloudflare Queues | Upstash QStash |
| --- | --- | --- |
| 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. | 1,000 messages a day on the free plan. Pay as You Go is $1 per 100,000 messages with no daily cap; fixed plans run $180 a month for 1M a day and $420 for 10M. |
| Maximum message size | 128 KB per message, with roughly 100 bytes of that taken by internal metadata. Messages above 64 KB are billed as multiple operations. | 1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans. |
| Message retention | 4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours. | Dead letter queue retention of 3 days on the free plan, 7 days on Pay as You Go, 30 days and 3 months on the fixed plans. |
| Maximum delay | 24 hours, set with delaySeconds when sending or retrying. | 7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans. |
| Dead letter queue | Supported | Supported |

## 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/))
- Upstash QStash: 1,000 messages a day on the free plan. Pay as You Go is $1 per 100,000 messages with no daily cap; fixed plans run $180 a month for 1M a day and $420 for 10M. ([source](https://upstash.com/pricing/qstash))

### 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. ([source](https://developers.cloudflare.com/queues/platform/limits/))
- Upstash QStash: 1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans. ([source](https://upstash.com/pricing/qstash))

### 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/))
- Upstash QStash: Dead letter queue retention of 3 days on the free plan, 7 days on Pay as You Go, 30 days and 3 months on the fixed plans. ([source](https://upstash.com/pricing/qstash))

### Maximum delay

- Cloudflare Queues: 24 hours, set with delaySeconds when sending or retrying. ([source](https://developers.cloudflare.com/queues/platform/limits/))
- Upstash QStash: 7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans. ([source](https://upstash.com/pricing/qstash))

## 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 Upstash QStash if HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.

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: Upstash QStash — The free plan is capped per day rather than per month, so a single burst can exhaust it while a monthly allowance elsewhere would absorb the same volume.

## Documented by only one

- Pricing model: Upstash QStash: Per message rather than per operation, metered against a daily ceiling on the free plan and priced at $1 per 100,000 on Pay as You Go, with monthly bandwidth caps alongside — 50 GB on the smaller plans, 1 TB and 5 TB above.
- 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.

## Questions this comparison answers

**Should I choose Cloudflare Queues or Upstash QStash?**

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 Upstash QStash if HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.
