QR Code Contrast Checker
Enter the colors a code is drawn in and the surface behind it. The checker returns the contrast ratio for the pattern and for the finder eyes, the luminance difference a camera actually sees, and whether the pair is safe to print.
The surface behind the code. Keep it near white - lightening the background is not a substitute for darkening the code.
The colour of the data modules.
The three corner squares. They have to stand out from the background as clearly as the pattern does - a scanner finds them first.
Preview
6.70:1
Judged on: Pattern contrast
Fine on a display, and short of the margin print takes away. Darken the code before it goes on paper.
Where this lands
Pattern contrast
6.70:1
Eye contrast
6.70:1
Camera luminance difference
176 / 255
Out of 255, on the BT.601 weighting a camera's grey channel is built on. The ratio weights green far higher than a sensor does, so the two numbers disagree most on saturated colour.
When a brand colour does not reach the target, darken the code rather than lightening the background - a colour two or three steps darker usually keeps its identity and doubles its ratio.
Contrast Is the One Variable Nobody Chooses
Module shape and size are decisions someone makes for a QR code. Colour is inherited from a brand palette written years before anyone thought about one - which is why it is the property that fails most often, and the one this checker exists to settle. The reasoning is in the minimum contrast scan test.

What a Decoder Actually Measures
A phone does not see colour when it reads a QR code. It converts the frame to a single grey channel and thresholds it in small blocks, deciding dark or light for each module against its local neighbourhood. Every bit of colour tolerance a code has is decided in that one step.
- The decoder's floor sits near 1.24:1 - the point where a common binarizer stops treating a block as having any content at all - and is nowhere near where anything should be designed.
- The screen target is 4:1, which is where the generator's own contrast badge turns green.
- The print target is 7:1, because paper reflectance, ink spread, glare and distance each take a share of the margin.
Two Numbers That Disagree
A contrast ratio weights green at 71% of perceived brightness, following the human eye. A camera's grey channel weights it at 59% and adds no flare term at all. The two measures agree on greys and blacks and disagree most on saturated colour, which is where QR codes actually fail.
Pure green on white is the clearest case: 1.37:1 as a contrast ratio, barely above the decoder's own floor, but a luminance difference of 105 out of 255 in a camera's grey channel. One number calls it hopeless and the other calls it poor. Neither calls it printable, which is why this page reports both. Which palettes come out the other side is worked through in colored QR codes.

How to Check a QR Code's Colours
Four steps from a brand palette to a colour pair that survives print.
Generate a QR Code- 1
Enter the Background First
The surface behind the code, and it should be near white. Lightening a background is not a substitute for darkening a code: reflectance on paper is capped by the stock, so the top of that range is already spent.
- 2
Add the Pattern Colour
The brand colour exactly as it is specified, before any correction. Checking the corrected version first hides how far the original was from the target.
- 3
Check the Finder Eyes Separately
The three corner squares are what a scanner locates before it reads a single module. A code with dark modules and pale eyes fails at the first step, and the ratio for the pattern never gets tested.
- 4
Read the Worse of the Two
A QR code scans on its weakest pair, not on its average. The verdict above is taken from whichever of pattern and eyes has less margin.
Where Common Palette Choices Land
Five colours on a white background, measured both ways - the ratio a design tool reports, and the luminance difference a camera's grey channel sees out of 255.
Rules That Keep Colour Scannable
Ten habits that keep a brand palette between a design file and a code that still reads on paper.
Darken the Code, Not the Background
The background has to stay near white for reflectance to survive print, so the whole adjustment belongs on the dark modules. A colour two or three steps darker usually keeps its identity and more than doubles its ratio.
Design at 7:1 for Anything Printed
4:1 is the screen target and 7:1 is the print target, and the gap between them is what paper, ink spread, glare and reading distance consume. Treat 3:1 as the line below which nothing ships in any medium.
Give the Finder Eyes the Same Contrast
The three corner squares are located before anything is decoded. Styling them in a lighter accent colour than the pattern is the most common way a beautiful code fails at the very first step.
Never Put a Code Over a Photograph
Contrast is thresholded locally, so a photograph flips the decision mid-symbol: the same dark module reads as dark over a pale sky and as light over a dark shadow. Put the code on a flat panel instead.
A Gradient Is Safer Than a Photograph
A gradient across the modules keeps the local difference between dark and light intact everywhere, which is all a binarizer needs. Keep both ends of the gradient above the target rather than averaging to it.
Put the Brand Colour in the Frame Instead
The panel behind the code, the label under it and the call to action beside it can all carry the palette at full saturation. None of them costs a single point of contrast.
Check the Colour After CMYK Conversion
A bright RGB red or green loses saturation and shifts in CMYK, and the printed pair is the one that matters. Convert first, then check the converted values here rather than the on-screen originals.
Print the Dark Modules as 100% K
A four-plate rich black needs perfect registration to hold a 0.4 mm module edge. Typical sheetfed tolerance of around 0.1 mm is a quarter of that module, so single-plate black keeps every edge clean.
Treat Metallic and Fluorescent Inks as Unmeasurable
Gold, silver, foil and spot UV have no fixed reflectance value - they show whatever is in front of them, usually a light fitting. No ratio computed from a hex value describes them.
Confirm the Pair on Printed Stock
A ratio is a prediction about a file. Print the code at final size on the real material, look at it under the light it will live in, and scan it with two different phones before signing anything off.

