All articles
Guideintermediate7 min read

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 typeRecommended minimumIdeal size
Large boxes, cartons20mm25 to 30mm
Standard retail packaging20mm22 to 25mm
Small packages (cosmetics, supplements)15mm18 to 20mm
Very small items (lip balm, gum)10mm12 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:

LevelRecovery capacityBest for
L (Low)7% of data recoverableControlled environments only (not recommended for packaging)
M (Medium)15% of data recoverableStandard packaging, good print quality
Q (Quartile)25% of data recoverablePackaging that gets handled roughly (frozen food, beverages)
H (High)30% of data recoverableHarsh 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:

  1. Print a proof at actual size on the actual substrate (or the closest approximation)
  2. Scan with at least 3 phones (mix of iOS and Android, different ages)
  3. Test in different lighting (bright retail lighting, dim conditions, direct sunlight)
  4. Test at typical scanning distance (10 to 15 inches for handheld consumer scanning)
  5. Verify the URL opens correctly and redirects to the right destination via your resolver
  6. Check the quiet zone hasn't been compromised by nearby design elements
  7. 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.

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.