Docs · Guide

Printing QR codes that scan

Three numbers decide it. One module needs about 0.4 mm to survive a phone camera at arm's length, so a 25-module code carrying a short link wants roughly 10 mm of symbol. It needs 4 modules of clear space on every side, which is part of the code and not a margin. And it needs dark on light with a real difference in lightness, measured the way a decoder measures it rather than the way a designer does. A code that clears all three reads from about 10 times its printed width.

Most advice on this question is written from memory. Every figure below is a constant our own renderer sizes and grades against, so you can check it against what the studio tells you before the run goes to press.

The three numbers

0.4 mmminimum width of one module for a phone camera · dedicated scanners manage smaller, and nothing printed for the public should be specified against a dedicated scanner
4 modulesclear space on all four sides, structural rather than decorative · our renderer draws it into the artwork so it cannot be cropped off by accident
10:1reading distance to printed width · the ratio the studio quotes on every design

Everything else on this page is those three applied. They are not house style: the first two are the figures the safety panel, the export dialog and the pre-press proof all read from one module, so a number on your screen and a number on this page cannot drift apart.

Size, worked from the modules rather than guessed

A QR symbol is a grid, and how many cells it has is decided entirely by how much it carries. That is why "print it at 2 cm" is bad advice: 2 cm is generous for a short link and too small for a contact card, and the same instruction produces a working code and a failing one. Count the modules along one edge, then multiply.

What it carriesModulesSymbolArtwork boxReads from
A short link, which is what any dynamic code encodes25 · version 210 mm13.2 mmabout 10 cm
A contact card: name, company, title, phone, email, website53 · version 922 mm24.4 mmabout 22 cm
The same card with a postal address added61 · version 1125 mm27.6 mmabout 25 cm
  • Symbol and artwork box are different measurements · the symbol is the grid itself; the artwork box adds 4 modules on each side. Give a printer the symbol figure when they will place the quiet zone themselves, and the box figure when you are handing over finished art. Mixing them up is how a code arrives a tenth too small.
  • The distance rule runs both ways · a shelf talker read at 30 cm needs about 3 cm of code; a window decal read across a pavement needs a great deal more than most people budget for. Work back from the distance, then check the symbol figure above is not larger.
  • Less content is a bigger module at the same width · a 25-module short link and a 61-module contact card printed the same size do not have the same margin for error. The short link's modules are more than twice as wide, which is why a dynamic code is the more robust print even before anything is repointed. Dynamic vCard QR codes works through that trade in full.
  • Error correction is not a size substitute · a higher level adds modules, which makes each one narrower at the same printed width. It buys tolerance for damage after printing, not tolerance for printing too small.

The quiet zone is part of the code

The clear border is not white space around a graphic. It is how a reader finds where the symbol ends, and a symbol with no quiet zone is a symbol with no edge. The rule is 4 modules on all four sides, and it is the one every proofing round quietly breaks.

  • A short quiet zone fails late · 2 modules still reads on a phone in good light, so it survives the proof, the sign-off and the sample, then fails on the fixed scanner at the till or on a worn print in a dim aisle.
  • Anything darker than the paper counts as an intrusion · a keyline, a registration mark, a fold, the edge of a label, a caption placed too close, a die cut. Our own photo analyzer reports an intrusion when it finds a mark darker than the symbol's light modules within 4 modules of an edge, and it is careful to say that from a photograph it cannot tell printed ink from a shadow.
  • The most common cause is a crop · someone trims the exported file to the visible squares because the border "looks like extra space". If you re-crop a code, you have resized the quiet zone, and the code is no longer the code that was tested.
  • Our renderer draws it into the file · the exported SVG's coordinate system is the symbol plus that border, so the clear space travels with the artwork instead of being an instruction somebody has to follow. Note the consequence when you specify a width: the number you type is the width of the whole file, border included, so the symbol inside it is narrower than the number.

Contrast, measured the way a decoder measures it

