How QR Codes Work
A QR code (Quick Response) is a two-dimensional matrix barcode standardised under ISO 18004, developed by Denso Wave in 1994. Unlike a 1D barcode, a QR code encodes data in a square grid of dark and light modules. The three large squares in the corners — finder patterns — let scanners locate and orient the code regardless of angle or rotation. Timing patterns and format information allow decoding even when the code is partially obscured.
Data is stored in one of four encoding modes depending on the character set: numeric (0–9), alphanumeric (0–9, A–Z, and a few symbols), byte (any UTF-8 data), or kanji. URLs, WiFi credentials, and most modern payloads use byte mode.
The Four Most Common Content Types
URL — The most common payload. Encode any web address starting with https://. Most scanning apps open it directly in a browser. Shorter URLs produce smaller, less dense codes that scan more reliably.
WiFi — Encodes credentials as WIFI:T:WPA;S:NetworkName;P:password;; so phones can join without typing. Requires iOS 11+ or Android 10+ for native camera scanning.
Email — Uses a mailto: URI to pre-fill the compose window with recipient, subject, and body. Special characters are URL-encoded automatically.
Phone — A tel: URI opens the native dialer with the number pre-filled. Include the full international prefix (e.g. +1 for US/Canada) for reliable parsing across all devices.
Error Correction Levels Explained
Every QR code contains Reed–Solomon redundancy that lets scanners recover data even when part of the code is damaged, dirty, or covered by a logo. There are four error correction levels:
Higher error correction = more redundancy modules = denser code = slightly harder to scan at small sizes. Use L or M for on-screen codes; use Q or H for print or when adding a logo.
Dot Style and Color Rules
Rounded and dot styles reduce the geometric regularity of the module grid, which slightly lowers scannability. Compensate by choosing Q or H error correction when using these styles. Square modules are the most reliable for small sizes and difficult scanning conditions.
For colors, maintain at least a 40% lightness difference between foreground and background. Dark modules on white or near-white are the safest combination. Inverted codes (light on dark) work with modern apps but fail on some older scanners. Avoid red/green combinations which can confuse some scanner algorithms.
QR Code Size and Quiet Zone
The minimum recommended print size for reliable scanning is 2×2 cm (about 0.8 inches). For materials scanned from a distance — posters, packaging, window decals — apply the 10:1 rule: add 1 cm of code size for every 10 cm of intended scan distance. A poster meant to be scanned from 1 metre should be at least 10×10 cm.
Every QR code requires a quiet zone: a border of blank space equal to four module widths on all sides. This generator includes the quiet zone in the exported SVG and PNG. If you embed the code in a design, ensure nothing encroaches on this border — even a subtle background texture can cause scanning failures.
Static vs. Dynamic QR Codes
The codes generated here are static: the destination is encoded directly into the QR modules. Static codes are permanent — they work forever with no server or subscription required — but cannot be edited once printed. If the URL changes after the code is distributed, you need to reprint.
Dynamic codes redirect through a third-party service and can be edited after printing, but stop working if the subscription lapses or the service shuts down. For permanent, reliable, account-free use, static codes are almost always the right choice. Reserve dynamic codes for campaigns where the destination is genuinely uncertain at print time.