QR code generator
A QR code for any link or text, rendered locally and downloadable as SVG or PNG.
4 modules is the specified minimum
How it works
A QR code stores data as a grid of light and dark modules, wrapped in enough redundancy that it still reads when part of it is damaged, dirty or obscured.
Error correction is why they survive
Reed–Solomon coding adds check symbols so the reader can reconstruct missing data. Level L tolerates about 7% loss, level H about 30% — which is what makes it possible to place a logo in the middle of a code and still have it scan. Higher correction costs capacity: the same text at level H needs a physically larger code than at level L.
Versions
Version 1 is 21×21 modules; each version adds 4 modules per side up to version 40 at 177×177. This tool picks the smallest version that fits your data at the chosen level.
The quiet zone matters
The specification requires four modules of blank margin on every side. Scanners use it to find the code's boundary, and codes printed flush against other artwork frequently fail to read for exactly this reason. Do not set it below 4 for anything you intend to print.
Contrast and inversion
Most scanners expect dark modules on a light background. Inverting the colours, or using a low-contrast pair, breaks a surprising number of readers. Keep the foreground genuinely dark and test on more than one phone before printing a thousand of them.
Useful content formats
WIFI:T:WPA;S:name;P:password;;- Joins a network on scan.
mailto:,tel:,sms:- Open the relevant app pre-filled.
geo:lat,long- Opens a map pin.
- vCard
- Adds a contact. Keep it short — vCards get big fast, and a dense code is harder to scan.
Sources
Implemented from ISO/IEC 18004 (QR Code bar code symbology specification): byte-mode encoding, Reed–Solomon over GF(256) with primitive polynomial 0x11D, block interleaving, and mask selection by the four penalty rules. Verified by a round-trip decode and a syndrome check in the test suite.