# Cloudflare Queues vs Temporal

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

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

## At a glance

| Criterion | Cloudflare Queues | Temporal |
| --- | --- | --- |
| 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. |
| 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. ([source](https://developers.cloudflare.com/queues/platform/pricing/))
- 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. ([source](https://temporal.io/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. ([source](https://developers.cloudflare.com/queues/platform/pricing/))
- 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. ([source](https://temporal.io/pricing))

### 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/))
- Temporal: 2 MB maximum payload per request (each Workflow/Activity argument or return value); 4 MB per Event History transaction, non-configurable. ([source](https://docs.temporal.io/cloud/limits))

### 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/))
- 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. ([source](https://temporal.io/pricing))

### Maximum delay

- Cloudflare Queues: 24 hours, set with delaySeconds when sending or retrying. ([source](https://developers.cloudflare.com/queues/platform/limits/))
- Temporal: Timers (durable sleeps) may run up to 100 years in Temporal Cloud. ([source](https://docs.temporal.io/cloud/limits))

### 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/))
- 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. ([source](https://docs.temporal.io/cloud/limits))

## 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 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.

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: 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.

## Documented by only one

- Entry paid plan: Temporal: $100/month for Essentials, including 1 million Actions, 1 GB active storage and 40 GB retained storage. Business starts at $500/month with 2.5 million Actions.
- Startup credit program: Temporal: Temporal Cloud startup credits: $6,000, for funded startups that have raised $30M or less.
- Regions: Temporal: 20 regions for Temporal Cloud Namespaces: 14 AWS regions and 6 Google Cloud regions, each with a PrivateLink or Private Service Connect endpoint.
- Dead letter queue: Cloudflare Queues: Supported
- SOC 2: Temporal: SOC 2 Type II certified; trust center lists SOC 2 Type 2, GDPR, HIPAA and CCPA badges.
- HIPAA: Temporal: Temporal Cloud is stated to be compliant with HIPAA regulations; HIPAA listed among trust-center certifications.
- GDPR / data residency: Temporal: GDPR compliant with a DPA reflecting GDPR; Namespaces do not share data processing or storage across regional boundaries.
- Encryption at rest: Temporal: Persistence layer and Elasticsearch index encrypted at rest with AES-256-GCM; TLS 1.3 in transit.
- Customer-managed keys: Temporal: Client-side Data Converter encrypts payloads with your keys on your Workers before they reach Temporal Cloud, which cannot decrypt them; no server-side KMS option stated.
- Role-based access control: Temporal: Account-level roles (administrator, developer, read-only) plus Namespace-level permissions; custom roles, SAML and SCIM documented.
- Private networking / VPC: Temporal: AWS PrivateLink or GCP Private Service Connect to Namespaces, alongside the default public endpoints.

## 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.
