Guide #5 • QR code colors that scan5 min readQ4 2026 (Quarterly Policy & Standard Verified)

QR Code Colors and Contrast That Scan Reliably

Which colours work for QR codes? Contrast rules, light-on-dark risks, gradients and logos that keep codes scannable.

E
embedro Editorial Team
Standards & Systems Research, embedro
Last reviewed: October 2026
Contrast Safe

Open Color & Contrast Studio

Customize dot styles, brand palettes, and quiet zones with real-time contrast checking.

Try Tool Now

Colour is the fastest way to make a QR code look like your brand and the fastest way to make it stop working. A phone camera does not see hue the way you do. It looks for dark squares on a lighter background and measures the difference in brightness. This guide explains what to keep, what you can change, and how to test a colourful code before you print it.

Optical Scannability

Contrast Ratios & Camera Sensor Behavior

WCAG / ISO 18004
21.0 : 1
Black on Pure WhiteMaximum detection reliability across phone camera sensors
8.4 : 1
Deep Purple on WhiteExcellent brand aesthetics with high contrast safety
1.4 : 1
Yellow / Pastel on WhiteFatal Failure: Sensor cannot threshold dots from background
Why Inverted Codes (Light on Dark) Fail on Cheap Phones:

Standard QR decoding algorithms look for dark pixel clusters surrounding the three corner finder patterns. When you place white dots on a dark background, older camera sensors and QR scanner firmware (common in entry-level phones) fail to register the orientation anchors. Keep corner finder eye frames solid and darker than the background.

What a scanner actually looks for

Scanners find the three large corner squares, work out the grid from them, and then decide for every small square whether it is dark or light. If the dark and light areas are too close in brightness, the decision gets unreliable. Brightness contrast matters far more than the colour itself.

Start with dark on light

The safest design is a dark code on a plain, light background. Black on white has the highest contrast and works almost everywhere. Dark blue, dark green, deep purple and charcoal on white or cream are all good choices.

How much contrast is enough

As a guide, aim for a contrast ratio of at least 4 to 1 between the dark squares and the background, and higher is safer. Black on white is about 21 to 1. A quick check: convert your design to greyscale. If the code looks washed out in greyscale, it will struggle on a phone too. Do not rely on hue differences alone, because people with colour vision deficiency and many cameras see brightness, not colour.

Colours to avoid

Pale colours on white, such as light yellow, light grey or pastel pink.

Dark codes on dark backgrounds.

Pure red or orange on white. They can be weak on some scanners, particularly older or laser-based ones.

Two mid-tone colours of similar brightness, such as green on blue.

Light-on-dark and inverted codes

A light code on a dark background is called an inverted code. Many modern phone cameras read it, but some scanners and apps do not. If you must use one, test it on several phones and apps, and do not use it for anything important such as payments.

Gradients and multiple colours

Gradients are fine as long as the lightest part of the gradient is still clearly darker than the background. Keep the three corner squares dark and solid, since scanners lock onto them first. Avoid rainbow gradients that cross into pale areas.

Backgrounds

Do not place a code directly over a photo or a pattern. Put it on a solid light panel, with a clear margin around it, and keep text and graphics out of that margin. A transparent background over a busy image is a common cause of failed scans.

Logos in the centre

A logo hides part of the code, so it uses up some of the code's spare error correction. Keep the logo to about a fifth of the code's area and never more than about a quarter, use high error correction, and keep strong contrast between the logo area and the surrounding squares. Simple logos work best.

Print changes colours

Screens and printers do not show colour the same way. A colour that looks dark on screen can print lighter on paper, especially on uncoated stock. Always test a printed sample, and avoid light tints and very thin lines in your design.

Test checklist

Check the design in greyscale for clear contrast.

Run the scannability check in the generator.

Print one copy on the final material.

Scan with at least three phones, in the real lighting, from the real distance.

Fix anything that fails, then print.

Key Takeaways

Brightness contrast decides whether a code scans. Hue does not.
Dark on light is safest. Keep the corner squares dark and solid.
Use solid backgrounds, keep logos small and test printed samples.

Related Generators & Guides

Embedro QR Engine

Ready to generate your custom QR code?

Create high-contrast vector PNGs, SVGs and print-ready PDFs with custom brand logos and zero ads.