What is Laravel Horizon?
Laravel Horizon is a first-party, open-source queue monitoring package provided by the Laravel framework. It offers a clean, real-time dashboard and a fully code-driven configuration system for managing Redis-powered queues.
In Laravel, Horizon is the preferred solution for monitoring, balancing, and scaling background jobs, providing far more visibility and control than running standard queue workers manually.
Core Functions of Laravel Horizon
While standard Laravel queue workers operate as a black box, Horizon introduces transparency and intelligent queue management.
- Real-Time Dashboard: Horizon provides a single-page dashboard that displays pending, running, completed, and failed jobs in real time.
- Code-Driven Configuration: Worker processes, queue priorities, memory limits, and balancing behavior are fully defined in
config/horizon.php, keeping all queue logic under source control. - Automatic Load Balancing: Horizon can dynamically reassign workers to queues with higher workloads, improving throughput without manual tuning.
Key Features of Horizon
- Job Tagging: Jobs are automatically tagged using related Eloquent models, allowing easy filtering (for example, viewing all jobs related to
User:1). - Metrics & Analytics: Horizon tracks job throughput, average runtime, queue wait times, and failures, helping teams identify performance bottlenecks.
- Notifications: Configurable alerts can be sent when queues grow too large or job wait times exceed defined thresholds.
- Failed Job Management: Failed jobs can be inspected with full stack traces and retried directly from the dashboard.
Installation and Basic Setup
Installing Horizon in a Laravel application is straightforward:
composer require laravel/horizonphp artisan horizon:installTo start Horizon in a local development environment:
php artisan horizonQueue Balancing Strategies
Horizon provides multiple worker balancing strategies, configured per environment:
- simple: Distributes workers evenly across all configured queues.
- auto: Dynamically shifts workers to queues with the highest workload (recommended for most production systems).
- false: Disables balancing and processes queues strictly in the listed order.
Production Deployment & Compatibility
In production environments, Horizon should be managed using a process monitor such as Supervisor (commonly via Laravel Forge or Laravel Cloud). This ensures the php artisan horizon process is automatically restarted if it exits unexpectedly.
Important: Laravel Horizon works exclusively with Redis queues. It does not support other queue drivers such as database or Beanstalkd. Furthermore, Horizon is not compatible with Redis Cluster; it requires a standalone Redis instance or a primary/replica configuration.
Security and Dashboard Access
By default, the Horizon dashboard is only accessible in the local environment. In non-local environments, access is restricted for security reasons.
To allow production access, you must explicitly define an authorization gate in the HorizonServiceProvider, typically restricting access to specific users, roles, or IP addresses.
Related Answers
Still need help?
Talk to our Laravel experts
We've handled GDPR/CCPA compliance for dozens of EU & US Laravel.
