Error Correction Levels
| Level | Data Recovery | Use Case | Size Overhead |
|---|---|---|---|
| L (Low) | ~7% recovery | Clean digital displays, no logo overlay | Smallest |
| M (Medium) | ~15% recovery | Standard use, slight logo overlay | Small |
| Q (Quartile) | ~25% recovery | Recommended for print, small logos | Medium |
| H (High) | ~30% recovery | Large logo overlay, harsh environments | Largest (most modules) |
Choosing Error Correction Level
Use M or Q for most cases. M works for clean digital screens. Q is recommended for print (which may be photocopied, creased, or partially obscured). H is necessary if you embed a logo — it allows the covered modules to be reconstructed. Note: higher error correction = more dense QR code = potentially harder to scan at small sizes. Balance logo size with QR code size.
Minimum Print Sizes
| Use Case | Minimum Size | Recommended Size |
|---|---|---|
| Business card | 2 × 2 cm (0.8in) | 3 × 3 cm (1.2in) |
| Flyer / poster | 3 × 3 cm (1.2in) | 5 × 5 cm (2in) |
| Retail/product label | 2 × 2 cm (0.8in) | 4 × 4 cm (1.6in) |
| Billboard (far distance) | Depends on distance | 1/10 of viewing distance |
| Digital display | 150 × 150 px minimum | 200 × 200 px+ |
URL Optimization for QR Codes
Shorter URLs generate less dense QR codes with fewer modules, making them easier to scan. Use a URL shortener or redirect for print campaigns, and always use HTTPS.
https://example.com/s/spring-sale
https://example.com?utm_source=print&utm_medium=flyer&utm_campaign=spring-sale
https://ex.co/flyer26
https://example.com/products/category/subcategory/spring-sale-2026?ref=flyer&coupon=SAVE20
Logo Embedding Guidelines
Embedding a logo in a QR code is purely cosmetic — it reduces scannability. If you add a logo, follow these rules to minimize scan failure:
Use H error correction level when adding a logo — the covered modules need to be reconstructable.
Cover no more than 30% of the QR code with the logo (the theoretical H-level recovery limit). In practice, keep it under 20% for reliable scanning.
Place the logo in the exact center — QR readers expect the corner finder patterns to be intact. Never cover the three corner squares.
Always test with multiple devices — an older Android phone or low-light scan will be the weakest test. Test before printing.
QR Code Design Rules
- Maintain the quiet zone — QR codes require a 4-module white border (quiet zone) on all sides. Eliminating it prevents scanners from locating the code boundaries.
- High contrast is mandatory — dark modules on light background (not the other way around — inverted QR codes often fail). Minimum 4:1 contrast ratio between module colors.
- Never use busy backgrounds — placing a QR code over a photograph or pattern reduces scannability. Use a solid white or light background pad behind the code.
- Verify before printing — generate the final code and test scan it with at least 3 different devices (iPhone, Android, desktop) before committing to print.
- Always add a call to action — print 'Scan for menu' or 'Scan to shop' near the QR code. Codes without context have significantly lower scan rates.
Frequently Asked Questions
- Do QR codes expire?
- Static QR codes (where the URL is encoded directly) never expire — as long as the destination URL works, the code works. Dynamic QR codes (managed by a QR platform that redirects) can expire if you stop paying for the service. For permanent use, use static QR codes pointing to URLs you control.
- Can I track QR code scans?
- Yes — add UTM parameters to the destination URL (utm_source, utm_medium, utm_campaign) and Google Analytics/GA4 will track scans as website traffic. For more detailed tracking (scan location, device type, time), use a dynamic QR service like Bitly or QR.io.
- What's the difference between static and dynamic QR codes?
- Static QR codes encode the final URL directly — they can't be changed after printing. Dynamic QR codes encode a short URL managed by a platform, which redirects to the real destination — this allows updating the destination URL without reprinting. Use dynamic for print campaigns where the destination might change.
- Why won't my QR code scan?
- Common causes: too small (increase size), low contrast (darken modules, lighten background), no quiet zone (add white border), damaged/creased print (reprint), URL too long (shorten the URL), or logo too large (reduce to under 20%). Test on multiple devices to narrow down the issue.