
How to prepare a QR code for print: vector, resolution, and the colour mistake that breaks scans
A QR code can scan on screen and still fail off the press. How to prepare it for print: ship vector (or 300 DPI), set the modules to 100% K not rich black, protect the four-module quiet zone, and proof on the real stock before the run.
ScanKit · Organization
· 14 min read
How to prepare a QR code for print: vector, resolution, and the colour mistake that breaks scans
A QR code that scans perfectly on your screen can fail completely once it comes off the press. The maddening part is that nothing looks wrong in the artwork. The proof looks crisp, the client signs off, ten thousand flyers go out, and then the codes will not read. Almost every time, the cause is not the code itself but the file you handed the printer and the way that file met ink and paper.
This is the production side of QR work, the bit that sits between designing a code and tracking the scans it earns. It rarely gets written about honestly because most guides online are published by QR generators trying to win your signup, so they repeat "use SVG, 300 DPI, keep the contrast" and move on. The mechanics that actually trip up an agency live one layer deeper: vector versus raster, how black is built in CMYK, how much margin the scanner needs, and what the press does to fine detail. Get those right and the code reads on the cheapest phone in bad light. Get them wrong and no amount of error correction will save you.
This guide is for the agency preparing artwork for a printer. It assumes you already know how big a QR code should be and how to put a logo in one without breaking it. Here we deal only with the file and the print.
The file you send the printer is not the file you downloaded
Start with the mindset shift. The PNG you exported from a generator is a screen asset. It was sized in pixels for a display measured in tens of pixels per inch. Print is measured in hundreds of dots per inch, in a different colour space, on a physical surface that spreads ink. Treating a screen file as a print file is the single most common reason a campaign's codes fail, and it is entirely avoidable.
A QR code is unusually unforgiving here because of what it is: a grid of hard black and white squares, called modules, with sharp edges that a camera's decoder relies on to find and read the pattern. Photographs tolerate softness and colour drift. A QR code does not. Anything that blurs a module edge, lowers the contrast between dark and light, or eats into the margin around the code attacks the exact features the scanner needs. So the rules below are not fussiness. They are about protecting edges and contrast all the way from your artboard to the printed sheet.
Vector beats raster, and why a PNG quietly fails
The correct deliverable for a printed QR code is vector: SVG, EPS, or a vector PDF. A vector file stores the code as mathematical paths rather than a fixed grid of pixels, so it scales to any size with no loss of quality. A vector code exported at any resolution prints as crisply on a billboard as on a business card, because there is no resolution to run out of. This is industry standard practice for print-bound logos and codes alike, and it removes a whole class of problems before they start.
Raster formats (PNG, JPG) store a fixed pixel grid. Scale that grid up past its native size and the square modules turn soft: pixelation, blurred edges, anti-aliasing smudged across what should be a clean black-to-white transition. Those are precisely the cues the decoder uses, so a blown-up raster code reads slowly or not at all.
JPG deserves a specific warning. It uses lossy compression that introduces artefacts exactly on hard black-and-white edges, which is the entire surface of a QR code. The damage is often invisible on screen and disastrous in print, frequently rendering the code unscannable. If you are forced to use raster, use PNG, never JPG. As a rule of thumb the format preference runs: SVG first, then vector PDF, then EPS, and high-resolution PNG only as a last resort.
One trap to avoid: "converting" a low-resolution PNG to SVG does not create a true vector code. Tracing or wrapping a pixel image in an SVG container leaves a pixelated raster inside a vector file, with all the original softness intact. Generate the code natively as a vector from the source tool instead.
When raster is unavoidable: the 300 DPI floor
Sometimes the printer's template or a client's system only accepts a raster image. If so, the long-standing print standard is a minimum of 300 DPI (dots per inch) at final print size, against the roughly 72 to 96 PPI of a screen. For small codes, under about 25 mm, or for detailed packaging work, 600 DPI is the safer choice.
The arithmetic is simple and worth doing every time. Pixel dimension equals physical size in inches multiplied by DPI. A code printed at 1 inch (about 2.5 cm) needs at least 300 by 300 pixels. A 2 inch code needs 600 by 600. This is why "it looks fine on my monitor" is misleading: a code that fills a screen at 96 PPI can carry a fraction of the pixels a printer needs at 300, and it falls apart when scaled to the real print size. When in doubt, ship vector and the DPI question disappears entirely.
The colour mistake that breaks scans: rich black
This is the failure that catches experienced designers, because the file looks immaculate right up until it is on press. The dark modules of a print QR code should be 100% K only, a single ink: C0 M0 Y0 K100. They should not be "rich black".
Rich black builds a deeper black by laying down multiple inks together, for example something like C60 M40 Y40 K100. It looks great for large solid areas. It is the wrong choice for a QR code. On press, each ink colour is a separate plate, and the plates can shift slightly out of alignment, called misregistration. When that happens on a grid of tiny squares, every module edge ghosts and softens as the cyan, magenta and yellow drift away from the black. Contrast drops, edges blur, and the decoder struggles. The more inks and the higher the total ink coverage, the worse it gets. A barcode built at registration black (near 100% of every ink, around 350% total coverage) is a documented recipe for scan failure. Single-ink black, or a pure spot colour, keeps every edge sharp.
So the rule is short: set the dark modules to 100% K and nothing else, and keep the background pure white or a genuinely light, single, flat colour.
RGB to CMYK: the contrast you lose in conversion
Most QR generators export in RGB, the screen colour space. Commercial print is CMYK. If you hand a printer an RGB file, their software will convert it automatically, and that conversion often shifts colours and reduces the contrast between your dark code and its background. A code you designed with comfortable contrast can land on paper with noticeably less.
Convert deliberately rather than leaving it to chance. Bring the code into your layout tool, convert to CMYK, and set the modules explicitly to 0/0/0/100. In Adobe tools, View then Proof Colors lets you preview the CMYK result before you commit, so any contrast loss is visible on screen first. The minimum dark-to-light contrast you want is high; a practical rule of thumb is at least 4:1, and the underlying standard, ISO/IEC 18004, defines the symbol in terms of reflectance between dark and light modules. Keep it dark on light. Inverted codes (light modules on a dark background) are a common failure because many scanners expect dark on light, and they are not worth the risk on a printed campaign you cannot change cheaply.
Keep the quiet zone, and do not let bleed eat it
Every QR code needs a margin of clear, light space around it called the quiet zone. This is not optional styling. Denso Wave, the inventor of the QR code, specifies a quiet zone four modules wide on all sides, and ISO/IEC 18004 carries the same requirement. Without it, the scanner cannot find the edge of the symbol, and the read fails at the very first step, locating the code.
The width follows from the module size: quiet zone equals module width times four. If each module is 0.5 mm, you need at least 2 mm of clear space on every side. Build that margin into the artwork as protected space, and watch two things in particular. First, do not let surrounding design, a coloured panel, a photo, a border, intrude into it. Second, on anything that bleeds to the edge, make sure the trim does not slice through the quiet zone. A code placed near a flyer's edge can lose its margin to the guillotine even though the file was perfect.