Try the Colours in the Generator
KoloQR, a free QR code generator with circular and custom-shaped QR codes, runs this same contrast check live over the preview while you edit the palette - pattern, eyes and background.
Free, with no account and no watermark. Codes are generated in your browser, so the destination is never sent to a server.
Generate a QR CodeQuestions? Answered
Design to 4:1 for screens and 7:1 for print, and treat 3:1 as the line below which nothing should ship. Decoders technically work far lower - a common binarizer gives up around 1.24:1 - but that entire gap is spent on paper reflectance, ink spread, glare, distance and a moving hand.
Yes. Most current phone cameras read an inverted code, though some older scanners and industrial readers assume dark modules on a light background. An inverted code also spends more of its margin, so keep the ratio comfortably above 7:1 and test on real hardware before printing a run.
Because green sits where the eye and the camera both rate it poorly against white. A typical brand green such as #22c55e is 2.28:1 on white, below the shipping line. Darkening it to #166534 gives 7.13:1 - the same hue, now clearing the print target with margin.
Yes. The three corner squares are what a scanner locates before it decodes anything, so a code with strong pattern contrast and pale eyes fails at the first step. This checker reports both figures and takes the verdict from whichever is worse.
Because a QR code is read by a camera, not by an eye. A contrast ratio weights green at 71% of perceived brightness; a camera's grey channel weights it at 59% and adds no flare term. The two disagree most on saturated colour, and that disagreement is the finding.
A light grey works if the pair still clears the target, but it costs margin for nothing. Paper caps how bright a background can print, so the top of the range is already spent - every point of contrast a grey background gives up has to be taken back out of the dark modules.
Not by itself. What matters is the difference between the modules and whatever is behind them, measured locally. A pale, flat tint behind a very dark code is usually fine; a mid-tone brand colour behind a mid-tone code is the pair that fails, whatever the two look like separately.
It is the maximum: 21:1 as a ratio and the full 255 in a camera's grey channel. Nothing outperforms it. A near-black navy such as #0f172a reaches 17.9:1 and 232 out of 255, so it gives up almost nothing measurable while still reading as a brand colour.
Yes, and usually for the worse on saturated colour. Bright RGB reds, greens and oranges lose saturation and shift in hue when converted, so a pair that cleared 7:1 on screen can land below it on press. Convert first, then check the converted values here.
No. Error correction repairs damaged or covered modules once the symbol has been located and read as dark and light. If the camera cannot separate dark from light in the first place, there is no data for the recovery to work on. Contrast is a precondition, not a variable to trade.
Yes, indirectly. Rounded, dotted and other decorative modules put less ink inside each cell than a full square, so a decoder searching for the finder pattern ratio sees weaker evidence. A styled code has already spent some margin before printing takes its share - give it more contrast, not less.
Keep Exploring
Pages that pick up where this one leaves off - the same setting, the same kind of code, or the next thing worth deciding.
Creative QR Codes
Design directions and real examples for QR codes that look intentional without giving up scan reliability.
Colored QR Codes
Put your palette on a QR code without breaking it: which color goes on the pattern, and which belongs on the frame.
Why a QR Code Is Not Scanning, and How to Tell Which Fault You Have
The three ways a QR code fails - never detected, read badly, or read perfectly into a broken destination - and how the symptom tells you which one you have before you measure anything.
Nine Things to Check Before a QR Code Goes to Print
The nine checks between a QR code file and a print run that works, each with the number it has to clear and the page that explains why.
Fifty QR Code Colour Pairs, and Which of Them Survive Print
Fifty QR code colour pairs with the contrast ratio computed for each, grouped by whether they clear the print threshold, the screen one, or neither.
QR Code Scanner
Read what a QR code carries from a screenshot, a photo or an export, decoded in your browser and never uploaded.
Why KoloQR?
- Create QR codes for websites, menus, Wi-Fi, PDFs, and business cards
- Customize colors, logos, and unique shapes
- Download high-quality PNG and SVG files
- Built for both print and digital
