Choosing filament colors for a scannable QR code
A QR code is only as readable as the contrast between its two colors. Choosing filament is where most printed QR codes are won or lost, and it is easy to get wrong because colors that look very different to the eye can look almost identical to a phone camera.
Think in lightness, not in hue
Phone cameras convert the image to light and dark before decoding. What counts is the difference in lightness between the code and the base, not whether one is red and the other is green. A useful trick: take a photo of your two filaments and convert it to grayscale. If the two grays are easy to tell apart, the pair will scan. If they merge, choose another pair.
Pairs that usually work
- Black on white
- Dark navy on pale gray
- Dark green on cream
- Dark brown on light beige
- White on black (test on several phones, because some scanners prefer dark modules)
The common thread is a very dark filament next to a very light one.
Pairs to avoid
- Red on orange, blue on purple, green on teal: similar lightness.
- Yellow on white: too little contrast.
- Two mid-tones such as medium gray on medium blue.
- Metallic or sparkle filaments against a similar color.
Finish matters: matte, silk and translucent
Matte filaments scatter light evenly and tend to photograph cleanly. Very glossy or silk filaments can reflect a light or window straight into the camera, washing out part of the code. Translucent filaments let the layer underneath show through and can reduce contrast. If you love a glossy look, use it for the base and keep the code itself in a matte filament.
Material and surface
Different materials have different default finishes. PLA is easy to find in a huge range of matte and silk colors. PETG tends to come out glossier, which can add reflections. If scanning reliability is your priority and the object stays indoors, a matte PLA pair is the simplest starting point.
Brand colors
If your brand color is close in lightness to your background, do not force it into the code. Use the brand color for the object body or for a frame and make the code itself a clearly lighter or darker filament. A recognizable object that scans every time beats a perfectly on-brand object that sometimes does not.
Light changes color
Warm indoor bulbs shift colors toward yellow, and bright sunlight can overexpose light filaments. Test the object in the lighting where it will actually live, such as a dim restaurant table or a sunlit window. See our guide to QR size and contrast for the sizing side of the same problem.
Lightness contrast also helps people with color blindness
Because the advice here is built on lightness rather than hue, it also works for people with most forms of color vision deficiency. A dark navy code on a pale base reads clearly whatever the viewer's color perception, while a red-on-green pair can disappear for some viewers. That is another reason to choose a pair that differs strongly in brightness, even if you would not call the colors a perfect match.
Suggested pairs by use case
- Restaurant table stand: dark brown or black code on a cream or white base. It looks warm and reads well in dim light.
- Wi-Fi plaque for a rental: black on white, the most neutral and least likely to clash with the room.
- Keychain or giveaway: your brand color for the body and a very dark or very light filament for the code.
- Memorial or outdoor plaque: a light code on a dark slate-colored base, tested carefully on several phones because light-on-dark is the less common polarity.
Keep the filament consistent
Two spools sold under the same color name can differ slightly between batches. If you plan to print a batch of identical objects, buy enough of both colors in one go and keep the spools dry, since filament that has absorbed moisture can print with a rougher, duller surface that scatters light unevenly. A clean nozzle also matters: stray specks of the previous color on the code add noise the camera has to ignore.
Do not decide from the screen alone
Colors on a monitor, a render or a product photo are not the colors you will hold. Rely on the grayscale test above and on a real printed sample, and treat the screen preview in the tool as a guide to the layout rather than a final color check.
A simple test routine
- Print a small test with your two filaments.
- Scan it with two different phones, ideally one iPhone and one Android.
- Scan from the real distance and in the real lighting.
- If it fails, increase contrast first, then size, then check for glare.