LinkForge

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.

Track every click, free

Unlimited short links with real-time analytics.

Create free account