QR error correction and how large to print
QR codes can lose part of their pattern and still decode. That spare capacity is error correction. It is why a coffee-cup stain, a centre logo or a slightly undersized print often still works — and why choosing H for a tiny business-card code is worth the extra dots.
L, M, Q and H
| Level | Recovers about | Use when |
|---|---|---|
| L | 7% damage | Clean screens, large prints, short URLs |
| M (default) | 15% | Most posters, packs and slides |
| Q | 25% | Outdoor stickers, slightly rough print |
| H | 30% | Small cards, engraving, a logo in the middle |
Higher correction stores the same message with more modules, so the code looks busier. For a long vCard that already looks dense, M is often clearer than H at the same physical size.
How large to print
| Place | Short side (minimum) |
|---|---|
| Business card | 20 mm (prefer 25 mm) |
| A6 flyer / table tent | 30–40 mm |
| A4 poster viewed at 1–2 m | 50–80 mm |
| Shop window across a pavement | 100 mm+ |
| On-screen (slide, phone) | at least 128 px, prefer 256 px |
Always keep a quiet zone — a blank margin of about four modules — around the code. Cropping that white frame is a common reason a “perfectly sharp” print will not scan.
Colours and logos
- Dark modules on a light background. Dark-on-dark and light-on-light fail.
- Avoid red modules on black, and very pale grey on white.
- A centre logo should cover under ~20% of the code and sit on a small light pad. The generator switches to H when you add a logo.
- Download SVG for print: it stays sharp at 300 DPI. PNG is for screens and chat.
The QR generator exposes these options. Print one test copy and scan it in the lighting where people will actually stand.
FAQ
Does a higher level make the code “stronger” on screen?
On a sharp large display, L or M is enough. H helps when pixels are few, the code is photographed from an angle, or part of it is covered.
Can I skip the white border?
You can draw it on a coloured poster, but leave a light, even margin of four modules. A busy background flush with the modules is a common scan failure.