Azure Queue Storage vs Upstash QStash
SEPT 2026 auditA comparison of Azure Queue Storage and Upstash QStash built from values read directly from each provider's own documentation, with the source recorded against every figure.
The short answer
Choose Azure Queue Storage if…
Azure-resident systems that want a queue billed like storage — operations plus depth, no plan to choose and no capacity to provision.
Editorial · Palash Bagchi · approved
Choose Upstash QStash if…
HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.
Editorial · Palash Bagchi · approved
Consider something else if…
- Azure Queue Storage: Queued messages are billed as stored data, so a backlog costs money by the gigabyte-month, and there is no free allowance at all where SQS gives a million requests a month.
- 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.
5 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.
Azure Queue Storage 0
Upstash QStash 0
At a glance.
| Criterion | Azure Queue Storage | Upstash QStash |
|---|---|---|
| Pricing | ||
| Pricing model | Per 10,000 operations plus stored data, with the rate set by redundancy: LRS Class 1 operations are $0.004 per 10,000, ZRS and GRS cost more for the same call. There is no plan fee and no included allowance. | 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. |
| Queues | ||
| Included per month | None included — every operation is billed. Class 1 operations are $0.004 per 10,000 on LRS in East US, which is $0.40 per million, matching Amazon SQS's standard rate exactly. | 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 | 64 KB per message. A queue may hold millions of messages, bounded only by the storage account's capacity rather than a queue-level ceiling. | 1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans. |
| Message retention | Messages in the queue are billed as stored data at $0.045 per GB-month on LRS, rather than granted as a retention window. Azure charges for depth, not for time. | 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 | Time-to-live defaults to seven days and can be set to any positive number, or to -1 for a message that never expires — the only queue here with an unbounded option. | 7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans. |
Where they differ.
Pricing model
- Azure Queue Storage
- Per 10,000 operations plus stored data, with the rate set by redundancy: LRS Class 1 operations are $0.004 per 10,000, ZRS and GRS cost more for the same call. There is no plan fee and no included allowance.
- 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.
Sources (2) →Sources ↓
- Azure Retail Prices API — Queues v2, eastus ↗
“"LRS Class 1 Operations", "10K", 0.004 [...] "ZRS Class 2 Operations", "10K", 0.004 [...] "GRS Class 1 Operations", "10K", 0.008”
Read 2026-09-06 · official pricing
- QStash Pricing — Upstash ↗
“$1 per 100K messages [...] Max Messages per Day 1,000 Unlimited 1 M 10 M 100M+ [...] Max Monthly Bandwidth 50 GB 50 GB 1 TB 5 TB Unlimited”
Read 2026-09-06 · official pricing
Included per month
- Azure Queue Storage
- None included — every operation is billed. Class 1 operations are $0.004 per 10,000 on LRS in East US, which is $0.40 per million, matching Amazon SQS's standard rate exactly.
- 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.
Sources (2) →Sources ↓
- Azure Retail Prices API — Queues v2, eastus ↗
“"productName": "Queues v2", "meterName": "LRS Class 1 Operations", "unitOfMeasure": "10K", "retailPrice": 0.004”
Read 2026-09-06 · official pricing
- QStash Pricing — Upstash ↗
“Free $0 [...] Messages per Day 1,000 [...] Pay as You Go $1 per 100K messages [...] Messages per Day Unlimited [...] $180 / month [...] 1M [...] $420 [...] 10M”
Read 2026-09-06 · official pricing
Maximum message size
64 KB per message. A queue may hold millions of messages, bounded only by the storage account's capacity rather than a queue-level ceiling.
1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans.
Sources (2) →Sources ↓
- Introduction to Azure Queue Storage — Microsoft Learn ↗
“A queue message can be up to 64 KB in size. A queue may contain millions of messages, up to the total capacity limit of a storage account.”
Read 2026-09-06 · official docs
- QStash Pricing — Upstash ↗
“Max Message Size 1 MB 10 MB 50 MB 50 MB Custom”
Read 2026-09-06 · official pricing
Message retention
- Azure Queue Storage
- Messages in the queue are billed as stored data at $0.045 per GB-month on LRS, rather than granted as a retention window. Azure charges for depth, not for time.
- 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.
Sources (2) →Sources ↓
- Azure Retail Prices API — Queues v2, eastus ↗
“"meterName": "LRS Data Stored", "unitOfMeasure": "1 GB/Month", "retailPrice": 0.045”
Read 2026-09-06 · official pricing
- QStash Pricing — Upstash ↗
“Max DLQ Retention 3 days 7 days 30 days 3 months Custom”
Read 2026-09-06 · official pricing
Maximum delay
Time-to-live defaults to seven days and can be set to any positive number, or to -1 for a message that never expires — the only queue here with an unbounded option.
7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans.
Sources (2) →Sources ↓
- Introduction to Azure Queue Storage — Microsoft Learn ↗
“For version 2017-07-29 or later, the maximum time-to-live can be any positive number, or -1 indicating that the message doesn't expire. If this parameter is omitted, the default time-to-live is seven days.”
Read 2026-09-06 · official docs
- QStash Pricing — Upstash ↗
“Max Delay 7 days 1 year Unlimited Unlimited Custom”
Read 2026-09-06 · official pricing
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 Azure Queue Storage or Upstash QStash?
Pick Azure Queue Storage if Azure-resident systems that want a queue billed like storage — operations plus depth, no plan to choose and no capacity to provision.
Pick Upstash QStash if HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.
