Field notes

On a pack, the QR code must earn its square centimetres

A product label is not a poster. Every square centimetre already has a job: the product name, the ingredients or contents, the quantity, the safety or care information, and the barcode the shop needs at checkout. A QR code has to fit into what is left, without pushing mandatory information off the pack, without wrapping around a curve until it distorts, and without shrinking until only a perfect phone in perfect light can read it. This guide covers the order to plan in: what must stay printed, where the code can go, how large it must be, and how to proof it on the real pack.

November 4, 2026 · 15 min read

Start with the label, not the code. Before you draw a QR code anywhere, list everything that must appear on the pack in print, and reserve space for it first. That list depends on the product and the market, and it is not something a QR generator can decide for you. For food, the mandatory particulars commonly include the name, the ingredient list with allergens emphasised, the net quantity, date marking, and the nutrition declaration. For other consumer products, the manufacturer and importer details, a product identifier such as a type, batch, or serial number, and safety information may be required. A QR code can add information, such as full detail, translations, recipes, or recycling guidance, but for most products it does not replace the printed label. Planning the code first and squeezing the mandatory text around it is how labels end up with tiny, unreadable print and a code that still fails.

The European rules illustrate the point clearly, and they are a useful discipline even if you sell elsewhere, because they draw a sharp line between supplementing and replacing. Under Regulation (EU) No 1169/2011, mandatory food information for prepacked food must appear directly on the package or on an attached label, and a QR code is generally an addition to that label, not a substitute for it. Wine in the European Union is a notable exception, where the ingredient list and the full nutrition declaration can be provided through an electronic label reached by a code, but even there the energy value, shown with the symbol “E,” and allergens stay on the physical label, and the electronic page must not carry tracking or marketing. For general consumer products, the European General Product Safety Regulation similarly allows digital labels through a QR code only as a supplement: the mandatory physical information must still appear on the product, its packaging, or an accompanying document. These are summaries for planning, not legal advice, and the current rules for your product and market should be confirmed with your compliance lead before artwork is signed off. The practical lesson is the same everywhere: keep the mandatory information printed, and let the code carry the extra value.

What the code should do on a pack

A packaging code works best when it does one clear job that print cannot do as well. Useful jobs include opening the full ingredient or allergen detail in another language, showing how to use, recycle, or refill the product, linking to a batch or recall page, telling the product story, or offering a refill, spare part, or compatible accessory. A code that opens a generic homepage, a social feed, or a promotion with no connection to the pack in the reader's hand wastes the scan and teaches shoppers to ignore the next code they see. Label the code with the job it does, in words that match the pack: “Scan for ingredients and allergens,” “Scan for recycling,” or “Scan for how to use.” A bare code on a pack, with no label, is easy to miss among the barcode, logos, and mandatory text, and it gives the shopper no reason to reach for a phone.

Decide early whether the code is for shoppers or for checkout, because the two jobs have different rules. A shopper code is scanned with a phone, at arm's length, in shop lighting, and it can link to a normal web page. A checkout code must be read by retail scanners at speed, and if it is a GS1 code it must follow GS1 sizing and placement rules, including its relationship to the existing linear barcode. Do not use the same symbol for both jobs unless you have confirmed that it meets both sets of requirements. In practice, most small brands need a shopper code first: a code that adds value after purchase, or helps a shopper choose before purchase, without interfering with the barcode the till needs. Keep the shopper code visually distinct from the checkout barcode, with enough space between them that neither scanner mistakes one for the other, and never place a shopper code where it could cover, crowd, or confuse the checkout barcode.

Use a dynamic code for a pack that will be printed in volume or sold over a long period. Ingredients, recycling guidance, manuals, and product pages all change, and a dynamic destination lets you update the page without reprinting every pack. That matters even more on packaging than on a flyer, because packs may sit in a warehouse, on a shelf, or in a customer's home long after printing. A static code that points to a page you later move, rename, or delete will fail silently on every pack still in circulation. A dynamic code also lets you correct a mistake, such as a wrong link or an outdated instruction, without recalling printed stock. For the edit workflow, see how to edit a QR code after printing, and for the underlying choice, see static versus dynamic QR codes.

Place it flat, clear, and findable

Placement is where most packaging codes fail, and the failures are physical before they are digital. A code printed across a seam, a fold, an embossed area, or the edge of a label will distort or break, however good the artwork looks flat on screen. A code on a glossy, reflective, or metallic area may glare under shop lights. A code tucked under a flap, behind a seal, or on the base of a pack may never be found. Put the code on the flattest, smoothest panel available, away from seams, folds, embossing, and edges, and keep it where a shopper can see and reach it without turning the pack upside down or peeling anything. On a box, the back or side panel is usually the natural home; on a bottle or jar, the front or back label panel, not the neck or shoulder, is flattest.