A designer checks contrast with a web accessibility ratio. A print buyer is graded on something else: ISO/IEC 15415 symbol contrast, which asks whether a reader can separate light from dark rather than whether a human can read text. The two disagree in both directions, so the studio predicts the grade a print buyer is held to rather than the one that flatters the artwork. It is a prediction from the design, not a measurement of a printed sheet: that needs a calibrated verifier, and we say so rather than estimating one.

  • Pale on white is the classic failure · a very light grey on white grades D, and it is not a marginal case. We measured it against the real renderer: it fails to decode at every size we tried, so the studio treats it as fatal rather than as advice.
  • The worst band is the one that sometimes works · a slightly darker grey on white grades C and decoded at exactly one of six sizes on our ladder. Erratic across size is worse than a clean failure, because a customer cannot design around it and the sample they proofed may have been the one size that worked.
  • Gradients are only as safe as their lightest stop · a fade that ends near the background colour has a corner of the symbol that vanishes. The check runs every foreground stop against every background stop and takes the worst pair, which is the only honest way to grade a fade.
  • The finder squares are the part that cannot be error-corrected · colouring them separately from the modules is a popular styling move and a real hazard. A near-white finder ring on white failed at every size we tried, while the rest of the symbol was fine.
  • Light on dark is permitted and still a risk · ISO/IEC 18004 explicitly allows it and asks a reference decoder to retry inverted. Common decoders decline to. It is a warning in our studio rather than a block, because it is legal and it does work on most phones, and it is not something to discover on a run of ten thousand.

Why a scanner's red light breaks colour pairs that look fine

This is the part almost no printing guide carries, and it is the one that saves a retail run. A fixed barcode scanner does not see colour. It reads in red light, around 660 nm, and it decides light from dark by how much of that red comes back. So the safe set of colours is decided by behaviour at one wavelength, and it is counterintuitive in a way no contrast checker can catch.

Red on white failsred reflects red, so at 660 nm there is no edge · and our screen-side contrast grade for the pair is A while it does
Black on red passesred reads as white to the scanner, so the pair behaves like ink on paper · grade A as well, and this one holds at the till

That first row is the whole argument for not trusting a colour picker on a code destined for a shelf. Both pairs come out at the same grade on the contrast parameter, and only one of them works. It is also why our GS1 carrier generator offers ink and paper as a fixed list rather than a colour picker, and why the list is short:

  • Inks that absorb at 660 nm · black, dark blue, dark green, dark brown, dark violet. Every one of them is a dark colour, and that is not a coincidence.
  • Papers that reflect at 660 nm · white, yellow, orange, red, pale pink. Warm colours behave like white to a red-light reader, which is why a yellow or orange substrate is safe and a pale blue one is a question.
  • A colour contrast tool cannot answer this · it models what a human eye does with visible light. Ours will pass red on white with a comfortable margin, and it is right about the question it was asked and useless for this one. The two checks are kept separate on purpose.
  • A photograph cannot answer it either · when we grade a photo of a printed symbol we say so in the report: behaviour at 660 nm is not determined, because a colour sensor cannot predict it. A red bar photographs beautifully and is invisible to a till.

If your code will only ever be read by phone cameras, this section is a caution rather than a rule. If it will pass a fixed scanner, a conveyor or a point of sale, it is the rule.

If it is going on a product, the numbers change

Retail has its own sizing, and it is stricter than the phone-camera floor above. GS1's guidance for a 2D code carrying a Digital Link on a consumer unit gives an X-dimension, which is the width of one module, of 0.495 mm as a target inside a range of 0.396–0.99 mm. At the target, the 25-module symbol from the table above prints 16.34 mm square with its quiet zone included.

Those are for a 2D symbol and only a 2D symbol. A linear barcode has quite different figures: a nominal EAN-13 module is narrower than the bottom of that range, so applying the 2D numbers to a barcode is wrong in both directions. It is also why our photo analyzer refuses to print-grade a linear symbol rather than applying the wrong constants to it. GS1 Digital Link covers what we generate for packaging, and every carrier ships with a spec sheet carrying its own X-dimension, quiet zone and print size so the figures travel with the artwork.

