QR Codes Explained: Error Correction, Capacity, and How to Make Perfect Ones
Static vs dynamic codes, the four error-correction levels, and how to generate crisp, scannable QR codes free in your browser.
KPM Editorial · Guides · 2025-09-15 · 5 min read
A QR Code Is a Resilient Little Grid
A QR code stores data in a matrix of black and white modules with built-in Reed-Solomon error correction. That is why a slightly smudged or partially covered code still scans — the reader mathematically reconstructs the missing pieces.
The Four Error-Correction Levels
- L (Low) — recovers ~7% damage. Maximum data capacity. Best for clean digital displays.
- M (Medium) — recovers ~15%. The sensible default for most uses.
- Q (Quartile) — recovers ~25%. Good for printed flyers that may crease.
- H (High) — recovers ~30%. Required when you place a logo in the center of the code.
Higher correction means fewer data modules, so pick the lowest level your use case tolerates.
Static vs Dynamic Codes
A static code embeds the final URL or text directly — it works forever and needs no service. A dynamic code embeds a redirect link owned by a third party, which can track scans, expire, or charge you later. For Wi-Fi credentials, business cards, and payment addresses, static codes generated locally are strictly better.
Design Rules for Scannable Codes
- Keep a quiet zone — blank margin at least 4 modules wide on all sides.
- Dark modules on a light background; never invert without testing.
- Size matters in print: minimum ~2 cm for short URLs, larger for dense data.
- Test with two different scanner apps before mass printing.
Generate Yours Privately
The KPM QR Code Generator renders codes with the Canvas API on your device — your URLs and contact details are never sent anywhere. Export as PNG at any size, free, with no watermarks or scan limits.