Background jobs, queues and workflows
Background job tools run work outside a web request, with scheduling and retries.
Use for: AI tasks, file processing, email batches and scheduled work.
AWS's fully managed message queue with standard and FIFO queues, billed per request with 1 million free requests every month and no minimum fee.
MIT-licensed Redis job queue for Node.js, Bun, Python, Rust, Elixir and PHP, with delays, cron schedulers, retries, rate limits and parent-child flows.
Python's long-established distributed task queue, running tasks on worker processes through RabbitMQ, Redis or SQS brokers, with periodic tasks, rate limits and task chaining.
Managed message queue built into Cloudflare Workers, billed per 64 KB operation with no egress charges, and free for 10,000 operations a day since February 2026.
Durable multi-step workflows that run on Cloudflare Workers, with retried steps, sleeps up to a year and event waits, billed per step, CPU time and stored state.
MIT-licensed library that adds durable workflows, queues and scheduled jobs to your app by checkpointing steps in Postgres, with no separate orchestrator to run.
Standalone job server from the author of Sidekiq that any language can push jobs to and fetch jobs from, with retries and a web UI; AGPL with a paid Enterprise edition.
Google Cloud's managed task queue that pushes each task to an HTTP endpoint or App Engine with retries, rate limits and scheduling, with 1 million free operations a month.
MIT-licensed Node.js job queue that uses only PostgreSQL, starting jobs in milliseconds via LISTEN/NOTIFY, with retries, cron and scheduled jobs.
Background job framework for .NET that runs fire-and-forget, delayed, recurring (cron) and continuation jobs inside your app, stored in SQL Server or Redis, with a built-in dashboard.
MIT-licensed task queue and durable workflow engine built on Postgres, with a cloud offering 1 million free runs a month and per-run pricing after that.
Event-driven durable functions platform: wrap code in steps and Inngest handles queues, retries, scheduling and flow control, calling your app over HTTPS.
Free MIT package from the Laravel team that manages Redis queue workers from one config file and adds a dashboard for throughput, runtimes, failures and tags.
Apache-licensed job processing for Elixir backed by PostgreSQL, MySQL or SQLite, keeping job history for inspection, with Oban Pro adding durable workflows and global limits.
MIT-licensed Node.js job queue on PostgreSQL using SKIP LOCKED, with cron, retries, dead-letter queues, priorities, pub/sub fan-out and an optional dashboard.
Low-latency durable execution runtime shipped as one Rust binary with no external database, offering workflows, keyed state, queues and timers, self-hosted or as Restate Cloud.
Open-source job queue for Go backed by PostgreSQL or SQLite, with transactional enqueueing, periodic and unique jobs and a web UI; River Pro adds workflows and concurrency limits.
Ruby's most widely used background job system: multithreaded workers on Redis, free under LGPL, with paid Pro and Enterprise editions adding batches, cron and rate limits.
MIT-licensed, database-backed Active Job backend that is the default in new Rails 8 apps, running jobs from MySQL, PostgreSQL or SQLite without Redis.
Managed service for Temporal, the MIT-licensed durable execution engine: workflows written in code survive crashes and deploys, billed per action with no base fee.
Open-source TypeScript background task platform that runs your tasks on its own managed workers with no timeouts, billed per run plus per second of compute.
HTTP-based message queue and scheduler that delivers messages to your endpoints with retries, delays, cron and dead-letter queue, billed per message.
Durable workflows on Vercel built on the open-source Workflow SDK: mark functions with 'use workflow' and 'use step', billed per state-transition event and data stored.
AGPLv3 platform that turns scripts in 20+ languages into jobs, cron schedules, workflows and internal apps, with unlimited executions when self-hosted.
| Tool | Pricing | Does | Free allowance | SDKs | Self-host |
|---|---|---|---|---|---|
| Amazon SQS aws.amazon.com · EU | Freemium | Message queue (standard and FIFO) | 1M requests/month | All AWS SDKs (JS, Python, Java, Go, .NET, Ruby, PHP...) | No |
| BullMQ bullmq.io · OSS | Open source | Job queue, delayed and cron jobs, job flows | Unlimited (MIT, self-run Redis) | Node.js/Bun, Python, Rust, Elixir, PHP | Yes, needs Redis, Valkey or Dragonfly |
| Celery docs.celeryq.dev · OSS | Open source | Task queue, periodic tasks, task chains | Unlimited (open source, self-run broker) | Python (community clients for Node.js, Go, Rust, PHP) | Yes, needs RabbitMQ, Redis or SQS broker |
| Cloudflare Queues developers.cloudflare.com | Freemium | Message queue (push to Workers or HTTP pull) | 10,000 operations/day on Workers Free | Workers (JavaScript, TypeScript, Python); HTTP pull from any language | No |
| Cloudflare Workflows developers.cloudflare.com | Freemium | Durable workflows | 3,000 steps/day on Workers Free | TypeScript/JavaScript, Python (Workers) | No |
| DBOS dbos.dev · OSS | Open source | Durable workflows, queues, scheduled jobs | Library free and unlimited; paid console from $99/mo | Python, TypeScript, Go, Java | Yes, library runs in your app with your Postgres |
| Faktory contribsys.com · OSS | Open source | Job server, scheduled jobs (cron in Enterprise) | Unlimited (AGPL, self-hosted) | Any via clients: Ruby, Go, JavaScript, Python and others | Yes, single Go server (Docker available) |
| Google Cloud Tasks cloud.google.com · EU | Freemium | Task queue with HTTP push, scheduled tasks | 1M operations/month | Google Cloud client libraries (Node, Python, Go, Java, .NET, Ruby, PHP) | No |
| Graphile Worker worker.graphile.org · OSS | Open source | Job queue, cron, scheduled jobs | Unlimited (MIT, your Postgres) | Node.js/TypeScript (jobs can be added from SQL) | Yes, needs PostgreSQL |
| Hangfire hangfire.io · OSS | Open source | Job queue, delayed and recurring (cron) jobs | Unlimited (LGPL, your SQL Server) | .NET (C#, F#, VB) | Yes, needs SQL Server or Redis (Pro) |
| Hatchet hatchet.run · OSS · EU | Open source | Task queue, DAG workflows, durable tasks, cron | 2k runs/day (no card) or 1M runs/mo (card) | Python, TypeScript, Go, Ruby | Yes, MIT, needs Postgres |
| Inngest inngest.com | Freemium | Durable workflows, event-triggered jobs, cron | 50k executions/mo, 5 concurrent steps | TypeScript, Python, Go, Kotlin/Java | Yes, single binary (no vendor support) |
| Laravel Horizon laravel.com · OSS | Open source | Queue worker manager and dashboard (Redis) | Unlimited (MIT, your Redis) | PHP (Laravel) | Yes, needs Redis (not Redis Cluster) |
| Oban oban.pro · OSS | Open source | Job queue, cron, workflows (Pro) | Unlimited (Apache 2.0, your database) | Elixir; Python (Pro licence available for both) | Yes, needs PostgreSQL, MySQL or SQLite |
| pg-boss pgboss.io · OSS | Open source | Job queue, cron, job dependencies | Unlimited (MIT, your Postgres) | Node.js/TypeScript (SQL for other runtimes) | Yes, needs PostgreSQL 13+ |
| Restate restate.dev · EU | Open source | Durable workflows, stateful handlers, queues | Cloud: 50k actions/mo; self-host free | TypeScript, Python, Java, Kotlin, Go, Rust, Ruby | Yes, single binary (BSL 1.1 server, MIT SDKs) |
| River riverqueue.com · OSS | Open source | Job queue, periodic jobs, workflows (Pro) | Unlimited (MPL 2.0, your database) | Go | Yes, needs PostgreSQL or SQLite |
| Sidekiq sidekiq.org · OSS | Open source | Job queue, scheduled jobs (cron in Enterprise) | Unlimited (LGPL, self-run Redis) | Ruby | Yes, needs Redis |
| Solid Queue github.com · OSS | Open source | Job queue, delayed and recurring jobs | Unlimited (MIT, your database) | Ruby (Rails Active Job) | Yes, needs MySQL, PostgreSQL or SQLite |
| Temporal Cloud temporal.io · OSS · EU | Paid | Durable workflows, schedules, task queues | $150 credit for 90 days (no permanent free tier) | Go, Java, Python, TypeScript, .NET, PHP, Ruby, Rust | Yes, Temporal server is MIT-licensed |
| Trigger.dev trigger.dev · OSS | Freemium | Durable tasks, queues, cron schedules | $5/mo usage credit, 20 concurrent runs | TypeScript (Python scripts via extension) | Yes, Apache 2.0 |
| Upstash QStash upstash.com · EU | Freemium | HTTP queue, cron schedules, workflows | 1,000 messages/day, 10 schedules | HTTP API; TypeScript and Python SDKs | No (local dev server only) |
| Vercel Workflows vercel.com · EU | Freemium | Durable workflows | 50k events/mo on Vercel Hobby | TypeScript/JavaScript, Python | Workflow SDK is open source; managed service is Vercel-only |
| Windmill windmill.dev · OSS | Open source | Job queue, cron, flows, internal apps | Self-host unlimited; cloud 1,000 executions/mo | Python, TypeScript, Go, Bash, SQL, Rust, PHP, C#, Java and more | Yes, AGPLv3 (Docker, Kubernetes, Fargate) |
No tools match these filters.
How to choose a job runner
- For a few scheduled tasks, use your host’s cron first. Reach for a job service when you need retries, queues or visibility into failures.
- On serverless hosts, pick a service that calls your existing endpoints (Inngest, QStash, Trigger.dev) rather than one that needs a worker process running.
- For long, multi-step processes that must survive crashes, look at durable workflow engines (Temporal, Inngest, Restate).
- Check how steps and runs are counted on the free tier; one job can be many billable steps.
Questions
Do I need a job queue for a small app?
Often not. A scheduled function on your host covers nightly tasks. A queue earns its place when work fails and must retry, or when requests would otherwise time out.
Pricing changes
-
Temporal Cloud drops the base plan fee for new sign-ups
Temporal Cloud · source ↗
-
Cloudflare Workflows adds per-step and storage billing
Cloudflare Workflows · source ↗
-
Cloudflare Queues added to the Workers Free plan
Cloudflare Queues · source ↗
-
Trigger.dev doubles included concurrency and cuts add-on price
Trigger.dev · source ↗
-
Higher limits for Queues pull consumers
Cloudflare Queues · source ↗