Design
Halftone QR codes
A halftone QR code subdivides each module into a 3×3 grid, keeps the centre subcell at the module's true dark or light value, and lets the outer subcells carry a photograph's tones. Decoders sample module centres, so the code still reads while the texture shows the image. Margin drops, so verify on real phones.
The 3×3 subcell trick
A halftone QR code exploits one precise fact about decoders: they sample luminance at each module's centre, not across its whole area. So divide every module into a 3×3 grid of subcells:
| Subcell | Carries |
|---|---|
| Centre (1 of 9) | the module's true dark or light value, untouchable |
| Outer ring (8 of 9) | the halftoned tones of your photograph |
The centre subcells, one-ninth of each module, keep the code machine-readable. The other eight-ninths render the image as halftone dots, the way newspapers print photographs. Viewed at arm's length the eye blends subcells into a picture; the decoder, sampling centres, still sees a valid grid.
Why this beats diffusion art for reliability
Unlike AI-generated art codes, where damage is diffuse and unbounded, halftoning is structured, deterministic damage: the centre of every module is correct by construction, and only the surroundings carry noise. A good halftone generator produces the same scannable output every time, no generate-and-cull lottery. The finder patterns, quiet zone and timing rows are typically left fully solid, so the code's structure stays pristine.
The risk profile
The margin cost is real, and it concentrates in two places:
- Blur mixes subcells. Camera shake or a missed focus smears neighbouring subcells into the centre sample. A plain module survives blur well (its whole area is one value), but a halftone module's centre is surrounded by deliberately wrong luminance on eight sides.
- Print must resolve subcells. Each subcell is one-third of a module wide. A plain code is safe down to about 0.5 mm modules at 300 DPI; a halftone module needs its subcells to hold that detail, so treat ~1.5 mm as the halftone module floor, three times the usual. For a version 2 code (25 modules plus a 4-module quiet zone each side) that means roughly 5 cm printed width minimum, versus the 2 cm floor for a plain code. The resolution arithmetic behind this is in QR code DPI for printing.
Angle and distance also cost more than usual: at 10× width, modules span a few camera pixels and subcell texture pushes centre samples toward grey. Keep halftone codes for close-range scanning (hand-held cards, packaging, book covers), not posters across a room.
Practical settings
Use error correction Q or H; the centre-sample trick carries most of the load, but thresholding on textured modules is never as clean as on solid ones, and print and lighting will take their share. Prefer high-contrast source images: a photo that is mostly mid-grey halftones into visual porridge and helps neither the eye nor the decoder. Then verify the final artwork decodes and test on phones at the distances the piece will actually be scanned; the protocol in testing diffusion codes applies unchanged.
FAQ
How does a halftone QR code work?
Each module is subdivided into a 3×3 grid. The centre subcell keeps the module's true dark or light value, and the eight outer subcells display the halftoned image. Decoders sample module centres, so the code decodes while the texture shows the photograph.
Are halftone QR codes reliable?
More reliable than AI-generated art codes, because the damage is structured and every module centre is correct by construction. They still carry less margin than plain codes, particularly under blur and at distance, so verify with a real decoder and multiple phones.
How big should a halftone QR code be printed?
Around three times the plain-code floor. Subcells are one-third of a module, so treat 1.5 mm as the minimum module size (roughly 5 cm total width for a version 2 code) against the 2 cm minimum for a plain equivalent.
What error correction level do halftone codes need?
Q or H. In principle the centre-sampling trick preserves every module, but textured modules threshold less cleanly than solid ones, and printing, glare and camera angle consume the remaining margin. H costs density, so shorten the payload first.
Try it: free, no signup
Related
- QR code design best practices: seven rules ranked, The seven design rules that decide whether a styled QR code scans, ranked by how often breaking them kills codes, with the number behind each rule.
- Artistic and AI-generated QR codes, How ControlNet-style art QR codes keep module luminance inside an image, why their failure rate is high, and when an art code is the right call.
- Dot-style QR codes: how far circles can go, Dot modules are circles at 84% of the cell width, about 55% of the ink. Why that works, the density limit where it breaks, and why the eyes stay solid.
- What DPI should a QR code be printed at?, Print QR codes from vector artwork (SVG or PDF), and DPI becomes irrelevant, because the RIP renders exact edges at the device's native resolution. If…