CMYK conversion is why your code failed at the printer
A code designed on screen is in RGB; a press prints CMYK. The conversion moves colours — usually toward lower contrast — and a code that passed on screen can arrive under the line on paper.
WHAT THIS ARTICLE DOES AND DOES NOT TELL YOU✓Screens mix light (RGB); presses mix ink (CMYK). Many bright RGB colours have no CMYK equivalent and move when converted.✓Contrast should be computed from the converted colours, not the screen ones.✓Use 100% black (K) for modules, not rich black, so four plates cannot misregister around them.✓No measured colour shifts are given; they depend on the profile and the press.
Why colours move
A screen makes colour by adding red, green and blue light; a press makes it by layering cyan, magenta, yellow and black ink on paper. The range of colours each can make is different, and many bright screen colours — vivid blues, oranges, greens — lie outside what ink can reproduce. Converting a file to CMYK moves those colours to the nearest printable ones, which are usually duller.
For a QR code that matters because contrast is a ratio between the two colours. A brand blue that sat comfortably above the line on screen can drop below it when both its colour and the paper’s white shift on press.
Check contrast after conversion
Contrast is computable: the relative-luminance formula that WCAG uses for text applies to a code’s two colours exactly as it applies to type. The mistake is computing it from the RGB values in the design file. Convert to the CMYK profile your printer uses, read back the converted colours, and compute contrast from those. The scanability report on this site computes it for any two colours you give it.
Measure the contrast of the colours that will be printed, not the ones on your screen.
Use plain black, not rich black
Designers often set black as “rich black” — cyan, magenta and yellow under the black — to make large areas look deeper. On a QR code that is a risk: four plates must land exactly on top of each other, and any misregistration puts coloured fringes around every module, softening the edges a decoder relies on. Set the modules to 100% K only. It is the darkest thing a press does reliably in register.
If the code is not black, choose a colour that converts with plenty of contrast to spare, and ask the printer for a proof of the code at its real size.
What this article is not
It gives no colour-shift figures; they depend on the ICC profile, paper and press.
The contrast formula is WCAG 2.2’s, applied to QR modules; the minimum a decoder needs is not fixed by it.
Compute contrast for your two colours
The report computes the contrast ratio of a code’s dark and light colours, and flags a pair that is too close.
We’d like to count visits with Google Analytics and see where pages confuse people with Microsoft Clarity. Both set cookies, and nothing loads until you choose. Anything you type stays hidden from recordings.
Change it any time from “Cookie settings” at the foot of every page. Cookie policy