Guides › Do custom QR codes scan?

Do custom & colored QR codes actually scan? We tested it.

Colored, gradient, dotted, logo-in-the-middle — the fancy codes look great, but half the internet warns they won't scan. So we ran the actual decode tests. Here's the data, and the three rules that keep a stylish code readable.

Updated July 2026 · based on 100+ generate-and-decode tests

Short answer: yes, custom QR codes scan — if you respect three limits. We generated codes across dozens of colors, module shapes, and logo sizes, then ran each one back through a decoder to confirm it actually reads. Most "custom QR codes don't work" horror stories come from breaking one of these three rules.

Rule 1 — Contrast is everything (4.5:1 or higher)

A scanner sees a QR code as dark squares on a light background. The instant your color gets too light, that distinction collapses. We tested foreground colors against a white background and measured the WCAG contrast ratio of each:

Foreground colorContrast vs whiteScans?
Black / near-black17–21:1Yes
Deep purple #7c3aed5.7:1Yes
Crimson #e11d484.7:1Yes
Emerald #0596693.8:1Yes
Sky blue #0ea5e92.8:1No
Gold #ca8a042.9:1No

The cliff sits right around 3:1. To leave margin for print, cheap camera sensors, and bad lighting, we recommend a contrast ratio of at least 4.5:1 — the same bar used for readable body text. That still leaves you every rich, saturated color: purples, indigos, magentas, deep teals, crimsons. It only rules out pastels and bright yellows on white.

Gradients are fine — as long as both ends clear 4.5:1. Since a gradient's midpoints sit between its two endpoints, gating both ends guarantees the whole code stays scannable.

Rule 2 — Dots and rounded shapes need higher error-correction

Turning the little squares into dots looks modern, but it removes ink — the gaps between dots give a scanner less signal. In our tests, dotted codes at the default error-correction level failed outright. Bumped to the high (H) error-correction level, they scanned every time.

Two details matter: keep the dots full-size (touching their cell edges — shrinking them to 90% starved the decoder), and always keep the three finder squares in the corners solid. Those corners are how a scanner locates and orients the code; dot them and detection falls apart.

Rule 3 — A center logo is fine up to ~25%

A QR code carries redundant data — that's how it survives a coffee stain. A center logo simply spends some of that redundancy. At the H error-correction level, a logo covering up to about 25% of the code's width reconstructed cleanly in every test. Past 30% it gets risky.

One gotcha we hit: a logo and dots on a very short link (a small code) can overwhelm the redundancy. The fix is to nudge the code to a slightly larger size so there are enough modules to recover — something a good generator should do for you automatically.

Make one that's guaranteed to scan

The vibestr studio bakes all three rules in — it checks contrast live and won't let you download a code that won't scan. Free, no signup.

Open the studio →

The one thing color can't fix: a dead link

A beautiful code is still a static code — it points at one URL forever. If that URL ever moves or the page comes down, the printed code is dead, no matter how good it looks. If you're printing on packaging, signage, or anything you can't reprint, use a dynamic code: it points at a redirect you can re-target anytime, and it keeps working for life.

Codes that never break

SolidQR makes dynamic codes that keep redirecting forever — edit the destination or see your scans anytime, even if you cancel.

See SolidQR → Or design one free

Frequently asked

Do colored QR codes scan?
Yes — if the color is dark enough. Aim for a 4.5:1 contrast ratio against the background. Anything below ~3:1 (pastels, bright yellow, light blue) starts failing.
What's the biggest logo I can use?
About 25% of the code's width, paired with high error-correction. Bigger than 30% and you're gambling.
Does a dark background work (light code on dark)?
It can, but many scanners expect dark-on-light. Keep the contrast high and test before printing — light-on-dark is riskier than dark-on-light.
Do QR codes expire?
A static code never expires. A dynamic code works as long as its redirect stays online — which is exactly what SolidQR guarantees for life.