Python QR Code Generator

Complete tutorial for generating QR codes with Python. Perfect for developers, data scientists, and automation engineers.

What You'll Learn

In this comprehensive guide, you'll learn how to:

Installation

Step 1: Install Python packages

pip install qrcode[pil]
pip install pillow  # For image manipulation

Step 2: Verify installation

python -c "import qrcode; print(qrcode.__version__)"

Basic QR Code Generation

5-Line Solution

import qrcode

qr = qrcode.QRCode()
qr.add_data('https://qrcodegeneratorjp.com')
qr.make()
img = qr.make_image()
img.save('qrcode.png')
That's it! This generates a basic black-and-white QR code for any URL, text, or data.

Customization & Advanced Features

Custom Colors & Sizing

import qrcode

qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_H,
    box_size=10,
    border=4,
)

qr.add_data('https://example.com')
qr.make(fit=True)

img = qr.make_image(fill_color='#185FA5', back_color='white')
img.save('colored_qr.png')

Adding a Logo

from PIL import Image
import qrcode

# Generate QR code
qr = qrcode.QRCode()
qr.add_data('https://example.com')
qr.make()
img = qr.make_image(fill_color='black', back_color='white').convert('RGB')

# Add logo
logo = Image.open('logo.png')
qr_width, qr_height = img.size
logo_size = qr_width // 5
logo = logo.resize((logo_size, logo_size))

logo_pos = ((qr_width - logo_size) // 2, (qr_height - logo_size) // 2)
img.paste(logo, logo_pos, logo)

img.save('qr_with_logo.png')

Batch Generation

import qrcode

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

for idx, url in enumerate(urls, 1):
    qr = qrcode.QRCode()
    qr.add_data(url)
    qr.make()
    img = qr.make_image()
    img.save(f'qr_code_{idx}.png')

Flask Integration

Create QR Code API Endpoint

from flask import Flask, send_file, request
from io import BytesIO
import qrcode

app = Flask(__name__)

@app.route('/generate', methods=['GET'])
def generate_qr():
    data = request.args.get('data', 'https://example.com')
    
    qr = qrcode.QRCode()
    qr.add_data(data)
    qr.make()
    img = qr.make_image()
    
    # Save to BytesIO object
    img_io = BytesIO()
    img.save(img_io, 'PNG')
    img_io.seek(0)
    
    return send_file(img_io, mimetype='image/png')

if __name__ == '__main__':
    app.run(debug=True)

Usage: http://localhost:5000/generate?data=https://example.com

Error Correction Levels

Level Recovery Use Case
ERROR_CORRECT_L 7% damage Clean indoor use
ERROR_CORRECT_M 15% damage Standard use
ERROR_CORRECT_Q 25% damage Harsh environments
ERROR_CORRECT_H 30% damage Printed materials, outdoor

Best Practices

✅ Do's

❌ Don'ts

Troubleshooting

Q: ImportError: No module named 'PIL'

A: Run pip install pillow

Q: QR code won't scan

A: Increase error correction: Use ERROR_CORRECT_H

Q: Logo placement is wrong

A: Ensure logo is smaller than 20% of QR code size

Q: How to track QR code scans?

A: Use URL shortener with analytics (bit.ly, TinyURL) or use our dynamic QR codes which provide built-in analytics

Generate Your QR Codes

Ready to use Python to generate QR codes at scale?

➜ Generate QR Codes