Skip to content

Guides

How to put a QR code on product packaging

Every other QR code in this shop can be reprinted if you get it wrong. Packaging cannot: the code goes to a converter, the converter runs forty thousand impressions, and the result sits in a warehouse and then on a shelf for a year or two. The code itself is trivial. The decision that matters is what address you commit to before the press starts.

The five-minute version

  1. Pick a permanent URL scheme on your own domain, one path per SKU: yourbrand.com/p/1042. Short, lowercase, no campaign words, no year in it.
  2. Make that path a redirect you control, pointing at whatever page is currently right — product page, care instructions, ingredient detail.
  3. Generate a static code per SKU from your product sheet, and export as vector (SVG or PDF) for the printer.
  4. Proof it on the real substrate at the real size, scan it in shop lighting, and only then release the artwork to the run.

The URL is the decision, not the code

A QR code is just a way of writing a string on a box. Once the run is printed, that string is fixed for the life of every unit — so the entire question is which string you can still honour in three years.

  • A path on your own domain (https://yourbrand.com/p/1042). Correct. You own the domain, so you own the promise. Re-point it whenever you like: the printed code never has to change, and it keeps working through a site rebuild, a platform migration or a rebrand of every page behind it.
  • A campaign landing page (/summer-launch-2026). Dead within a year, and the packaging outlives the campaign by a wide margin. If the URL contains a season, a year or a promotion name, it is already expired.
  • A link shortener or vendor redirect (bit.ly/x8Kd2, qr-service.io/r/x8Kd2). Do not. Both put a third party between your box and your website, which means your packaging stops working when their plan lapses, their pricing changes, or the company is sold.

This is the opposite of the advice in the asset tag guide, and deliberately so. An asset tag is scanned by your own staff with your own system, so a plain ID is best. Packaging is scanned by a stranger with a phone camera, and a phone camera can only usefully do one thing with a QR code: open a URL. So packaging needs a URL — it just needs to be your URL.

What people actually scan a package for

Scan rates on packaging are mostly a content problem. A code that opens a homepage or a marketing video gets scanned once by the person who designed it. The codes that get used answer a question the package is too small to answer:

  • Instructions and assembly. The manual you would otherwise fold into the carton, in every language, updatable after the run ships.
  • Ingredients, allergens, materials, care. Detail that legally or practically will not fit, especially on small labels.
  • Refill, recycling and disposal. Where the parts go, what is actually recyclable locally, how to reorder the consumable.
  • Registration, warranty or authenticity. The one case where the destination genuinely needs the SKU or the batch encoded in the URL.

Put the reason next to the code in small type — “scan for care instructions” — not just a bare code. A QR code with no label is an unmarked door, and most people do not open unmarked doors on a shelf.

Why the code has to be static

Packaging is the strongest version of the argument the rest of these guides make. A restaurant can reprint a menu; a conference can reprint a badge. Nobody reprints forty thousand cartons because a redirect service changed its free tier.

A dynamic code stores a vendor’s address in the pattern and keeps your real address on their server, which means every unit in the field is a dependency on that server continuing to answer. That is a subscription attached to inventory you have already shipped and can no longer touch — the failure documented in the expiry guide and dissected in static vs dynamic. Owning the path on your own domain gives you every benefit the dynamic pitch offers, minus the landlord.

Getting it through the print run

Packaging is not printed the way a poster is. It goes through a converter on flexo, offset or digital, onto substrates that move ink around, and the artwork is usually flattened by somebody who has never scanned it.

  • Send vector, never a screenshot. SVG, EPS or PDF so the modules stay crisp at any size and the pre-press step cannot resample them into mush.
  • Dark code on a light background. Reversed codes (light modules on dark) fail on a meaningful share of scanners. If the design demands reverse, proof it on real stock before committing, and be ready to lose the argument.
  • Keep the quiet zone genuinely quiet. Four modules of clear space on all sides, and no background pattern, gradient or photograph bleeding into it. The print-size guide has the sizing table; on packaging, err upward.
  • Watch the geometry. Never across a fold, seam, crimp, shrink-sleeve taper or the tight radius of a small bottle. A code that curves away from the lens stops decoding.
  • Mind the substrate. Gloss varnish and foil cause glare under retail lighting — one of the six causes in the not-scanning guide. Matte varnish over the code area is worth asking for.

One code, or one per SKU?

One per SKU. It costs nothing extra — the code is part of artwork that already differs per product — and it turns every scan into a signal about which product prompted it. Generate them from the sheet that already holds your product list, with the URL column built by formula from the SKU column (="https://yourbrand.com/p/"&A2) so the two can never drift apart. The bulk-from-spreadsheet guide covers the CSV mapping in detail.

Batch or lot-level codes are a different job: they change every run, so they belong to your production system rather than to your packaging artwork, and they usually want a different symbology.

If it gets scanned at a checkout

One honest limit. If your product is sold through retail and scanned at a till, that barcode is a GS1 matter — GS1’s stated ambition is for retailers to accept 2D barcodes carrying GS1 Digital Link at point of sale, and those codes are issued and structured under GS1’s rules using your own company prefix. A generic QR code is not a substitute for a retail barcode, and nothing here should be read as one. Check with GS1 in your market before you touch the barcode block; the consumer-facing code described in this guide is a separate thing that lives elsewhere on the pack.

Before the artwork goes to the printer

  • Scan the code in the final artwork file, not the one from three revisions ago. Confirm it resolves to the URL you intend.
  • Confirm the URL is live now and returns something useful — a code shipping to a page that does not exist yet is the most common packaging QR failure.
  • Proof on the real substrate at the real size, then scan it under shop lighting, at arm’s length, on a cheap phone.
  • Scan it after the varnish or lamination step, not before. That is where gloss and glare arrive.
  • Keep the CSV and the export together, dated. Static codes are reproducible, so next year’s reprint regenerates pixel-identical artwork from the same row.