Skip to content

Making a QR code in colour

You can put a QR code in brand colours. Scanners just do not see colour. They convert the photo to greyscale and only ask what is lighter and what is darker, so picking colours is really picking a brightness gap.

To a scanner everything is grey

A scanner reduces every pixel to one brightness value and calls it dark or light relative to its neighbours. Red and green look nothing alike to you, but if their brightness is similar they are the same grey to the scanner.

So there is only one thing to check: is the dot colour much darker than the background?

What works and what does not

Colour pairs on a white background
Dot colourResultWhy
Navy, deep green, dark brownReads wellClose to black in brightness
Bright red, orangeRiskyRegisters lighter than it looks
Yellow, sky blue, limeFailsBarely darker than white
Mid grey, #666 or darkerMostly readsStarts failing in poor light

Bright red is the classic trap. It looks loud, but its brightness sits in the middle, and under strong light it can blend into a white background. If your brand colour is on the light side, keep the dots dark and use the brand colour for a frame or the surrounding design instead.

Dark backgrounds

White dots on black look sharp, but not every scanner reads them. The spec assumes dark modules on a light background, and whether an app also tries the inverted image varies from one app to the next.

That is why this site keeps its preview on white even in dark mode. Plenty of people scan straight off a screen, and an inverted code shown there would fail on some phones.

If a code has to sit on a dark background, give it a white box with a quiet border and draw dark dots inside. The spec recommends a border four modules wide.

Gradients and transparency

A gradient on the dots is fine as long as its lightest end is still clearly dark. A gradient on the background is riskier, because one end easily ends up close to the dot brightness.

Transparent PNGs deserve care too. On a white page they are fine, but the moment someone drops the image onto a dark slide or photo the contrast disappears. This site always fills the background white when saving for that reason.

The easiest check

Convert your finished code to black and white. Any photo app's mono filter will do. If the dots stand out clearly from the background in greyscale, the scanner will see them. If they blur together, darken the colour.

Measured limits for dot size and grey are in making it scan reliably.