A QR code is a drawing of data. Redraw it in your brand and it stays data — up to the exact point where it doesn't. The failures are not mysterious; they come from four measurable places, and every one of them can be checked by a machine before anything is printed.
Contrast is not negotiable
Scanners binarise the image: every module becomes either ink or paper. Brand-coloured modules are fine when they stay dark against a light background — navy on cream scans all day. What fails is tone-on-tone: a gold code on white looks premium on a screen and reads as blank paper to a sensor in a dim restaurant. Aim for the darkest module colour your brand allows, and never invert casually — light modules on dark grounds work, but only when the whole grid, quiet zone included, is inverted consistently.
The quiet zone is part of the code
The empty margin around the grid — four modules wide — is how a scanner finds the edges. Designers crop it because it looks like wasted space. It is the opposite: artwork, borders and text placed inside it don't decorate the code, they amputate it.
Logos eat error correction
A centre logo works because QR codes carry redundancy — up to 30% of the grid can be damaged and still decode at the highest correction level. But that budget is shared: a logo covering 25% of the grid on top of a stylised dot pattern and a scuffed print leaves nothing in reserve. The rule: if there's a logo, generate at level H and keep the logo under a quarter of the area. Our builder enforces both automatically.
Fancy modules fail at the eyes first
Rounded dots, diamonds, stripes — most survive, because the format was designed for damaged industrial labels. The sensitive parts are the three finder squares in the corners. Style those too aggressively and the scanner never finds the code at all, which reads as “broken” even though every data module is intact.
Verification beats taste
None of these rules require judgement — they require a test. Every pattern and corner style PIXELQODE ships is decoded by machine before release, and codes with logos are re-verified at export resolutions. That's the whole trick: not braver design, but design with a pass/fail gate. Try a style, then scan the result yourself — or let the gate do it.