Putting a QR code on product packaging

May 4, 2026 · Dead Simple QR

Print resolution, contrast, quiet zones, and why the destination URL matters more than the sticker design.

You spent weeks on the packaging. The colors are right, the typography is dialed in, and then someone slaps a QR code on the side panel like an afterthought. It scans fine on their phone, under their desk lamp, so it ships. Three months later you're getting emails from customers saying the code doesn't work.

The frustrating part is that the code itself was probably fine. The problem is almost always one of three things: it printed too small, it got lost against the background, or the destination behind it broke. Two of those are fixable in five minutes if you know what to look for. The third one requires a decision you should make before anything goes to the printer.

Size and resolution are the same problem

A QR code is a grid of tiny squares. When you export that grid as a small image and then scale it up for print, those squares get soft edges. Soft edges confuse scanners. The fix is simple: export at the largest size you'll need, not the smallest. If your packaging template has a 1.5-inch square allocated for the code, export the image at a resolution where 1.5 inches gets you clean, hard-edged squares. For PNG files, that usually means exporting at a few hundred pixels wider than you think you need. SVG files sidestep this entirely since they scale without losing sharpness.

The minimum printable size depends on what's encoded in the code and how many modules (those tiny squares) it has. More data means more modules means a denser grid means you need a bigger print size to keep each module scannable. A code that just points to a short URL can comfortably print at around 0.8 inches. A code stuffed with a paragraph of text might need two inches or more. For packaging, most codes fall somewhere in between, but test it at actual size before approving the proof. Not on screen. On the physical proof.

Give the code room to breathe

Every QR code needs a margin of blank space around it, sometimes called a quiet zone. It's how a phone's camera distinguishes "this is a code" from "this is part of the design." The standard recommendation is a margin roughly four modules wide on all sides, but honestly, more is better. When the code sits flush against a design element, a color block, a product photo, a barcode, scanners struggle.

I've seen packaging where the QR code overlaps a gradient background, and I genuinely don't know how anyone expected that to work. Dark modules on a dark-to-medium gradient is a guessing game for cameras. The safest approach is a white (or very light) rectangle behind the code with generous padding. It's not the most exciting design choice, but it works every time.

Contrast matters just as much as spacing. Dark modules on a light background is the classic for a reason. You can use brand colors, navy on cream works, deep green on white works, but the key is high contrast between the two. Light gray on white? That's going to fail under fluorescent store lighting. If your designer pushes back on the white rectangle, a compromise is inverting the code (light modules on a dark background), which can scan fine as long as the contrast stays high.

The destination is the part that breaks

Here's the thing that doesn't get enough attention: most QR code failures on packaging aren't scan failures. They're destination failures. The code scans, the phone opens a browser, and the page is gone. Maybe it was a Google Drive link to a PDF that someone deleted. Maybe it was a campaign landing page that got taken down after the promotion ended. Maybe it was a Bitly link and someone let the account lapse.

This is where the decision before printing matters. A static QR code (the kind where the URL is permanently baked into the pattern itself) will always try to send people to that exact URL. If the page disappears, you're stuck. A dynamic QR code points at an intermediary link you control, so you can update the destination without touching the packaging. Your holiday campaign ends? Point the code to your main product page instead. You realize the landing page has a typo in the URL? Fix it without reprinting a single label.

For anything that's going on physical packaging, especially packaging with a long shelf life, dynamic codes are almost always the right call. The cost of reprinting boxes or stickers because a URL broke is wildly disproportionate to the cost of using an editable link.

Test on the actual material

Paper absorbs ink differently than plastic film. Matte finishes behave differently than gloss. A code that scans perfectly on your office laser printer might blur on a flexographic press run. Print a sample on the real substrate, under the real process, and scan it with three or four different phones in different lighting conditions. If you're working with a packaging vendor, ask them for a press proof specifically for the QR code area.

One thing that catches people off guard: shrink wrap. If the code sits on a surface that gets wrapped, the distortion from the film can make scanning unreliable. Place the code on a flat panel that won't get stretched or creased.

The packaging outlives the campaign

Product packaging has a longer life than most people plan for. Boxes sit in warehouses, on shelves, in people's homes. The QR code you print today might get scanned a year from now. Build for that. Use a destination you can update, keep the design simple and high-contrast, and test on the real thing before you commit to a print run.

If you want a code you can edit after it's printed, DSQR's free plan gives you five dynamic codes to start with. Enough to cover a product line without committing to anything.

Try Dead Simple QR

Codes that keep working. Analytics that stay honest. Free forever.