Skip to main content
If your application currently relies on 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 linkxtr/laravel-qrcode:
Laravel automatically registers the 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 omit size() 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’s color() 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 to linkxtr/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.