Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

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.

View as MarkdownPaste this page into any AI assistant — it is plain, portable Markdown.

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