Short answer
As a rule of thumb a QR code can be scanned from about ten times its width, so a 3 cm code works at about 30 cm. Keep each module (the small square) at least 0.33 mm, and ideally 0.5 mm or more, and always leave a quiet zone of four modules around the code.
The 10:1 rule
Scanning distance is roughly ten times the width of the code. Work backwards from where people will stand:
| Placement | Typical distance | Minimum width |
|---|---|---|
| Business card | 15-20 cm | 20 mm |
| Table tent, menu | 30-40 cm | 30-40 mm |
| Counter sign | 50-80 cm | 50-80 mm |
| Window, poster | 1-2 m | 100-200 mm |
| Billboard, banner | 5 m+ | 500 mm+ |
Why content length matters
A longer link means more modules. At the same printed width, each module gets smaller and harder for a camera to resolve. That is why a short dynamic code (KIZMO.IO/Q/K7Q2MX) prints smaller than a long tracking URL. Kizmo also writes short links in capitals so the code can use QR's compact alphanumeric mode.
Module size
Printers and cameras both struggle below about 0.33 mm per module. The Kizmo generator calculates module size for your chosen print width and warns you before you print.
The quiet zone
Leave empty space of four modules on every side. Without it, a busy background can stop the camera from finding the code at all.