One rule answers 90% of QR sizing questions: size ≈ scanning distance ÷ 10. A code scanned from 1 metre away should be about 10 cm wide. Everything else is refinement.
Phones need the code to fill enough of the camera frame to resolve individual modules. The working heuristic: minimum width = expected scan distance ÷ 10. Business card scanned in hand (~25 cm): 2.5 cm. Table tent (~50 cm): 5 cm. Poster across a hallway (3 m): 30 cm. Billboard at 20 m: 2 m. When a code will be scanned from a range of distances, size for the farthest realistic one.
Regardless of distance, treat 2 × 2 cm (about 0.8 in) as the practical minimum for printed codes — below that, ordinary printing and older cameras start failing even at close range. On screens the equivalent floor is roughly 76 × 76 px at typical viewing distances.
QR codes grow in module count (Version 1 = 21×21 up to Version 40 = 177×177) as data grows. More modules in the same physical space = smaller modules = harder scanning. Two practical fixes: keep URLs short (your own short domain beats a 120-character tracking URL), and don't crank error correction to H without a reason — it adds density too. Our generator's scannability meter flags density problems as you type.
A logo consumes error-correction budget, effectively demanding a slightly larger code for the same reliability — budget +10-15% width when embedding one. And remember the quiet zone (4 modules of clear margin) counts inside your layout space, not outside it.