Overview
BullMQ is a job and message queue library built on Redis. Your app adds jobs to named queues; worker processes pull and run them with configurable concurrency, retrying failures with exponential or custom backoff. Jobs can be delayed with millisecond precision, produced on a schedule by job schedulers using cron expressions or intervals, deduplicated to debounce or throttle, and rate limited per queue.
Flows let you build parent-child job trees of any depth where parents wait for all children, which covers many multi-step pipelines without a separate workflow engine. Queues are interoperable across the Node.js, Python, Rust, Elixir and PHP packages, so one language can produce jobs that another consumes.
The core is MIT-licensed with no artificial limits, maintained by the Taskforce.sh team that also built Bull. BullMQ Pro, a paid drop-in replacement, adds group-based concurrency and rate limits, batches and observables plus support, starting at $139 a month per deployment.
Durability depends on your Redis configuration: Redis must be set to persist data and to never evict keys, and jobs are held in memory, so very large backlogs need a correspondingly large Redis.
Pricing and plans
| Plan | Price | What you get |
|---|---|---|
| BullMQ (open source) | Free | MIT licence, no limits on workers or concurrency |
| BullMQ Pro Standard | $139/mo or $1,395/yr per deployment | Groups, batches, observables, professional support; organisations under 100 employees |
| BullMQ Pro Enterprise / Embedded | Custom | Larger organisations, volume discounts, redistribution rights |
What it does
- Delayed and scheduled jobs
- Millisecond-precision delays and job schedulers with cron expressions or fixed intervals.
- Retries
- Automatic retries with exponential or custom backoff and a failed set for inspection.
- Flows
- Parent-child job hierarchies with unlimited nesting, parallel children and failure propagation.
- Rate limiting and deduplication
- Per-queue rate limits and deduplication for debounce and throttle patterns; group limits in Pro.
- Multi-language
- Official packages for Node.js and Bun, Python, Rust, Elixir and PHP sharing the same queues.
- Redis-compatible backends
- Runs on Redis, Valkey, DragonflyDB, AWS ElastiCache and Upstash.
Strengths and limitations
Strengths
- Free and MIT-licensed with no worker or concurrency limits
- High throughput on Redis-compatible stores
- Cron schedulers, delays, flows and rate limits in the free version
- Maintained by the original Bull authors for over a decade
Limitations
- Requires a Redis-compatible server configured for persistence and no eviction
- Group-based rate limiting, batches and observables are Pro-only
- Pro Standard licence is limited to organisations under 100 employees
- No built-in dashboard in the open-source package; Taskforce.sh is a separate paid product
Who it suits
Good for
- Node.js APIs offloading emails, image processing or webhooks
- Teams already running Redis
- High-volume queues where per-execution cloud pricing is too expensive
Look elsewhere if
- Serverless apps with no long-running worker process
- Long multi-step workflows that need durable state per step
Alternatives to BullMQ
| Tool | From | Free option | Stages |
|---|---|---|---|
| Oban SQL-backed job processing library for Elixir (and Python) | $135/mo | ||
| Sidekiq Redis-based background job library for Ruby | $99/mo | ||
| DBOS Postgres-backed durable workflow library | $99/mo | ||
| Hangfire Background job library for .NET | $500/yr | ||
| Windmill Open-source job orchestrator, workflow engine and internal-tool platform | $10/mo | Free tier | |
| Amazon SQS Managed message queue | Usage-based | Free tier |
Questions
Is BullMQ free?
Yes. BullMQ is MIT-licensed with no limits; BullMQ Pro is an optional paid edition from $139 a month per deployment.
Does BullMQ need Redis?
Yes, or a Redis-compatible store such as Valkey, DragonflyDB, ElastiCache or Upstash.
Can BullMQ run cron jobs?
Yes. Job schedulers create jobs from cron expressions or fixed intervals.
Does BullMQ work with Python?
Yes. There is an official Python package that works with the same queues as the Node.js version.
What does BullMQ Pro add?
Groups with their own concurrency and rate limits, batches, observables and professional support.
Sources read for this page