← All guides

QR Code Design Best Practices for Print

A QR code on a screen is forgiving — if it doesn't scan, you regenerate it. A QR code on 5,000 flyers is not. Most scan failures in print come down to a handful of avoidable design mistakes: weak contrast, a cropped margin, an oversized logo, or a code sitting right on a fold.

This guide covers the rules that matter, what you can safely customize, where to put the code on the page, and how to test before you commit to a print run.

Contrast first: dark code on a light background

Phone cameras find a QR code by detecting dark squares against a light background. The reliable baseline is near-black on white or off-white. The bigger the gap between the module color and the background, the faster and more reliably the code scans — especially in dim lighting or from an angle.

Never invert the code. Light modules on a dark background look striking, but many camera apps simply won't read them. If your layout uses a dark background, place the code inside a light-colored box instead of flipping the colors.

Remember that print flattens contrast. Ink on colored or textured stock reads muddier than the same design on screen, so what looks like comfortable contrast in your design file may be marginal on paper.

Protect the quiet zone

The quiet zone is the empty margin around the code — the spec calls for at least four modules of clear space on every side. It's how a scanner separates the code from everything around it.

Cropping this margin to save space is one of the most common reasons printed codes fail. Don't run borders, text, background patterns, or photos up against the code, and keep the margin the same color as the code's background. If the code sits in a busy layout, give it a solid light panel with generous padding.

Custom colors are fine — if the contrast holds

You don't have to print black codes. Dark navy, forest green, or deep maroon on a white background all scan reliably. The rule is that the color relationship must stay dark-on-light with a wide gap between the two. A quick check: convert the design to grayscale. If the code still looks clearly dark against clearly light, you're fine. If it turns into two similar grays, pick a darker color.

Avoid pastels, yellows, and mid-tones for the modules, and avoid tinted or gradient backgrounds behind the code. If your generator supports custom colors — ScanTrail does on its Pro plan — set the module color, keep the background white, and leave it at that.

Logos and heavy styling: proceed carefully

QR codes include error correction, which means a scanner can reconstruct a code even when part of it is obscured. That's what makes a small centered logo possible. But the error-correction budget is shared: every module your logo covers is capacity the scanner can no longer spend recovering from ink spread, scuffing, or a slightly warped surface.

A print run introduces exactly those imperfections, so a logo overlay that scans fine on screen can push a printed code past its limit. If you want a logo, keep it small, keep it centered, use a high error-correction level, and test a printed proof. Skip decorative treatments that reshape the modules themselves — rounded, dotted, or artistic module styles cut reliability with no functional upside on paper.

Placement: where the code sits on the page and in the room

For posters and signage, put the code at eye level, roughly 1.2 to 1.6 meters from the floor. Codes at the top of a tall poster or down near the baseboard technically work, but far fewer people bother to scan them.

On any layout, put the code next to the pitch line — the sentence that says what the reader gets. A code floating in a corner, far from the offer it relates to, gets ignored. Code and reason-to-scan should be read in a single glance.

Never place a code across a fold, crease, spine, or perforation. Even a slight bend distorts the grid enough to break scans. On brochures and mailers, keep the code fully inside one panel with room to spare.

Always add a human-readable call to action

A bare QR code gives people no reason to point a camera at it. One short line next to the code fixes that: "Scan for the menu," "Scan to book a table," "Scan for 10% off." It tells people what they'll get, and it signals that the code is intentional rather than decorative.

Keep it under about six words, set it in readable type, and place it directly above or below the code. If space allows, also print the short URL as text — it gives people without a working camera a way in, and it builds trust by showing where the code leads.

Test with real phones before the print run

Print a proof at actual size, ideally on the actual stock. Then scan it with several phones — an older Android, a recent iPhone, whatever your team can gather — from the distance people will really stand at, under lighting similar to where the piece will live. A code that scans instantly on one new phone at 20 cm tells you very little about a poster scanned from two meters under fluorescent light.

This step matters because the printed pattern is the one thing you can never fix later. A dynamic QR code — the kind ScanTrail generates — lets you change the destination URL any time after printing, so a moved landing page or a changed offer is never a reprint. But no service can rescue a code that won't scan in the first place. Verify the scan, then print.

Common questions

What is the minimum size for a printed QR code?

For close-range scanning (flyers, business cards, table tents), keep the code at least 2 x 2 cm (about 0.8 x 0.8 in). For posters and signage, a useful rule of thumb is scanning distance divided by 10: a code meant to be scanned from 2 meters away should be about 20 cm across. When in doubt, go bigger — extra size costs nothing, and small codes are the most common sizing failure.

Can a QR code be white on a black background?

Avoid it. Many scanning apps expect dark modules on a light background and will fail on an inverted code even when it looks perfectly crisp. If your design uses a dark background, place a standard dark-on-light code inside a white or light-colored box instead.

How much of a QR code can a logo cover?

At the highest error-correction level, a QR code can survive up to about 30% damage — but that budget also has to absorb printing imperfections, scuffs, and viewing angle. In practice, keep a logo well under that ceiling (small and centered), generate the code with high error correction, and always test a printed proof before running the full job.

What file format should I use when sending a QR code to print?

Use a vector format like SVG, EPS, or PDF whenever possible — vectors stay perfectly sharp at any size, which matters for large-format printing. If you must use PNG, export it at high resolution (300 DPI at final printed size) and never upscale a small image, since blurry module edges cause scan failures.

Why won't my printed QR code scan?

The usual suspects, in rough order of frequency: the code is too small for the scanning distance, the quiet zone margin was cropped or crowded, the contrast between modules and background is too low, the colors are inverted, a logo or styling covers too much of the pattern, or the code sits on a fold or curved surface. Check those six before assuming the code itself is broken.

Need a QR code that never goes stale?

ScanTrail codes can be re-pointed after printing — free to start.

Create a free QR code