Overview
Laravel Horizon is an official Laravel package, first released in 2017, that adds a dashboard and code-driven configuration to Laravel's Redis-powered queues. Job dispatching, retries and delays come from Laravel's queue itself; Horizon manages the workers that process them.
All worker settings live in config/horizon.php, keyed by environment, with supervisors defining queues, process counts, attempts, timeouts and backoff. Balancing strategies (auto, simple or none) move worker processes between queues based on load. You run php artisan horizon under a process monitor and terminate it on deploy so it reloads code.
The dashboard shows throughput, runtime, failures, recent and failed jobs, and jobs grouped by tags, and Horizon can notify you by Slack, SMS or email when queues have long wait times. It requires the redis queue driver and is not compatible with Redis Cluster.
Pricing and plans
| Plan | Price | What you get |
|---|---|---|
| Laravel Horizon | Free | MIT licence, maintained by the Laravel team |
What it does
- Code-driven worker config
- Supervisors, process counts, attempts, timeouts and backoff per environment in one version-controlled file.
- Auto balancing
- Shifts worker processes between queues based on workload, with configurable max shift and cooldown.
- Dashboard
- Throughput, runtime, failures, recent and failed jobs, with dashboard authorisation.
- Tags
- Jobs are tagged automatically by Eloquent models, or manually, so you can search them.
- Notifications
- Alerts when a queue's wait time exceeds a threshold.
- Metrics
- Snapshots of job and queue wait times and throughput.
Strengths and limitations
Strengths
- Free and maintained by the Laravel team
- Worker configuration kept in source control
- Built-in dashboard with failed-job inspection
- Automatic balancing across queues
Limitations
- Laravel only
- Requires Redis; database and SQS queue drivers are not supported
- Not compatible with Redis Cluster
- Must be restarted on each deploy to load new code
Who it suits
Good for
- Laravel apps using Redis queues in production
- Teams wanting visibility into job failures and throughput
Look elsewhere if
- Laravel apps on database or SQS queues
- Non-PHP stacks
Alternatives to Laravel Horizon
| Tool | From | Free option | Stages |
|---|---|---|---|
| DBOS Postgres-backed durable workflow library | $99/mo | ||
| Graphile Worker PostgreSQL job queue for Node.js | — | ||
| Hangfire Background job library for .NET | $500/yr | ||
| Sidekiq Redis-based background job library for Ruby | $99/mo | ||
| BullMQ Redis-based job queue library | $139/mo | ||
| Hatchet Postgres-backed task queue and durable workflow engine | Usage-based | Free tier |
Questions
Is Laravel Horizon free?
Yes. Horizon is MIT-licensed and free.
Does Laravel Horizon require Redis?
Yes. Your queue connection must use the redis driver, and Redis Cluster is not supported.
How do I deploy Laravel Horizon?
Run php artisan horizon under a process monitor such as Supervisor and call horizon:terminate during deploys so it restarts with new code.
Does Horizon schedule cron jobs?
No. Recurring tasks come from Laravel's task scheduler; Horizon manages the queue workers.
Sources read for this page