QR Codes Made Easy.
Home / Guides / QR code colors
Colors & contrast

QR Code Colors That Actually Scan

By Bud Hennekes, who built QR Codes Made Easy. Updated July 2026.
QR Code Colors That Actually Scan: featured image from QR Codes Made Easy

You can color a QR code almost anything as long as two rules hold: the pattern must be clearly darker than its background, and the contrast between them must stay strong (the tool I built warns below a 4 to 1 luminance ratio). Dark brand color on white or a pale tint scans great. Light-on-dark, pastel-on-white, and busy backgrounds are where codes quietly die.

What's here
  1. The two rules
  2. Combos that work, combos that fail
  3. Why inverted codes fail
  4. Branding without breaking it
  5. Print changes the math

The two rules

Every color question about QR codes reduces to two rules. Follow both and you can use nearly any color you like. Break either one and your code will fail for some meaningful slice of the people who point a phone at it.

Rule one: dark pattern, light background. Never the reverse. The squares that carry the data should be the dark color, and the space behind them should be the light color. A white pattern on a navy background looks sharp in a mockup and fails on a depressing number of real phones. More on that below.

Rule two: keep the contrast strong. It is not enough for the two colors to be different. They have to be different in brightness. A scanner does not see hue the way you do.

Both rules exist because of one step in how scanning works. Before a phone decodes anything, it binarizes the image: it converts every pixel to pure black or pure white based on brightness. Hue gets thrown away entirely. If your two colors end up on the same side of that black-or-white cut, the pattern disappears and there is nothing left to decode. Dark-on-light with strong contrast survives binarization. Everything else is a gamble.

Combos that work, combos that fail

Here is the honest list. The left column is safe to print. The right column is where codes go to die quietly, because they often scan fine on the newest phone in the office and fail on everyone else's.

WorksFails or risky
Black on white. The reference. Nothing beats it.White or yellow pattern on dark. Inverted. Many scanners cannot read it.
Navy on white. Dark enough to read as black after binarization.Pastel on white. Baby blue, mint, blush pink. Too little contrast; the pattern washes out.
Dark green on white. Same story. Forest green, not lime.Red pattern on green background (or similar mid-tone pairs). Looks contrasty to your eye, but both colors are similar in brightness, so they binarize to mush.
Dark red or maroon on white. Keep the red deep, not fire-engine bright.Any photo or gradient behind the code. The background brightness shifts across the pattern, so parts of the code flip the wrong way.
Charcoal on cream. Softer than black on white and still plenty of contrast.Glossy gold or metallic foil. The glare reads as random bright patches and breaks the pattern.
Dark brand color on a very pale tint of the same color. Navy on the faintest blue, forest on the faintest green. Cohesive and safe. 
Black on white
Navy on white
Dark green on cream
Maroon on white
White on dark
Pastel on white
Red on green
Yellow on dark

Notice the theme. The working column is always a genuinely dark color on a genuinely light one. The failing column is either inverted, low contrast, uneven, or shiny. If a combo you are considering fits any of those four words, pick again.

Why inverted codes fail

The QR spec was built around dark modules on a light background, and scanners were built to expect that. Plenty of modern decoders will try flipping the image and reading it inverted. Plenty of others will not, especially older phones, budget phones, and the embedded scanners built into payment terminals, ticket gates, and warehouse guns.

That gap is the whole problem. An inverted code is not broken everywhere. It is broken somewhere, and you do not get to choose where. When you print a code, you are printing for every phone that will ever meet it, not just yours. A code that only some phones can read is a broken code in print. There is no partial credit.

This one is sneaky because your own test will probably pass. You design the white-on-navy code, scan it with your recent iPhone, it works, you send it to the printer. The failures show up later, one confused customer at a time, and nobody tells you.

This is why the tool checks for it specifically. If you set a light pattern on a dark background, it warns you before you download, separately from the contrast check, because an inverted code can have perfect contrast and still fail. Use the swap-colors button and the problem is gone in one click.