Curved surfaces need special care, because a square code wrapped around a cylinder does not stay square from the camera's point of view. The modules at the edges compress horizontally, the finder patterns distort, and the camera may fail to read the whole symbol at once. The practical rules are simple: use the flattest span available, keep the code small relative to the container's diameter so it does not wrap far around the curve, and align it along the straightest axis of the container. Do not place a large code on a narrow bottle, a small tube, or a slim can and hope the camera will compensate. If the flattest panel is too small for a readable code, change the plan: use a shorter link to make a sparser code, move the code to a hang tag, an outer carton, or a leaflet inside the pack, or accept that this particular pack is not a good home for a code at all. A code that only scans when the pack is held perfectly still, at exactly the right angle, is not a working code.

Keep the quiet zone sacred on a pack, where artwork is dense and the temptation to fill every gap is strong. The quiet zone is the clear margin around the code, at least four modules wide on every side, and scanners use it to find the code's edges. On packaging, that margin is easily lost to a background pattern, a border, a neighbouring logo, or a fold line that runs through it. Build the quiet zone into the artwork as a solid, light-coloured patch, not as an afterthought, and do not let text, graphics, or a coloured box intrude into it. If the pack design uses a dark background, give the code a light patch large enough to hold both the code and its quiet zone. A code printed directly onto a dark, patterned, or metallic background, without that patch, is a common and avoidable failure.

Size: the small-pack problem

Small packs force a trade-off that must be faced honestly: the code must be large enough to scan, and the label must still hold everything else. For close-range, phone scanning, a practical floor is about 2 by 2 centimetres for the code itself, before any border, label, or quiet zone is added. On a curved bottle or can, where curvature reduces the readable area, a slightly larger code of about 2.5 to 3 centimetres wide is a safer target. Those are floors for shopper codes scanned at close range, not targets for every situation. A code scanned from further away, in poorer light, or by an older phone needs to be larger, following the widely used rule of thumb that the code should be about one tenth of the scanning distance. A code that will be scanned from 30 centimetres away should therefore be at least about 3 centimetres wide, and a code on a shelf-edge or display unit scanned from further away needs to grow accordingly.

GS1 sizing for retail-scannable codes gives a more precise, and stricter, picture, and it is worth understanding even if your code is only for shoppers, because it shows how module size drives the whole calculation. GS1 specifies a permitted X-dimension, the width of one module, of 0.396 to 0.990 millimetres for QR codes scanned at retail point of sale. At the smallest X-dimension, a code 29 modules across, plus the required four-module quiet zone on each side, measures 14.6 by 14.6 millimetres in total. That is a minimum for that particular module count, not a universal target: a longer payload produces more modules, and more modules at the same X-dimension produce a larger code. GS1's own guidance for retail packaging also notes that printing larger, for example 20 to 25 millimetres, may improve scanning performance, so minimums should be treated as floors, not goals. The calculation to remember is simple: count the modules across, add eight for the quiet zone, four on each side, and multiply by the module width. If the result does not fit the flat panel you have, shorten the destination or move the code, rather than shrinking the modules below a readable size.

Pack situationSize to aim forWhy
Flat box or pouch, phone scan at close rangeAt least 2 by 2 cm for the code aloneModules stay large enough for ordinary phones
Curved bottle, jar, or can2.5 to 3 cm, on the flattest panelCurvature compresses edge modules and shrinks the readable area
Retail-scannable GS1 code, 29 modulesAt least 14.6 by 14.6 mm including the quiet zone; larger is betterGS1 minimum X-dimension is 0.396 mm per module

Density is the hidden variable in every small-pack decision. A short link produces a sparse code with large modules that survive small print, curves, and wear. A long link, a link full of tracking parameters, or a code that encodes a lot of text directly produces a dense code with small modules that need more physical size to stay readable. On a small label, the most effective size increase is often not a larger code at all, but a shorter destination. Use a short, stable address behind a dynamic code, strip unnecessary tracking parameters from the printed link, and put the extra detail on the landing page, not inside the code. If you add a logo to the centre of the code, use a higher error correction level, such as Q or H, keep the logo small and clear of the corner squares, and enlarge the code to compensate, because the logo consumes part of the error correction budget. Error correction levels run from L, which recovers about 7 percent, through M at about 15 percent and Q at about 25 percent, to H at about 30 percent, and those percentages are ceilings for damage, not a budget to spend carelessly on decoration.

Materials, handling, and proof on the real pack

