QR3D Craft

Which filament pairs work and which ones ruin the scan

By · 6 min read · Updated 25 October 2026

Leer en español

A QR reader does not see colour: it turns the image to greyscale and looks for light and dark. That explains why combinations that look lovely never scan, and why glossy filament causes more trouble than anything else.

The reader sees luminance, not colour

The first thing any scanning app does with the camera image is throw the colour away. It turns each pixel into a grey value between 0 and 255 and decides from there what is a dark module and what is light background.

The consequence is counter-intuitive: two colours that look very different can be almost the same grey. The moment they are, the code stops existing as far as the reader is concerned, however good it looks on the table.

The classic case is red on black. To the eye they are opposites; in greyscale, a saturated red lands around 30 % luminance and PLA black sits at 10 %. Twenty points out of a hundred. A new phone in good light sometimes gets it. An ordinary phone in a restaurant under warm light does not.

The rule: what you need is not for the colours to be different, but for one to be light and the other dark. If you squint at the piece and can still make out the grid, it works. If it turns into one even patch, it will not read.

The squint test

It sounds like a joke and it is the best checker there is. Squinting blurs the image and cuts the colour information reaching your brain, which is roughly what the reader does. Run this test on the on-screen preview before printing and you throw out 90 % of the bad combinations in two seconds.

If you want something more objective: take a screenshot of the preview and turn it black and white in any editor, including your phone's gallery. What you see there is, literally, what the reader sees.

Pairs that work

BaseCodeNote
WhiteBlackThe most contrast there is. When in doubt, this one.
WhiteNavy blueAlmost as good and less severe.
Beige or boneChocolate brownCommon in hospitality. Warm and perfectly readable.
Light greyBlackIndustrial look, contrast to spare.
YellowBlackYellow is the lightest colour filament comes in. Very high contrast.
WhiteBottle greenWorks well if the green really is dark.
Light orangeBlackGood visibility at a distance, useful in workshops.

Pairs that do not work

BaseCodeWhy it fails
BlackRedNearly equal luminance. The most attempted and the worst result.
BlackNavy blueBoth are dark. In grey they are the same tone.
Bottle greenNavy blueSame problem exactly.
Mid greyDark greyNot enough difference for the reader's threshold.
RedBrownPractically the same grey.
AnythingClear or naturalNatural PLA lets light through and the module loses its edge.
Measured contrast of the most common filament pairsWhite with Black: 18.0 to 1. White with Bottle green: 13.4 to 1. Yellow with Black: 12.2 to 1. Bone with Chocolate: 10.2 to 1. Black with Red: 3.1 to 1. Mid grey with Dark grey: 2.1 to 1. Black with Navy blue: 1.3 to 1.Contrast ratio (WCAG). Below 3:1 the reader starts to fail.White + Black18.0:1White + Bottle green13.4:1Yellow + Black12.2:1Bone + Chocolate10.2:1Black + Red3.1:1Mid grey + Dark grey2.1:1Black + Navy blue1.3:1
The figures are worked out with the WCAG luminance formula, the same one the reader uses when it turns the image to greyscale. Hue does not count; the difference in lightness does.

The real enemy: shine

There is one factor that ruins codes even with perfect contrast, and that is the finish of the filament.

A silk PLA, or one with glitter or a metallic effect, gives specular reflection: instead of scattering light in every direction the way a matte material does, it bounces it back like a mirror. The result is that, depending on the angle, a white glare appears over the code and the reader takes it for a light area. Half the grid disappears at exactly the moment somebody brings a phone close, because their own screen and the ceiling light are behind them.

The worst part is that in the hand, looking at it, the piece looks great. The problem only shows up with a camera and only from certain positions, so it is the kind you discover after you have printed fifty.

The light where the piece will live

Two details that change the result and have nothing to do with the filament. If the piece is going to live outdoors there is a third, which is that the colour goes: reds and blues lose intensity long before black does, and the contrast goes with them. That is in the outdoor guide (in Spanish).

If you only have one colour

It can be done, but you have to accept a worse result. A single-colour QR only reads by the shadow of the relief, so it depends entirely on the lighting. If that is your situation:

There is a variant worth knowing about before you decide: instead of raising the modules, engrave them (in Spanish). Sunk in, they sit in shadow, so they come out dark on a light background, which is the right polarity; in relief it is the other way round, the modules are what catches the light and the code comes out inverted.

Even so, the honest recommendation is to get hold of the second filament. A spool of matte black PLA costs very little and solves the problem at the root.

Try it on screen before you print

The generator has a 3D preview in whatever colours you pick. Open it, turn it round and give it the squint test before spending a single gram of filament.

Try some colours

Keep reading