Contrast is what scanners read
Scanners decide whether each module is dark or light by its brightness, not its hue. What matters is the difference in luminance between the foreground and background. Black on white gives the most margin, but navy on cream or dark green on pale yellow can work just as well.
Low contrast is one of the most common reasons printed codes fail. Gray on gray, pastel on white and red on black all look distinct to the eye in good light but can blur together for a camera in dim or colored light.
Dark on light, not the other way round
QR codes are designed with dark modules on a light background. Inverted codes, with light modules on a dark background, are read by many modern phone scanners but not by all of them, so they risk failing for part of the audience. If a dark design is needed, placing a normal dark-on-light code on a light panel is the safer choice.
Practical color guidance
Choose a foreground that stays dark in grayscale and a background that stays light. A quick check is to convert the design to grayscale and see whether the code still looks crisp. Avoid gradients that make parts of the code much lighter, and avoid glossy or metallic finishes that create glare.
- Keep dark modules dark and the background light
- Check the design in grayscale before printing
- Avoid low-contrast pairs such as gray on gray or yellow on white
- Avoid reflective foils and varnish over the code
- Keep the quiet zone the same light color as the background