QR code colours: what scans, what doesn't, and how to use your brand palette
A black-and-white code is safe but boring. Colour works when you follow three rules, and our scan check catches it when you don't.
Rule 1: dark modules on a light background
Scanners expect dark squares on light. Navy, forest green, deep purple, burgundy and charcoal all read perfectly. Light pattern on dark fails on many Android phones, and pastel modules fail everywhere.
Rule 2: contrast ratio above 4:1
That's the same threshold used for readable text. Black on white is 21:1; navy on cream about 12:1; orange on white about 3:1, which is too low. The generator shows the ratio and warns below 4:1.
Rule 3: keep the corner squares strongest
The three big squares are what a phone finds first. Give them the darkest colour in your palette; the small modules can be a lighter tint of the same colour.
Gradients
A gradient is fine as long as both ends are dark enough against the background. Dark blue to dark teal works; blue fading to white does not, because half the modules disappear.
Codes on photos
Put a light panel behind the code, or let the generator add a soft backing behind each module. A code straight onto a busy photo loses contrast somewhere, and that somewhere is where the scan fails.
A palette that always works
| Use | Colour | Why |
|---|---|---|
| Modules | Your darkest brand colour | Highest contrast against paper |
| Corner squares | Same or darker | Found first by the scanner |
| Background | White or your lightest neutral | Keeps the ratio high on any paper |
| Frame and caption | Any brand colour | Not part of the code, no rules |
| Logo | Full colour | It sits on top; error correction covers it |