PHP QR Code Generator

Generate QR codes with PHP. Endroid library, Laravel integration, WordPress plugins, and more.

Popular PHP QR Libraries

Installation

Composer Install

composer require endroid/qr-code

Basic Setup

use Endroid\QrCode\QrCode;

$qrCode = new QrCode('https://example.com');
$qrCode
    ->setSize(300)
    ->setMargin(10)
    ->setEncoding('UTF-8')
    ->setErrorCorrectionLevel(ErrorCorrectionLevel::HIGH)
    ->setForegroundColor(new Color(0, 0, 0))
    ->setBackgroundColor(new Color(255, 255, 255));

header('Content-Type: ' . $qrCode->getContentType());
echo $qrCode->writeString();

Save to File

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

$qrCode = new QrCode('https://example.com');

$writer = new PngWriter();
$result = $writer->write($qrCode);

// Save to file
$result->saveToFile('qrcode.png');

// Or get data URL
$dataUri = $result->getDataUri();

Laravel Integration

Generate in Controller

namespace App\Http\Controllers;

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

class QRController extends Controller
{
    public function generate(Request $request)
    {
        $url = $request->input('url', 'https://example.com');
        
        $qrCode = new QrCode($url);
        $writer = new PngWriter();
        $result = $writer->write($qrCode);
        
        return response()
            ->stream(function () use ($result) {
                echo $result->getString();
            }, 200, [
                'Content-Type' => 'image/png',
                'Content-Disposition' => 'attachment; filename="qrcode.png"'
            ]);
    }
}

Routes

Route::get('/qr', [QRController::class, 'generate']);
// Usage: /qr?url=https://example.com

WordPress Integration

WordPress Plugin Example

<?php
/*
Plugin Name: QR Code Generator
Description: Generate QR codes on posts
*/

add_shortcode('qr_code', function($atts) {
    $atts = shortcode_atts([
        'url' => get_permalink(),
        'size' => 300
    ], $atts);
    
    require_once(plugin_dir_path(__FILE__) . 'vendor/autoload.php');
    
    $qrCode = new \Endroid\QrCode\QrCode($atts['url']);
    $qrCode->setSize($atts['size']);
    
    // Implement PNG output logic
});
?>

Usage in Posts

[qr_code url="https://example.com" size="300"]

Batch Generation

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

$urls = [
    'https://example.com/1',
    'https://example.com/2',
    'https://example.com/3',
];

$writer = new PngWriter();

foreach ($urls as $index => $url) {
    $qrCode = new QrCode($url);
    $result = $writer->write($qrCode);
    $result->saveToFile("qrcode_$index.png");
}

echo "Generated " . count($urls) . " QR codes!";

Error Correction Levels

use Endroid\QrCode\ErrorCorrectionLevel;

// Four levels available:
ErrorCorrectionLevel::LOW        // ~7% recovery
ErrorCorrectionLevel::MEDIUM     // ~15% recovery  
ErrorCorrectionLevel::QUARTILE   // ~25% recovery
ErrorCorrectionLevel::HIGH       // ~30% recovery (recommended)

Best Practices

Generate Your QR Codes

➜ Create QR Codes Now