Will it scan?
A practical guide to keeping stylized QR codes reliable. Aim for ~16 px per module to stay in the stylization sweet spot; lower versions are more robust than higher ones.
Size matters
Module size (px per module) is the key factor for stability under stylization. Here's how different ranges typically behave:
Risky
10 px
per module
Often collapses or over-stylizes. Reduce version or increase physical size.
Compact
13 px
per module
May work but fragile under stylization. Prefer fewer modules (lower version).
Optimal
16 px
per module
Best balance of clarity and stylization headroom. Recommended.
High clarity
22 px
per module
Very robust; useful when version can’t be reduced. Costs larger images.
Pixel checks
- Find modules per side. m = 21 + 4×(version−1).
- Compute px/module. px/module ≈ (imageWidth × 0.8) / m.
- Target ≈16 px/module. If below ~14, either shorten content (drop version) or increase image width.
- High versions (v14+). Prefer trimming content; presets have less headroom at high module counts.
Version ranges and stability
✅
v1–v10
Recommended: Stable at 14–20 px/module
- Plenty of stylization headroom
- Likely to cost 1 ink at reference aspect
- Prefer shorter content to stay here
⚠️
v11–v13
Recommended: Target ~16–20 px/module
- Reduced headroom; be conservative with styling
- Consider trimming content to drop a version
- Test in normal and dim conditions
🚫
v14+
Recommended: Minimize content or consider plain QR
- Fragile under stylization; risk of failure
- Prefer content reduction or non-stylized output
- If unavoidable, increase physical size to keep px/module high
How size and cost grow with content
We target ~16 px/module and keep the QR occupying ~80% of the image width. As content grows, version increases nonlinearly. The recommended width snaps to steps and caps at a max; cost follows area relative to the v10 reference.
| Chars | QR version | Modules | Recommended size (px) | Ink (≈) |
|---|---|---|---|---|
| 12 | v3 | 29×29 | 800×1200 | 1 |
| 24 | v4 | 33×33 | 800×1200 | 1 |
| 48 | v6 | 41×41 | 832×1248 | 1 |
| 96 | v8 | 49×49 | 992×1488 | 1 |
| 160 | v11 | 61×61 | 1248×1872 | 2 |
| 240 | v14 | 73×73 | 1472×2208 | 2 |
| 320 | v16 | 81×81 | 1600×2400 | 2 |
Tip: If a row jumps in width or ink, you’ve crossed a step: either version increased or the recommended width snapped up to preserve the px/module target.
If it still won’t scan
Shorten the content (lower version). Prefer a short URL or alias and uppercase the scheme/domain (HTTPS://EXAMPLE.COM). This directly reduces modules and raises px/module.
Everything else (contrast, background, margins) is handled by our presets. The main lever you control is content length.
Quick pixel formula
Pixels
px per module ≈ (imageWidth(px) × 0.8) / modulesPerSideExample: 500px image → effective QR ≈ 400px; 400 / 25 modules = 16 px/module
Larger physical size or a lower QR version also reduces ink cost. See how pricing works.
Go to “Ink cost”