Why printed QR codes fail
A QR code is the one element on a promo with a hard pass/fail state. A headline that is slightly too small still reads; a code that is slightly too small simply does not scan, and nobody tells you. Almost every failed code in the wild traces back to one of four causes: something crowding the quiet zone, a code printed too small for its viewing distance, weak or inverted contrast, or placement under interface elements on screen. All four are checkable before you export, and this guide covers each one.
The quiet zone: four modules of nothing
The QR standard (ISO/IEC 18004) requires a quiet zone of four modules of clear space on every side of the code. A module is the smallest square in the pattern, so the quiet zone scales with the code — it is not a fixed pixel margin. Scanners use that empty border to find the edges of the symbol; anything that intrudes on it can break detection even when the code itself is perfect.
- Do not run a decorative border, keyline, or frame tight against the code.
- Keep body text, logos, and busy background patterns out of the margin.
- Place the code on a solid light panel if the artwork behind it is textured or photographic.
Error correction: pick the level for the job
QR codes carry built-in redundancy, so a partially damaged or obscured code can still decode. There are four levels, and the trade-off is simple: more recovery means more modules, which means a denser code that needs more physical size for the same URL.
| Level | Recoverable damage | Pick it when |
|---|---|---|
| L | ≈7% | Clean on-screen use at close range, where you want the sparsest, most scannable pattern. |
| M | ≈15% | The sensible default for most promo work, print or screen. |
| Q | ≈25% | Print that will live rough: folded flyers, outdoor posting, table tents that get wiped down. |
| H | ≈30% | A logo overlaid on the center of the code, small stickers, or anything likely to be scuffed. |
One related habit pays off at every level: keep the destination URL short. A long URL forces a denser code before error correction even enters the picture, and a dense code at level H can get finicky at small sizes.
How big to print: the 2 cm floor and the 10× rule
For close-range scanning — a flyer in someone’s hand, a business card — print the code at least 2×2 cm (0.8×0.8 in). Below that, ordinary phone cameras struggle to resolve the modules.
For everything else, use the rule of thumb that a code scans reliably from about 10× its printed width. Work backwards from where the viewer will actually stand. A poster meant to be scanned from across a room at 3 m needs a code around 30 cm wide — far larger than most people’s instinct. Flip it around and the same rule is reassuring: a flyer read at 30 cm only needs a 3 cm code, comfortably above the print floor. The rule is approximate, but if your layout is an order of magnitude off it, no amount of error correction will save it.
Dark on light, always
Scanners are built to find dark modules on a light background. Inverted codes — light modules on a dark background — fail outright on many readers, because the detection step assumes the standard polarity before decoding even begins. A white code on black may look sharp in a layout and still be functionally broken. If the design is dark, place the code on a light panel rather than inverting it.
Contrast matters within the normal polarity too: two mid-tone brand colors can sit too close together for a camera in poor lighting. A useful benchmark is the WCAG AA text threshold of 4.5:1 — the Studio’s color picker shows a live contrast advisory against that exact figure, and a color pair that fails it for text is a poor bet for a scannable code.
Placement on story graphics
On a 1080×1920 story frame, roughly the top 250px and the bottom 310px can be covered by platform interface — profile chrome above, reply and action controls below. Those bands are approximate and vary by platform and device, but the practical rule is constant: keep the QR code and any instruction text in the middle of the frame, and treat the top and bottom bands as disposable background. A code that sits half-under a reply bar is a code nobody scans. These specs are current as of August 2026 — verify against the platform’s own documentation before a critical print run or launch.
PNG or SVG for print
PNG is raster: it has a fixed pixel size, and enlarging it for a poster softens the module edges. SVG is vector: it scales to any print size without quality loss, so the 30 cm poster code stays as crisp as the 3 cm flyer code. Hand your printer the SVG whenever one is available and keep the PNG for screens. The free QR tool exports both, and the Studio’s promo package ZIP includes the code as PNG and SVG side by side — the package anatomy guide walks through everything else in that ZIP.
Test-scan before anything prints
Every rule above is a way to avoid a failure you could also just catch directly: scan the thing. Print a proof at final size — not on screen, where brightness and backlight flatter the code — and test it at the real viewing distance, in lighting like the venue’s, with more than one phone. Confirm the URL that opens is the URL you meant, with any tracking parameters intact. It costs almost nothing and it is the only step that verifies the whole chain. If the code anchors an event campaign, fold that proof-scan into your run-up plan — it has a line of its own in the event promotion checklist.