Branding without breaking it

You do not have to settle for black. Here is the approach I recommend for putting your brand on a code without gambling with it.

Use your darkest brand color for the pattern. Most brand palettes have a deep primary: a navy, a forest, an aubergine, a near-black. That is your pattern color. Paste the hex straight into the tool's custom color field.

Use white or a near-white tint for the background. Pure white is safest. A very pale tint of your brand color also works and looks more designed. Keep it pale enough that you would call it "basically white" from across the room.

Put the accent around the code, not in it. If your brand color is bright orange or teal, it does not belong in the pattern. Use it in the frame, the call-to-action text, or the material the code sits on. The code itself stays dark-on-light, and the design around it does the branding.

A logo in the middle is fine. When you add one in the tool, error correction rises to the highest level automatically, so the code can afford the covered area. I wrote up the size limits in the logo size guide.

Transparent backgrounds work with one condition. The tool can export the code with no background at all, which is handy for dropping it onto a designed layout. But whatever surface ends up behind the pattern becomes the background, so that surface has to be solid and light. The tool flags this case too, since it cannot see your final layout for you.

Print changes the math

Everything above gets harder on paper. A screen is backlit, so it hands the scanner more contrast than the colors deserve. Paper only reflects whatever light happens to be in the room, and then the printing itself takes a cut.

Ink spreads slightly as it soaks in, which fattens the dark modules and shrinks the light gaps. Laminate and glossy stock add glare, which reads as bright noise across the pattern. And the room takes the biggest cut of all: a restaurant at dinner is running warm, dim light that flattens every color toward brown. A combo that barely clears the contrast bar on your monitor can fail completely on a table tent under that light.

So give print a margin of safety. If your combo squeaks past on screen, darken the pattern or lighten the background before you send it out. Then do the only test that actually settles it: scan the printed proof, in the room where it will live, with the oldest phone you can borrow. Not the design file. The physical object, in its real light. If something still refuses to scan, the troubleshooting guide walks through the usual suspects, and the print size guide covers the other half of print reliability.

A decent gut check: if you have to squint to tell the pattern from the background at arm's length, a scanner will do worse. Your eye is a decent first test, and the tool's warning is the second.

FAQ

Can QR codes be a color other than black?

Yes. Any sufficiently dark color works for the pattern as long as it sits on a light background. Navy, dark green, maroon, and charcoal all scan reliably. The pattern color matters much less than the contrast between the pattern and its background.

Can a QR code be white on black?

Avoid it. That is an inverted code, and while some scanners handle inversion, many do not, especially older phones and embedded scanners. A code that fails on part of your audience is a broken code in print. Keep the pattern dark and the background light, and do not print an inverted one.

What contrast do I need between the two colors?

Keep it strong. The tool warns when the luminance contrast between your two colors drops below a 4 to 1 ratio, and more is safer, especially for print, where ink spread, glare, and dim light all eat into the contrast you started with.

Can I put a QR code over a photo or gradient?

No. The area behind the pattern must be a solid light color, including the quiet margin around the code. A photo or gradient shifts brightness across the pattern, so parts of the code binarize the wrong way and the scan fails. Put the code in a solid light box on top of the image instead.

Why does my branded code scan on screen but not in print?

Screens are backlit and flatter your colors. On paper, ink spread, glare from laminate or glossy stock, and dim room light all reduce the effective contrast. A combo that barely passes on screen can fail on the printed piece. Test-scan the printed proof in the room where it will live.

Do colored codes work with a logo in the middle?

Yes. Color and a logo are separate concerns. When you add a logo in the tool, error correction rises to the highest level automatically to cover the hidden area. Just follow the same color rules: dark pattern, light background, strong contrast.

Make a code in your colors

Pick your pattern and background colors right in the browser. The built-in contrast warning catches risky combos before you print them. Free, no account, never expires.

Build your QR code