QR Code Printing Guide: Sizes, Materials, and Mistakes to Avoid
Generating a QR code is the easy part. Getting it to scan reliably when printed on real packaging, in a factory, on materials that flex, shrink, and get scratched, that's where things get interesting.
This guide covers the practical considerations for printing GS1 Digital Link QR codes on product packaging.
Minimum size
GS1 specifies a minimum X-dimension (module size) of 0.396mm for QR codes at retail point of sale, which gives a theoretical minimum around 15mm depending on the code's version. In practice, 20mm x 20mm (about 0.8 x 0.8 inches) including the quiet zone is a widely used target for reliable scanning across devices.
In practice, the right size depends on your packaging:
| Packaging type | Recommended minimum | Ideal size |
|---|---|---|
| Large boxes, cartons | 20mm | 25 to 30mm |
| Standard retail packaging | 20mm | 22 to 25mm |
| Small packages (cosmetics, supplements) | 15mm | 18 to 20mm |
| Very small items (lip balm, gum) | 10mm | 12 to 15mm |
Smaller QR codes require higher print resolution and better quality control. Below 10mm, scanning reliability drops significantly.
Rule of thumb: if you're unsure, go bigger. A slightly larger QR code never causes problems. A slightly too small one does.
The quiet zone
The quiet zone is the blank margin around the QR code. Without it, scanners can't distinguish where the code ends and the packaging design begins.
For QR codes, the minimum quiet zone is 4 modules wide on all four sides. A "module" is one of the small squares that make up the QR code grid.
For a QR code at 20mm, that's roughly 1.5 to 2mm of blank space on each side. This space must be free of text, graphics, patterns, and color changes.
Error correction levels
QR codes have built-in error correction. They can still scan even if part of the code is damaged, smudged, or obscured. There are four levels:
| Level | Recovery capacity | Best for |
|---|---|---|
| L (Low) | 7% of data recoverable | Controlled environments only (not recommended for packaging) |
| M (Medium) | 15% of data recoverable | Standard packaging, good print quality |
| Q (Quartile) | 25% of data recoverable | Packaging that gets handled roughly (frozen food, beverages) |
| H (High) | 30% of data recoverable | Harsh environments, codes with logo overlays |
For product packaging, use at least M. If your product will be handled in wet, cold, or rough conditions (refrigerated food, outdoor products, industrial items), use Q.
Higher error correction means more modules in the code (making it denser at the same physical size), so there's a trade-off between resilience and scanability at small sizes. For most packaging, M provides the right balance.
Color and contrast
The most reliable combination is dark modules on a light background. Classic black on white works best, but you can use brand colors if you maintain sufficient contrast.
Rules for color
- Maintain strong contrast. GS1 recommends a minimum Print Contrast Signal of 50%, though 80%+ is ideal. A darker green on white works. Light gray on cream does not.
- Dark modules must be dark. Use black, dark blue, dark green, or dark brown for the foreground.
- Light modules must be light. Use white, light yellow, or similarly high-reflectance colors for the background.
- Never invert. Light modules on a dark background (like a white QR code on a black package) reduces scan reliability significantly. Many Android devices and older phones can't read inverted QR codes. If your packaging has a dark background, place the QR code in a white box.
- Avoid red, orange, and yellow for dark modules. These colors reflect too much light and can appear as background to scanners, reducing contrast.
Background considerations
- Print the QR code on a solid, uniform background. Textured, patterned, or photographic backgrounds interfere with scanning.
- If your packaging has a busy design, create a solid white rectangle for the QR code to sit in.
- Transparent or translucent packaging requires a white backing behind the QR code.
Substrate and material considerations
Different packaging materials present different printing challenges:
Flexible packaging (pouches, bags, wraps)
- Material stretch during forming can distort the code
- Print the QR code in a area that experiences minimal stretch
- Consider printing at slightly higher error correction (Q)
- Test on formed packages, not flat film
Corrugated cardboard
- Fluting (the wavy interior layer) can cause print inconsistency
- Use a minimum module size of 0.5mm
- Direct print quality varies; labels may be more reliable
Glass and metal (bottles, cans)
- Curved surfaces distort the code at the edges
- Place the code on the flattest area of the surface
- For cans, test scanning across the curve
Shrink wrap and sleeves
- Significant distortion during the shrink process
- Design the code to be read after shrinking, not before
- Test on actual shrunk samples
Placement on packaging
Where you put the QR code matters for both scanning and consumer engagement:
- Primary display panel is ideal for consumer engagement. Consumers see it first and are most likely to scan.
- Back panel works for compliance. Less prominent but still easily scannable.
- Near the existing barcode helps retailers and consumers understand both codes coexist during the transition period.
- Avoid seams, folds, and creases that could damage or obscure part of the code.
- Avoid curved edges where the code would wrap around a corner.
Add a brief call-to-action near the code: "Scan for product info," "Scan to learn more," or similar. Consumers are more likely to scan a QR code when they know what they'll get.
Pre-print testing checklist
Before committing to a full production run:
- Print a proof at actual size on the actual substrate (or the closest approximation)
- Scan with at least 3 phones (mix of iOS and Android, different ages)
- Test in different lighting (bright retail lighting, dim conditions, direct sunlight)
- Test at typical scanning distance (10 to 15 inches for handheld consumer scanning)
- Verify the URL opens correctly and redirects to the right destination via your resolver
- Check the quiet zone hasn't been compromised by nearby design elements
- Simulate damage by slightly scratching or smudging a test print to confirm error correction handles it
Common mistakes
- Scaling a QR code in design software without maintaining the pixel grid. QR codes must be scaled in whole multiples. Scaling to an arbitrary size creates fractional modules that blur when printed. Always scale by integer multiples (2x, 3x, 4x) of the base module size.
- Adding a logo overlay without increasing error correction. Logos eat into error correction capacity. If you must add a logo, use level H error correction and keep the overlay under 20% of the code area.
- Using a URL shortener in the QR code. GS1 Digital Link compliance requires the full GS1 URI in the QR code. A shortened URL is not compliant and won't work at retail POS.
- Forgetting to test on the actual packaging. A QR code that scans perfectly on screen or on plain paper may not scan on textured, reflective, or flexible packaging materials.
- Placing the code too small "because the packaging is small." If the code can't be scanned reliably, it's worse than having no code at all (consumers will try, fail, and be annoyed). Redesign the packaging to fit a larger code rather than shrinking the code below minimum size.
Print specifications for your designer
When briefing a packaging designer, provide:
- Vector file (SVG or EPS) of the QR code, not a raster image
- Minimum size: 20mm including quiet zone (or smaller with justification)
- Error correction level: M or Q
- Color: specify dark/light module colors and confirm contrast ratio
- Quiet zone: 4 modules minimum, call this out explicitly
- Scaling rule: integer multiples only
- Call-to-action text to place near the code
SunriseQR generates print-ready QR codes in SVG, PNG, and PDF formats. Learn more →
Need to generate the code first? Read How to Create a GS1 Digital Link QR Code.