Cloudflare Queues vs Temporal
SEPT 2026 auditA comparison of Cloudflare Queues and Temporal built from values read directly from each provider's own documentation, with the source recorded against every figure.
The short answer
Choose 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.
Editorial · Palash Bagchi · approved
Choose Temporal if…
Long-running, stateful workflows where losing execution history is the failure that matters — Temporal keeps event history as first-class storage rather than logs that expire.
Editorial · Palash Bagchi · approved
Consider something else if…
- 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.
- Temporal: Entry is $100 a month before any usage, and the unit is an Action, which does not map onto messages or task runs — budgeting requires modelling your workflows, not counting jobs.
6 sourced criteria separate them — see where, with sources, below.
Pick the criteria you care about. The chart counts how many of them lean toward each provider — the same read as scanning the bars below, just totalled for the ones you chose.
Cloudflare Queues 0
Temporal 0
At a glance.
| Criterion | Cloudflare Queues | Temporal |
|---|---|---|
| Pricing | ||
| Free tier | Yes | Yes |
| Pricing model | Billed per operation, not per message: one operation per 64 KB written, read or deleted, and a message larger than 64 KB counts as several. Cloudflare states a normal delivery takes three operations — one write, one read, one delete — so a million messages is nearer three million operations. Workers Paid includes 1,000,000 operations a month, then $0.40 per million; the free plan allows 10,000 a day. | Per Action, with storage billed separately and split between open and closed workflows. Plans buy SLA tier and support response rather than volume — Essentials is 99.9% with one business day P0 response, Business adds scale. An open-source self-hosted edition runs the same service on your own infrastructure. |
| Queues | ||
| 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,000 Actions a month on Essentials and 2.5 million on Business. An Action is Temporal's own unit — a workflow operation — and is not comparable to a message, an operation or an execution elsewhere in this category. |
| 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. | 2 MB maximum payload per request (each Workflow/Activity argument or return value); 4 MB per Event History transaction, non-configurable. |
| Message retention | 4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours. | Storage rather than a time window: 1 GB of active storage for open workflows and 40 GB retained for closed ones on Essentials, 2.5 GB active on Business. Temporal keeps workflow event history, so retention is bounded by bytes rather than by days — recorded without a magnitude because it is not the quantity this criterion ranks. |
| Maximum delay | 24 hours, set with delaySeconds when sending or retrying. | Timers (durable sleeps) may run up to 100 years in Temporal Cloud. |
| Concurrency | 250 concurrent consumer invocations, push-based only, with per-queue throughput capped at 5,000 messages a second and a 25 GB backlog. | 500 Actions per second per Namespace by default, auto-scaling above that with On-Demand Capacity; 20,000 Activity and 20,000 Workflow Task pollers per Namespace. |
Where they differ.
Pricing model
- Cloudflare Queues
- Billed per operation, not per message: one operation per 64 KB written, read or deleted, and a message larger than 64 KB counts as several. Cloudflare states a normal delivery takes three operations — one write, one read, one delete — so a million messages is nearer three million operations. Workers Paid includes 1,000,000 operations a month, then $0.40 per million; the free plan allows 10,000 a day.
- Temporal
- Per Action, with storage billed separately and split between open and closed workflows. Plans buy SLA tier and support response rather than volume — Essentials is 99.9% with one business day P0 response, Business adds scale. An open-source self-hosted edition runs the same service on your own infrastructure.
Sources (2) →Sources ↓
- Pricing — Cloudflare Queues docs ↗
“An operation is counted for each 64 KB of data that is written, read, or deleted. [...] Standard operations 10,000 operations/day included 1,000,000 operations/month included + $0.40/million operations [...] In most cases, it takes 3 operations to deliver a message: 1 write, 1 read, and 1 delete.”
Read 2026-09-07 · official docs
- Pricing — Temporal ↗
“Cloud platform 99.9% SLA, 99.99% HA options [...] Essentials support with 1 business day P0 response time [...] Host It Yourself Open Source Temporal Self-Hosted [...] Temporal Service Temporal SDKs Temporal CLI Temporal UI Community Support”
Read 2026-09-06 · official pricing
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.
- Temporal
- 1,000,000 Actions a month on Essentials and 2.5 million on Business. An Action is Temporal's own unit — a workflow operation — and is not comparable to a message, an operation or an execution elsewhere in this category.
Sources (2) →Sources ↓
- Pricing — Cloudflare Queues docs ↗
“1,000,000 operations/month included + $0.40/million operations [...] An operation is counted for each 64 KB of data that is written, read, or deleted. [...] In most cases, it takes 3 operations to deliver a message [...] 10,000 operations/day included”
Read 2026-09-06 · official docs
- Pricing — Temporal ↗
“Essentials Starting at $100/mo. [...] 1 M Actions 1 GB Active Storage 40 GB Retained Storage [...] Business [...] 2.5 M Actions 2.5 GB Active Storage”
Read 2026-09-06 · official pricing
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.
2 MB maximum payload per request (each Workflow/Activity argument or return value); 4 MB per Event History transaction, non-configurable.
Sources (2) →Sources ↓
- Limits — Cloudflare Queues docs ↗
“Message size | 128 KB [...] Messages can include up to ~100 bytes of internal metadata that counts towards total message limits.”
Read 2026-09-06 · official docs
- Limits - Temporal Cloud | Temporal Documentation ↗
“The max payload for a single request is 2 MB. The max size limit for any given Event History transaction is 4 MB. This limit is non-configurable for Temporal Cloud.”
Read 2026-09-13 · official docs
Message retention
- Cloudflare Queues
- 4 days by default on Workers Paid, configurable up to 14 days. Workers Free is fixed at 24 hours.
- Temporal
- Storage rather than a time window: 1 GB of active storage for open workflows and 40 GB retained for closed ones on Essentials, 2.5 GB active on Business. Temporal keeps workflow event history, so retention is bounded by bytes rather than by days — recorded without a magnitude because it is not the quantity this criterion ranks.
Sources (2) →Sources ↓
- Pricing — Cloudflare Queues docs ↗
“Message retention | 24 hours (non-configurable) | 4 days default, configurable up to 14 days”
Read 2026-09-06 · official docs
- Pricing — Temporal ↗
“EVENT HISTORY AND RETENTION Storage Temporal stores workflow event history as Active storage for open workflows and Retained Storage for closed workflows [...] 1 GB Active Storage 40 GB Retained Storage”
Read 2026-09-06 · official pricing
Maximum delay
- Cloudflare Queues
- 24 hours, set with delaySeconds when sending or retrying.
- Temporal
- Timers (durable sleeps) may run up to 100 years in Temporal Cloud.
Sources (2) →Sources ↓
- Limits — Cloudflare Queues docs ↗
“delaySeconds (when sending or retrying) | 24 hours”
Read 2026-09-06 · official docs
- Limits - Temporal Cloud | Temporal Documentation ↗
“Timer duration limit Timers have a maximum duration of 100 years in Temporal Cloud.”
Read 2026-09-13 · official docs
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.
- Temporal
- 500 Actions per second per Namespace by default, auto-scaling above that with On-Demand Capacity; 20,000 Activity and 20,000 Workflow Task pollers per Namespace.
Sources (2) →Sources ↓
- Limits — Cloudflare Queues docs ↗
“Concurrent consumer invocations | 250 push-based only [...] Per-queue message throughput | 5,000 messages per second [...] Per-queue backlog size | 25GB”
Read 2026-09-06 · official docs
- Limits - Temporal Cloud | Temporal Documentation ↗
“Actions per second Scope: Namespace Default limit: 500 actions per second (APS). [...] Temporal Cloud limits each Namespace to 20,000 Activity pollers and 20,000 Workflow Task pollers concurrently.”
Read 2026-09-13 · official docs
When these numbers change, hear about it. Sources are re-checked monthly; a repricing goes out as a short note.
Documented by only one.
These criteria are published by one provider and not the other. An absence here means we have not found a source, not that the feature is missing.
Questions this comparison answers.
Should I choose Cloudflare Queues or Temporal?
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 Temporal if Long-running, stateful workflows where losing execution history is the failure that matters — Temporal keeps event history as first-class storage rather than logs that expire.
