A QR code on packaging works best when it links to one mobile-friendly page that stays at the same address for years, and when it is printed large enough, with enough contrast and quiet zone, to scan from the distance a shopper actually stands at. Get those two decisions right and the code becomes a useful bridge between the physical product and everything you cannot fit on the label. Get them wrong and you end up with a decorative square that frustrates customers and wastes print space.
This guide walks through both halves of the problem: choosing the destination, and producing a code that survives printing on real packaging.
Why brands put QR codes on packaging
Printed space on a box, bottle or pouch is limited and expensive. A QR code extends it. Instead of cramming every detail onto the label, you print one small square and link to whatever the customer needs at that moment. Common destinations include:
- Usage instructions and how-to videos. Assembly steps, dosage schedules, care instructions, or a short video showing the product in use. This is especially valuable for products with multi-language audiences: one code can serve instructions in several languages.
- Recipes and serving suggestions. Food and drink brands link to recipe collections, pairing ideas, or preparation guides that go well beyond the back-of-pack space.
- Warranty registration and support. A code that opens a registration form takes less effort than typing a URL, and it captures the serial or batch number more reliably.
- Ingredient, allergen and recycling details. Extended product information, disposal guidance, and material breakdowns that do not fit on the pack.
- Authenticity and batch pages. A code tied to a batch or serial number can let buyers confirm the product is genuine and report counterfeits.
- Reordering and subscriptions. A code that opens the product page with the item pre-selected removes friction from repeat purchases.
- Reviews, manuals and spare parts. Links to downloadable manuals, compatible accessories, or a contact channel for problems.
You do not need all of these. Pick the one or two journeys that matter most for your product, and link to those. A code that promises "everything" usually delivers a cluttered page nobody uses.
Choose a destination that survives redesigns
The single most common packaging QR failure is not a scanning problem. It is a dead link. Packaging is printed in large runs and sits in warehouses and on shelves for months or years. Websites get redesigned, campaigns end, agencies change, URLs get renamed. A code printed in 2024 pointing at a 2024 campaign page can be useless by 2026.
Two habits prevent this.
First, use a dedicated, permanent URL. Something like example.com/p/box-model-x or a short domain you own, not a page tied to a season, a promotion, or a CMS template. If the content behind it changes, that is fine — the address stays. Treat the URL like a product SKU: it exists as long as the product does.
Second, redirect through a domain you control. If you use a QR service or a link shortener, make sure the redirect runs on your own domain, or that you can export and re-point the destination yourself. If the tool shuts down or you change vendors, you update the redirect instead of reprinting every box. Print the code from the final, permanent URL and test it after any redirect changes.
A useful rule of thumb: if you would hesitate to print the URL as plain text on the pack, do not encode it in a QR code either.
Build a landing page for a phone, in a moment of need
Almost everyone who scans your packaging code is holding a phone, often standing in a kitchen, bathroom or garage. The page must work for that moment.
- Mobile-first layout. The page should load fast on a phone connection and be readable without pinching or horizontal scrolling.
- Answer the promise quickly. If the code sits next to "scan for assembly instructions", the instructions should be near the top, not behind a marketing hero banner or a newsletter popup.
- Language handling. If the product sells in multiple regions, either detect the language or offer clear language links on the first screen. Do not force a country-selection maze before showing content.
- One job per code. A code by the nutrition panel should lead to nutrition and ingredient detail. A code on the box flap should lead to setup. Mixing every destination into one generic landing page weakens all of them.
- Keep it maintained. Assign ownership. A packaging QR page that nobody has checked in two years is a liability, not a feature.
If you generate codes with a free tool such as QRCodeMax.Vip, test the generated code against the live destination before sending artwork to print, and keep a record of which code version went onto which packaging run.
Size, quiet zone and scanning distance
A QR code is only as good as its smallest printed module — the tiny squares inside it. Several practical rules of thumb, widely used in print work, will keep you safe.
Minimum size. A common guideline is that the code's width should be about one tenth of the scanning distance. A code meant to be scanned from 25 cm (a hand's length) should be roughly 2.5 cm across. For close-up scanning on a small product, 15–20 mm is a workable floor for simple codes; anything smaller invites failure, especially on older phones or in dim light.
Data volume matters. A code encoding a long URL contains more modules than one encoding a short URL, and each module must print smaller at the same overall size. Keep the encoded URL short — this is another reason for a dedicated short URL — and avoid stuffing extra text into the code. Less data means bigger modules, which means easier scanning.
Quiet zone. The empty margin around the code is not decoration; scanners use it to find the code's edges. Keep a clear quiet zone of at least four modules' width on all sides. On packaging, that means no text, patterns, illustrations or folds inside that margin.
Curved surfaces. Codes on bottles, cans and tubes still scan, but curvature distorts the modules. Keep the code on the flattest available area, away from tight curves near shoulders, necks or seams, and print it somewhat larger than the distance rule suggests to compensate. Avoid wrapping a code around the full circumference.
Glossy and reflective materials. Strong gloss and laminates can reflect light back into the camera and wash out the code. A matte varnish or matte spot finish over the code area helps noticeably. If the packaging is high-gloss overall, consider a matte patch or a slightly larger, high-contrast code.
Contrast, colour and print finishes
QR scanners read the contrast between dark modules and a light background, not the specific colours. That gives you room to match brand colours — within limits.
- Dark on light, always. The modules must be significantly darker than the background. Dark navy on white, dark brown on cream, deep green on off-white: all fine. Light on dark (inverted codes) scans poorly on many devices and should be avoided on packaging.
- Watch colour channels. What matters is how the colours read to a camera, not how they look in your design file. A yellow on white may look bold to the eye but have very low luminance contrast to a scanner. Red modules on white can also be problematic because many scanners read in a way that makes pure red behave like a light colour. When in doubt, test, or fall back to near-black.
- Never put the code over an image or busy pattern. If the background must be coloured, use a solid, light panel behind the code with a proper quiet zone.
- Varnish, foil and special finishes. Spot varnish, foil stamping, metallic inks and pearlescent coatings can all interfere with scanning, either by changing reflectance or by blurring module edges. Do not print the code in metallic or fluorescent ink. If the design uses foil or heavy varnish nearby, keep the code area in plain, matte, solid ink.
- Registration and bleed. Small codes suffer most from print misregistration. If the code is multi-coloured, any plate misalignment distorts it. A single-colour code is the most robust choice, and for small codes it should be effectively mandatory.
Place the code where shoppers can actually reach it
A perfectly printed code is useless if it is on the bottom of the box, facing the shelf, or hidden under a fold.
- Scannable in the shop and at home. Decide the primary moment: is the code for the shopper comparing products on the shelf, or for the owner who has bought it? Shelf-facing codes should sit on the front or side panel at eye level. Owner-focused codes (instructions, registration, warranty) belong on the back panel, near the relevant text, or inside the pack.
- Not on folds, seams or tear lines. A code crossing a fold or the crimped end of a wrapper will not scan. Keep it on flat, uninterrupted material.
- Not under flaps that get torn off. If the code must survive the opening of the pack, do not place it on the tear strip.
- Pair it with a reason. A bare square gets ignored. Add a short call to action next to it: "Scan for recipes", "Scan to register your warranty", "Scan for refill options". The text also helps people who cannot or will not scan.
- Accessibility. Keep the printed URL visible as plain text as well, so people without a smartphone camera — or with a damaged code — can still reach the page. This is a small step that rescues the whole feature when a code fails.
Test a printed proof before the full run
Screen previews do not predict print behaviour. Ink spread, paper stock, curvature and lighting all change how a code scans. Always test a physical proof.
- Print the real thing. Ask your printer for a proof on the actual material — same stock, same finish, same curvature if it is a label for a bottle. A flat proof on office paper proves little about a shrink-sleeve.
- Test from real distances. Scan from the distance a customer would use: arm's length for shelf codes, close up for small items, across a kitchen counter for a cereal box. If it only scans when you hold the phone 5 cm away and perfectly still, it is too small or too low-contrast.
- Test several phones. Different camera apps and QR readers behave differently. Check at least a recent phone and an older, lower-spec one, in both the camera's built-in scanner and a standalone reader app.
- Test real lighting. Bright shop lighting, dim kitchen corners, direct glare on glossy material. Rotate the pack so light hits it at different angles, especially on gloss or foil.
- Test after finishing. If labels go through a varnish line or the pack gets shrink-wrapped, test a sample after those steps, not before.
- Check the destination again. Scan the final proof and confirm it opens the correct live page — not a staging URL, not an old redirect. This catches the single most embarrassing packaging error.
Fixing a code after thousands of units are printed means stickers, overprints or a wasted run. An hour of proof testing is the cheapest insurance in this whole process.
QR codes and legally required packaging text
Many categories — food, cosmetics, chemicals, pharmaceuticals and others — require certain information to appear on the packaging itself: names, ingredients, allergens, hazard statements, quantities, dates. The exact requirements depend on your product category and jurisdiction, and they change, so check the rules that apply to your market with the relevant authority or a compliance specialist.
One principle holds almost everywhere: a QR code is a supplement, not a substitute. Do not move legally mandated text off the pack and behind a scan. Regulators generally expect the required information to be readable on the packaging itself, without a device, and a customer with no phone or no signal still has the right to that information. Use the code for extended, supplementary detail — recipes, videos, batch lookup, disposal guides — and keep the mandatory text printed where the law expects it.
Conclusion
A packaging QR code succeeds on three decisions: link it to one permanent, mobile-friendly page that serves a single clear purpose; print it large enough, dark enough and flat enough to scan from a real distance on real material; and test a printed proof on multiple phones before committing to the run. Keep legally required information on the pack itself, use the code for everything that does not fit, and give the code a printed call to action plus a plain-text URL as a fallback. Do that, and a few square centimetres of print become the most flexible space on your packaging.