What the diagram shows, point by point:
- The four-module quiet zone: clear, light margin on all sides so the scanner can locate the code.
- 100% K modules: dark squares built from a single black ink, with crisp, registered edges.
- High-contrast light background: white or a flat light colour, never a busy photo or a dark panel.
- Vector-sharp edges: clean black-to-white transitions, not the soft, anti-aliased edges of an upscaled raster.
What to actually hand the printer
When the printer or production manager asks for the artwork, give them, in order of preference:
- SVG: native vector, scales infinitely, the best default for most jobs.
- Vector PDF: excellent, and often the exact format a print shop requests.
- EPS: a professional print vector format that supports CMYK colour profiles.
- High-resolution PNG: only as a last resort, at 300 DPI or more at final size, and never JPG.
A few handover details save a reprint. Supply the code on a solid light background rather than transparent, or confirm with the printer that the quiet-zone area will print white, because a transparent background can let coloured stock or underlying artwork show through and destroy the contrast. Confirm the code is a true vector object in CMYK, not a raster image embedded inside a vector file. And tell the printer explicitly that the dark modules are 100% K and must not be converted to rich black in pre-press. None of this is exotic, but it has to be said out loud, because pre-press defaults will not protect a QR code for you.
The press-side failures nobody warns you about
Even a perfect file can be undone by the physical print. These are the production realities to plan around, and they are the reason a proof on the real stock matters more than any on-screen check.
- Dot gain on uncoated and textured stock. Ink spreads as it soaks into porous paper, so modules grow and can start to merge, blurring the pattern. The rougher and more absorbent the stock, the worse it is. Mitigate by printing the code a little larger on uncoated stock, preferring coated or smooth stock where you can, and asking your printer about bar-width reduction on wet-ink or inkjet processes.
- Varnish, UV coating, lamination and glossy stock. A reflective finish can throw specular glare straight back at the camera and defeat the read, especially under shop lighting or sun. A matte finish absorbs light rather than bouncing it, so it is the safer choice over a code. If a gloss finish is non-negotiable for the piece, test heavily.
- Codes printed too small for the read distance. The familiar rule of thumb is roughly 10:1: the code should be at least one tenth as wide as the distance people scan it from, so a code read from a metre away wants to be around 10 cm wide, with a practical floor of about 2 by 2 cm for close-up print. This is covered in depth in the size guide; the point here is that print production cannot rescue a code that was specified too small.
If a printed code still will not read after all this, the diagnostic guide to QR codes that will not scan walks through isolating the cause gate by gate.
Proof on paper before the run
There is no substitute for scanning a physical proof, on the actual stock and finish, before the full run. Screen previews and digital proofs hide dot gain, ink spread, misregistration and glare, the four things most likely to break a printed code. Print the real piece, on the real paper, with the real coating, and scan it.
Test with more than one phone. Use a recent flagship and a cheaper or older device, across both iOS and Android if you can, because cameras and decoders vary. Scan in the lighting the code will actually live in, the shop floor, the street, the dim restaurant, not just a bright office. Five minutes with three phones at proof stage is the cheapest insurance in the entire campaign.
One reprint you will be glad to avoid
Doing all of this protects the print. It does not protect the destination. A static code bakes the URL into the pattern, so if the landing page moves or the campaign pivots, every printed piece is dead and a reprint is the only fix. A dynamic QR code encodes a short redirect instead, so you can change where it points after printing without touching the artwork. For any printed campaign worth proofing this carefully, it is worth encoding a code you can still steer, and it gives you scan tracking for free. See how to track a print campaign with QR codes for the measurement side.
Frequently asked questions
What file format is best for printing a QR code?
A vector format. Use SVG first, then a vector PDF, then EPS. All three scale to any size with no loss of quality because they store the code as paths rather than pixels. Use a high-resolution PNG only if raster is unavoidable, at 300 DPI or more at final size, and never use JPG, whose compression damages the hard edges a QR code depends on.
What DPI should a QR code be for print?
At least 300 DPI at the final printed size, the standard minimum for print against a screen's 72 to 96 PPI. For small codes under about 25 mm or for packaging, 600 DPI is safer. Pixel size equals print size in inches times DPI, so a 1 inch code needs at least 300 by 300 pixels. A vector file sidesteps DPI entirely, which is why it is the better deliverable.
Should a QR code be CMYK or RGB for print?
CMYK for commercial print, with the dark modules set to 100% K only (C0 M0 Y0 K100). Convert deliberately rather than letting the printer's software auto-convert from RGB, because that conversion can shift colour and cut the contrast between the code and its background.
Why does my printed QR code fail when the file looks perfect?
The usual culprits are rich black (black built from several inks, which misregisters on press and blurs module edges), a low-resolution or JPG raster, a quiet zone trimmed away at the edge, low contrast after an RGB to CMYK conversion, or a glossy finish throwing glare. Set the modules to 100% K, ship vector, protect the four-module margin, and proof on the real stock.
What is rich black and why is it bad for QR codes?
Rich black is a deeper black mixed from multiple CMYK inks, for example C60 M40 Y40 K100. On press the separate ink plates can shift slightly out of register, so every small module edge ghosts and softens and contrast drops. For a grid of tiny squares that is enough to defeat a scanner. Use single-ink 100% K instead.
How much clear space does a QR code need around it?
Four modules of clear, light space on every side. That is the quiet zone defined by Denso Wave and ISO/IEC 18004, and it is what lets a scanner find the code's edge. If a module is 0.5 mm wide, that is at least 2 mm of margin all round. Keep surrounding design and the trim line out of it.
The short version
A printed QR code fails on the press, not on your screen, so prepare the file for the press. Ship vector (SVG, EPS, or vector PDF) so edges stay crisp at any size, and fall back to 300 DPI raster only when you must, never JPG. Build the dark modules from 100% K alone, not rich black, and convert to CMYK deliberately so you do not lose contrast. Protect the four-module quiet zone and keep the trim away from it. Then prove the whole thing by scanning a physical proof, on the real stock and finish, with two or three phones, before the run. Do that, encode a dynamic code so a moved page never means a reprint, and your print campaign reads on the first try, every time.
Keep reading

· 15 min read
Track QR code scans in Google Analytics 4: the UTM setup agencies actually need
QR scans land in GA4 as Direct because they carry no referrer. Here is the UTM setup that fixes it, the one channel quirk that catches almost everyone (utm_medium=qr goes to Unassigned), and a tagging taxonomy that stays clean across a client roster.
Read more
· 14 min read
QR codes vs NFC tags: which should your agency use on a client's campaign?
QR codes or NFC tags for a client's campaign? The honest, vendor-neutral comparison for agencies: reach, phone support, cost per unit and tracking, plus a simple decision rule for when QR is the default and when NFC earns its chip.
Read more