What makes a QR code scannable
A QR code is read by detecting dark modules against a light background, so three things decide whether it works: enough luminance contrast (at least 3:1, ideally 4.5:1), a clear four-module quiet zone around it, and enough Reed-Solomon error-correction headroom to survive a center logo. Most generators let you break all three and only find out after you’ve printed. This one checks them as you design and runs an actual decode test on the rendered image.
Static codes that never expire
Every code here is static: the data lives in the image itself, not behind a redirect you have to keep paying for. Nothing is uploaded — generation, the logo, and the scan test all run locally — so it’s private by design and works offline.
Frequently asked questions
Will my QR code expire?
No. This generator makes static QR codes — the destination is encoded directly into the image, with no redirect or account behind it. The code is built entirely in your browser and will keep working forever. (Some 'free' generators make dynamic codes that stop working when a trial ends; that can't happen here.)
Why won't my QR code scan?
The most common causes are low contrast between the code and background, a logo that's too large for the error-correction level, an inverted (light-on-dark) color scheme, or too little quiet-zone margin. This generator checks all of these live and runs a real in-browser scan test before you download, so you catch the problem before you print.
Is it really free, and can I use the codes commercially?
Yes — unlimited codes, free, including commercial and print use. There's no signup, no watermark, and no paywall on high-resolution PNG or vector SVG exports.
Do you upload my data or logo to a server?
No. Everything — including any logo you add — is processed locally in your browser and never leaves your device. That's also why WiFi passwords and contact details encoded here stay private.
What do the error-correction levels (L, M, Q, H) mean?
They set how much of the code can be obscured and still decode: about 7% (L), 15% (M), 25% (Q), and 30% (H). If you add a center logo, use level H so the logo doesn't destroy more data than the code can recover.
Related
References
This tool’s QR generation and scannability checks are grounded in the following standards and primary sources.
- ISO/IEC 18004 — QR Code bar code symbology specification — ISO/IEC — the governing QR standard
- Error Correction Feature — DENSO WAVE — the QR inventor on Reed-Solomon levels (L/M/Q/H)
- Point for Setting the Module Size — DENSO WAVE — quiet zone, module size & scanning distance
- Understanding SC 1.4.3: Contrast (Minimum) — W3C WAI — the luminance-contrast ratio used for the scan check
- Color.js — Lea Verou & Chris Lilley (MIT) — contrast + luminance math
- qr-code-styling — Denys Kozak (MIT) — the client-side renderer used here
- jsQR — Cosmo Wolfe (Apache-2.0) — the in-browser decoder for the scan test
Spotted an error? Let us know — reader corrections are the best review this site gets.