Aug 11, 2026
QR Codes on Product Packaging: Sizing, Placement and What to Link
Packaging is the hardest QR surface there is. It curves, it reflects, it's printed in enormous runs, and it sits in cupboards for years after you've moved on. Everything has to be right before the run.
Curvature is the first problem
Bottles, jars, tubes and cans distort the code grid. A scanner needs to resolve the geometry, and a code wrapped around a tight curve may not resolve at all.
Fixes:
- Put the code on the flattest available area — a label panel rather than the shoulder of a bottle
- Keep the code narrow relative to the diameter. As a rough guide, the code shouldn't span more than about a quarter of the circumference
- Increase error correction for curved surfaces, and increase size to compensate for the extra modules
- Test on the actual container, not a flat proof. This is the step people skip and it's the one that fails.
Gloss and finish
Packaging finishes are chosen for shelf appeal and they're hostile to cameras. Gloss varnish, foil and shrink-wrap all reflect.
Where you can, specify a matte patch over the code area. Many printers will do this and it costs little. If you can't, oversize the code and raise error correction.
Size for a hand, not a shelf
Packaging is scanned at close range — someone holding it, 20 to 30cm away. That means roughly 2 to 3cm of code by the ten-to-one rule.
Round up anyway. Kitchen lighting is poor, and older phones need margin.
Print quality matters more here
Packaging is often printed on absorbent or textured stock where ink spreads. Fine modules blur together.
- Vector artwork only. SVG, never an upscaled PNG.
- Talk to your printer about minimum module size for the substrate
- Ask for a physical proof on the real material and scan it before signing off
Dynamic, without exception
This is not optional on packaging, because packaging outlives everything.
A product print run may be in circulation for two or three years. In that time the landing page will be rebuilt, the campaign will end, and the site may move entirely. A static code encodes the URL permanently and every unit becomes a dead link.
A dynamic code lets you repoint the whole run at any time. Recipe page this year, reorder page next, safety notice if you ever need one.
That last case is worth thinking about seriously: if you ever need to communicate something urgent to people holding your product, a repointable code on every unit is the only channel you have.
What to link to
Match the intent of someone holding the product:
- Before purchase — ingredients, sizing, comparisons, reviews
- After purchase — instructions, recipes, registration, reorder
- Regulatory — full ingredient lists or documentation that won't fit on the pack
That last one is increasingly the practical driver. A code can carry detail the physical label has no room for.
Whatever it is, the page must be mobile-first and fast. Packaging scans happen in shops and kitchens on poor connections.
Label it
An unlabelled code on a pack is a mystery. "Scan for recipes" or "Scan for instructions" measurably increases scans, because it answers what the person gets.
Before you sign off the run
- Physical proof on the real substrate, on the real container shape
- Scanned from 20cm, in poor light, on an old phone
- Matte over the code area if the finish is gloss
- Destination loads in under two seconds on mobile data
- Code is dynamic and someone can repoint it
- The code is labelled
Generate a packaging code — SVG output and adjustable error correction for curved surfaces.