Packaging lives a harder life than paper. It is handled, stacked, chilled, wetted, rubbed, and exposed to light, and each of those conditions can degrade a code that scanned perfectly on a design proof. Glossy films glare, matte films read more evenly, condensation on a chilled bottle can blur the surface, and a code printed on a flexible pouch can crease along a fold. Choose materials and finishes with scanning in mind: favour matte over high gloss where you can, keep the code away from areas that crease or stretch, and confirm the print process and resolution with your printer. Export the code as a vector file, and confirm the printer has not resampled, recolored, or cropped it. For a wider pre-print run-through, use the pre-print QR code checklist alongside your physical proof.

Proof on the real pack, filled, sealed, and handled as a customer will handle it. Print a sample label, apply it to the actual container, fill the container if weight or shape changes how it sits, and scan it with more than one phone, in shop-like light, at the distance a shopper will actually stand. Test it with condensation if the product is chilled, test it after the pack has been handled and stacked, and test it at a slight angle, because shoppers rarely hold a pack perfectly square to the camera. If the code is for retail scanning, verify it with a barcode verifier or a GS1 check service where available, rather than relying only on a phone scan, because a phone that reads a code slowly is not the same as a checkout scanner that must read it at speed. If any test fails, fix the cause in order: shorten the destination, enlarge the code, clear the quiet zone, improve contrast, move the code to a flatter panel, or change the finish. Do not fix a failing code by adding a second code beside it, which only confuses both shoppers and scanners.

Finally, plan for the pack's whole life, not just its launch. A dynamic code lets you update the destination when ingredients, instructions, or recycling guidance change, but it does not excuse a pack that was never proofed or a mandatory label squeezed to make room. Keep a record of what each code links to and the printer proof that passed, so a reprint does not silently reintroduce a failed layout. When a product is reformulated or discontinued, update the destination or retire the code deliberately, rather than leaving packs in circulation that open an outdated page.

CheckPass looks likeCommon failure
Mandatory label spaceAll required text stays printed and legibleCode crowds out ingredients, allergens, or safety text
Flat panel and quiet zoneCode sits flat, clear of seams, folds, and artworkCode wraps a curve or loses its margin to graphics
Size and densityShort link, modules large enough for the panelLong link shrunk onto a tiny, dense code
Real-pack proofScans on two phones, filled and handled, in shop lightCode only ever tested flat on screen

Sources

Try it yourself — free

Everything in this article works in the FreeQrly studio right now. Static codes, all 17 content types, PNG and SVG export.

Open the studio

Good to know

Can a QR code replace mandatory information on a pack?

For most products, no. A code can add detail, translations, or recycling guidance, but mandatory particulars generally stay printed on the pack. EU food and product safety rules draw this line explicitly, with wine e-labels as a narrow exception where energy and allergens still stay printed.

How small can a QR code be on packaging?

For a phone scan at close range, treat about 2 by 2 cm for the code alone as a floor, and 2.5 to 3 cm on a curved bottle or can. For a retail-scannable GS1 code of 29 modules, the GS1 minimum is 14.6 by 14.6 mm including the quiet zone, and printing larger improves performance.

Why do codes fail on curved bottles and cans?

Curvature compresses the modules at the edges and distorts the finder patterns, so the camera cannot read the whole symbol at once. Use the flattest panel, keep the code small relative to the container diameter, align it along the straightest axis, and proof it on a filled container.

Where should the code go relative to the checkout barcode?

Keep them clearly separate, with enough space that neither scanner mistakes one for the other, and never let a shopper code cover or crowd the checkout barcode. If a code is for retail scanning, follow GS1 placement rules for that symbol, including its position relative to the linear barcode.

Should a packaging code be static or dynamic?

Dynamic, for any pack printed in volume or sold over a long period. Ingredients, instructions, and recycling pages change, and a dynamic destination can be updated without reprinting packs still in warehouses, on shelves, or in customers' homes.

Does a logo in the code affect small-label scanning?

Yes. A logo covers part of the pattern and consumes error correction, so use level Q or H, keep the logo small and clear of the corner squares, and enlarge the code to compensate. On a very small label, a plain code with a short link usually scans more reliably than a decorated one.

How do I proof a packaging code properly?

Print a sample on the real label material, apply it to the actual filled container, and scan it with more than one phone in shop-like light, at a realistic distance and angle. Test chilled or handled packs too, and use a verifier or GS1 check service for retail-scannable codes.

What should the code link to?

One clear job the pack cannot do in print: full ingredients or allergens, how to use or recycle, a batch or recall page, or a refill or spare part. Label the code with that job, and avoid a generic homepage or an unrelated promotion.