Print advice that is common and wrong

  • "Any high-contrast colour pair is fine" · not for anything a fixed scanner will read. See the 660 nm section above. This is the single most expensive mistake on this page because it is invisible until the pallet reaches a store.
  • "Invert it for a dark background and it still works" · sometimes. It is permitted by the standard and refused by common decoders, so it is a coin toss on the cheapest reader in the chain. On a poster read by phones it is usually fine. On a label it is a gamble.
  • "Raise the error correction to make it more reliable" · raising it adds modules, so at the same printed width every module gets narrower. It is the right move for a code that will be scuffed, and the wrong move for a code that is already too small.
  • "A minimum size of 2 cm" · a rule of thumb that happens to be right for short payloads and wrong for long ones. Count the modules instead, or read the minimum width off the generator, which does the arithmetic for you and is correct for every payload.
  • "Fully separated circular modules look nicer" · they do, and the gaps break the sampling grid. That style decoded at two of six sizes on our ladder, so our picker does not offer it at all, while designs saved before that rule are preserved rather than silently rewritten.
  • "Print it once and check it on your phone" · a phone is the most forgiving reader in the chain and it is running every recovery trick it has. A code that needs those tricks passes your test and fails somebody else's.
  • "Laminate for durability" · worth doing, and it introduces glare, which is a different failure. Matt laminate over gloss, and check the code at an angle under the lighting it will actually live under.

Before the run, and after it

Two checks worth the ten minutes. Before printing, export at the physical width you intend and measure the file rather than the screen. Our free QR code generator shows the minimum print width and the distance a design reads from as you edit it, without an account. The signed-in studio adds the contrast grade, a decode check that renders the design and reads it back before you commit to it, and a printable proof sheet with the code at its true physical size for whoever signs off the run.

After printing, photograph the finished piece and read it back with our free decoder, which runs every recovery option a phone camera gives up on. Be careful how you read a pass: a photograph shows one print under one light, and it can demonstrate a quiet-zone violation while never certifying compliance. If a code that used to work has stopped, the cause is usually not the print at all, and why did my QR code stop working is the diagnosis to run first.

One thing printing cannot break, in either direction: a code's payload is fixed when it is created, so re-exporting artwork at a new size, in a new colour or with a new frame never changes what the printed pattern encodes. Size is a property of the file, not of the code, and there is no line on our rate card for it. A code costs 1 credit to create, once, and 1 credit per scan, with credits valid 18 months and no subscription. Our own failure mode, since this page is about things going wrong after the press run: at a zero balance scans keep resolving through a published grace window of 14 days or a share of your last top-up, whichever ends first, after which a scanner sees a paused page saying whose code it is, never an ad. Topping up resumes the same printed code instantly.

Questions

How small can a QR code be printed?

Work from the modules, not from a rule of thumb. One module needs about 0.4 mm for a phone camera at arm's length, so a 25-module symbol carrying a short link wants roughly 10 mm of symbol, and a 61-module symbol carrying a full contact card wants about 25 mm. Add the quiet zone and those become artwork boxes of about 13.2 mm and 27.6 mm.

How far away can a printed QR code be scanned?

About 10 times its printed width, which is the ratio our own studio quotes and the one every sizing calculator uses. A 10 mm code reads from roughly 10 cm. Reverse it for a poster: a code meant to be read from three metres needs to be about 30 cm across, and no amount of error correction substitutes for the width.

How much white space does a QR code need around it?

4 modules of clear space on all four sides, and it is part of the symbol rather than a design margin. A 2-module border still reads on a phone in good light, which is why the mistake survives proofing and then fails on a fixed scanner. Nothing may print inside it: no rule, no fold, no caption, no torn edge.

Can I print a QR code in colour, or light on dark?

Dark on light with a real difference in lightness is the only combination that is safe everywhere. Inverting is legal · ISO/IEC 18004 permits light-on-dark and asks a reference decoder to retry inverted · but common readers decline to, so it works on most phones and is a genuine risk on the cheapest scanner in the run. Pale, pastel and low-lightness pairs are worse than they look: some of them decode at one size and fail at the next.

Why does a red QR code scan on my phone and fail at a till?

Because a retail scanner reads in red light, around 660 nm, and red ink reflects red. To that scanner there is no edge between a red bar and white paper, however good the code looks to a human eye or to a colour contrast checker. The reverse is true too: black on a red background reads fine, because red behaves like white at that wavelength.

Does a taproute code cost more to print big?

No. Size is a property of the file you export, not of the code, and the rate card has no line for it: 1 credit to create a code, once, and 1 credit per scan, with credits valid 18 months. Exporting again at a different width costs nothing, and re-exporting never changes what a printed code encodes.