Artistic QR codes: blending a picture into a scannable code
Artistic QR codes keep each module's average brightness while varying the detail inside it, so a picture shows through and a scanner still reads the same data.
5 min read · Updated
Most of the “AI QR art” online is produced by a diffusion model on someone else's server, and a fair share of it does not scan. The halftone method used here is more modest and much more reliable. It never invents pixels; it only decides how to shade the modules the code already has.
How halftone QR art works
A scanner does not measure every pixel. It samples each module and decides whether that square is mostly dark or mostly light, which leaves room for detail inside the module. A module that has to read as dark can be a solid black square, or a dense cluster of black dots with some of your photograph showing between them. Both average out as dark, so both decode the same way.
The method splits every module into a 3×3 grid of sub-pixels. The centre one is a solid anchor dot, so there is never any doubt whether the module is dark or light, and the eight around it carry image detail. The result is a picture at the resolution of the sub-grid and a code that still reads.
How to make QR code art
- Open QR art and enter the link. Keep it short: every extra character makes the modules smaller, and the picture with them.
- Upload an image. High-contrast subjects work well; busy, flat or low-contrast images do not.
- Raise the blend slider until the picture is recognisable, and back off as soon as the scan self-test badge stops passing. The badge runs a real decode of the rendered canvas in your browser.
- Export the PNG and test it on a phone before you use it anywhere.
Error correction is fixed at H for artistic codes. Without that much redundancy, they would not survive this treatment.
Choosing an image for QR art
- Pick a strong silhouette. A face, a logo shape or a single object against a plain background works best, because the picture comes through as tone rather than fine detail.
- Avoid small text and thin lines. At three sub-pixels per module, they disappear entirely.
- Look for mid-tones. A photo that is mostly pure black or pure white gives the halftone nothing to work with.
- Crop square and centre the subject. The middle of the code shows the most of the image.
There is a trade-off. The more of the picture you let through, the closer each module gets to the point where a scanner can no longer tell dark from light. An artistic code is always less robust than a plain one, so use it where scanning conditions are good, and keep a plain code for packaging that has to scan in a dim warehouse.
Where artistic codes belong
They work best on posters, album covers, event invitations, social media posts and merchandise, where the code doubles as a graphic and people scan it standing still in decent light. They are a poor choice for menus in dark restaurants, small labels and anything people scan in a hurry.
Your photo stays on your device
The halftone engine, the encoder and the decoder all run in your browser. Your photograph is never uploaded, so it cannot be used to train a model, there is no queue and no per-image charge, and the page keeps working offline once it has loaded.
Safer ways to style a QR code
If the picture and the code keep fighting each other, try a lighter touch. Module shapes, gradients, per-eye colours and a captioned frame restyle a code without removing any data, and a centred logo makes it recognisably yours with far less risk. Start with those, and use halftone when you want the code itself to be the artwork.