# Upstash QStash vs Inngest

Canonical: https://inetgeek.com/compare/qstash-vs-inngest/

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

## At a glance

| Criterion | Upstash QStash | Inngest |
| --- | --- | --- |
| Free tier | Yes | Yes |
| Pricing model | 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. | 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. |
| Included per month | 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. | 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 | 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. | 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. |

## Where they differ

### 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. ([source](https://upstash.com/pricing/qstash))
- 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. ([source](https://www.inngest.com/pricing))

### Included per month

- 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))
- 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

- 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))
- 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))

## Which should you choose?

Pick Upstash QStash if HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.

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

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.
- Maximum message size: Upstash QStash: 1 MB on the free plan, 10 MB on Pay as You Go and 50 MB on the fixed plans.
- Maximum delay: Upstash QStash: 7 days on the free plan; 1 year on Pay as You Go and unlimited on the fixed plans.
- Concurrency: Inngest: 5 concurrent steps on the free plan, 100 or more on Pro, custom on Enterprise.
- Dead letter queue: Upstash QStash: Supported

## Questions this comparison answers

**Should I choose Upstash QStash or Inngest?**

Pick Upstash QStash if HTTP-first workloads that want scheduling and delay measured in months rather than a day, without running a consumer process.
Pick Inngest if Multi-step workflows that need durable execution and retries between steps, rather than a bare queue you write a consumer for.
