simplesoftwareio/simple-qrcode, you are likely running into maintenance and compatibility concerns on modern PHP and Laravel versions. The simple-qrcode package has remained unmaintained since February 2021 and has not been tested or updated for PHP 8.2+ or modern Laravel releases, relies on mutable builder instances, and lacks modern vector styling features.
linkxtr/laravel-qrcode is engineered as a modern, high-performance replacement. It maintains drop-in API compatibility for common generation calls while providing immutable builder safety, a native Blade component, an interactive Artisan CLI, WebP support, custom eye shapes, and 100% decode-verified scannability.
Feature comparison
Migrating in three steps
1
Swap Composer dependencies
Remove the unmaintained package and install Laravel automatically registers the
linkxtr/laravel-qrcode:QrCode facade and <x-qr-code> Blade component.2
Publish configuration
Publish the configuration file to customize global defaults:This creates
config/qrcode.php with default format, size, margin, colors, error correction, and cache settings.3
Update facade imports
Update your facade namespace imports across your codebase.If your application used global facade aliases without imports, the
QrCode alias resolves directly to Linkxtr\QrCode\Facades\QrCode.Side-by-side code comparison
Basic generation
The core fluent API is identical. While most existing calls work unchanged, calls that omitsize() and margin() use package defaults of 400 px and four quiet-zone modules instead of the legacy 100 px and zero margin. To retain the legacy output dimensions and layout, explicitly set size(100) and margin(0).
Colors and background
Both packages support RGB and alpha channels, where the facade’scolor() accepts integer channels. If you want to use hex strings, you can pass them to the Blade component, configuration files (config/qrcode.php and .env), or gradient().
Logo merge with high error correction
Embedding logos requires error correction level H to ensure scannability.Structured data types
Helper methods for structured payloads map cleanly:New features unlocked
Migrating tolinkxtr/laravel-qrcode provides immediate architectural improvements:
1. Immutable builder safety
simplesoftwareio/simple-qrcode mutated generator instances in place. If you shared a base generator or resolved it from a singleton container, subsequent calls inherited options set by earlier requests. linkxtr/laravel-qrcode clones its internal configuration on every fluent call, preventing cross-request leaks.
2. Blade component with automatic accessibility
Render accessible QR codes directly in your Blade views without{!! !!} directives:
3. Interactive Artisan CLI
Generate QR codes in terminals, build steps, and deployments:4. Built-in caching
Cache rendered QR codes directly using your application cache:5. Controller Responsable support
Return QR code results directly from your controller methods:Quickstart
Get started with installation and your first QR code.
Blade Component
Learn how to drop the Blade component into your templates.