Best Practices for Printing QR Codes
The core checklist: use SVG for anything getting resized, keep strong dark-on-light contrast, size for the expected scan distance (roughly 2×2 cm minimum for close-range), preserve the quiet-zone margin, and always test-scan a physical print before running a full batch.
Two mistakes account for most print failures: shrinking a code below what the scanning distance allows, and cropping too close to the code (removing the quiet zone). Both are invisible on a screen preview and only show up once ink is on paper — which is exactly why a single test print, scanned with two or three different phones, is worth doing before a large print run.
This site's generator defaults to error correction level H (~30% damage tolerance) specifically for print use, giving extra headroom against ink bleed, folds, or minor smudging.
File format matters more for print than almost any other decision: always export as SVG for anything that will be printed, since it's resolution-independent and scales to any size, from a business card corner to a building-sized banner, with zero quality loss. A raster file (PNG or JPG) scaled up past its native resolution blurs the fine module detail a scanner needs, which is one of the most common and entirely avoidable causes of a printed code that won't scan.
Lighting conditions at the point of scanning are worth considering too, especially for outdoor signage or dimly lit venues. Glossy laminate or UV coating under harsh overhead lighting can introduce glare that confuses a camera's autofocus even when the underlying code is perfectly printed — matte finishes are the safer default for anything likely to be scanned outdoors or under bright, uneven lighting.
For a large print run, the cost of catching a problem early is minimal compared to the cost of catching it after thousands of units are printed. A single proof print, checked for size, contrast, and an intact quiet zone, then test-scanned under realistic lighting with more than one phone, is the cheapest insurance available against a batch of QR codes that quietly don't work.