Skip to main content
Bull is a premium queue package for handling distributed jobs and messages in Node.js. Built on top of Redis, it provides a robust and performant solution for managing background jobs with features like delayed jobs, job retries, priority queues, and rate limiting.
Bull is currently in maintenance mode with bug fixes only. For new projects, consider BullMQ, a modern TypeScript rewrite with additional features.

Installation

Install Bull and set up Redis for your project

Quick Start

Create your first queue and start processing jobs

API Reference

Explore the complete API documentation

Patterns

Learn common patterns and best practices

Key Features

Bull is designed to be robust, efficient, and easy to use:
  • Minimal CPU usage - Polling-free design ensures efficient resource utilization
  • Redis-backed - Leverages Redis for robust, atomic operations
  • Delayed jobs - Schedule jobs to run at a specific time in the future
  • Repeatable jobs - Run jobs on a schedule using cron expressions
  • Rate limiting - Control job processing rate to avoid overwhelming external services
  • Automatic retries - Configure retry attempts with exponential backoff strategies
  • Priority queues - Process high-priority jobs before low-priority ones
  • Concurrency control - Process multiple jobs in parallel with configurable limits
  • Pause/Resume - Pause job processing globally or locally
  • Multiple job types - Handle different job types in a single queue
  • Sandboxed processing - Run processor functions in separate processes for isolation
  • Automatic recovery - Jobs are automatically recovered from process crashes

Queue Data Structures

Bull organizes jobs using six Redis data structures:
  wait (list)      - Jobs waiting to be processed
  active (list)    - Jobs currently being processed
  delayed (zset)   - Jobs scheduled for future execution
  priority (zset)  - Jobs with priority values
  completed (zset) - Successfully completed jobs
  failed (zset)    - Jobs that failed processing
The job lifecycle flows through these structures:
     --> priority       --> completed
    /     |            /
job --> wait --> active
    \     ^            \
     v    |             --> failed
    delayed

Use Cases

Bull is trusted by organizations like Atlassian, Autodesk, Mozilla, and Salesforce for:
  • Media processing - Transcode videos, audio, and images
  • Email delivery - Send emails asynchronously with retry logic
  • Data aggregation - Process large datasets in the background
  • Scheduled tasks - Run periodic maintenance and cleanup jobs
  • Webhook handling - Reliably process and retry webhook deliveries
  • Report generation - Generate heavy reports without blocking requests

Requirements

  • Node.js >= 12
  • Redis >= 2.8.18

What’s Next?

Install Bull

Get started by installing Bull and configuring Redis

Quick Start Guide

Build your first queue in minutes

Build docs developers (and LLMs) love