All work
Tools

Dither Encoding

A picture whose dither is the data.

Two tools that store data in the dithered grain of a photograph. DitherGlyph is the dense archival tier: text, voice, a 3D mesh, a face capture, any file, hidden in the arrangement of the dither itself. DitherCode is the camera tier: a chunky posterised picture a phone scans from across the room.

v1.0.0
Dither EncodingDither EncodingDither Encoding
The hero glyph; an ordinary portrait of Benjamin carrying a written message inside its grain. Nothing rides on top of the picture; the arrangement of the dither is the payload.
Dither Encoding interface
The maker: drop a photo, choose a look from fine to riso, pick pure or deep, then add text, voice, a face, a 3D model or any file; the capacity meter measures the picture as you go.
The itch

A question I had carried since LumiCode; could the data live in the picture's own grain, with no frame, no finder squares, nothing added on top?

The hard part

Posterising a photo fixes which pixels are bright; which pixels carry the payload is free, and that freedom is the channel. A phone camera is still hostile territory: glare, angle, rotation, compression.

How I built it

Two tiers of one format. DitherGlyph packs dense payloads into the dither arrangement, byte-exact through a PNG, about 0.3 bits per pixel; pure, deep at roughly sixteen times the capacity, and sealed with encryption. DitherCode trades density for distance; fixed-rate chunky cells and a cat's-eye finder a phone locks onto almost instantly.

Where it landed

Both live: ditherglyph.quiettools.dev and ditherglyph-lite.quiettools.dev. 65 to 105 KB rides in a 2 MP picture; the scannable tier is verified on a real phone at up to 4,665 characters, and its cat's-eye finder worked well enough that I retrofitted it across the LumiCode formats.

Devlog

live from git
  1. v4: XL/XXL grids, cover-crop, auto orientation, true 4-rotation recovery
  2. v3 finders: the cat's eye; identical, circular, bigger, rotation-proof
  3. Sealed glyphs: passphrase encryption (DGCR wrapper)
  4. Lite feasibility harness: camera sim PASSES at >=6 px/module
  5. Deep mode: Lumiglyph-class density under the dither (format v2)
  6. Port Lumiglyph's real capabilities onto the container
  7. Site polish: block-level drop zones, drop pixelated rendering on downscaled canvases
  8. v2: full colour + high-res grids + spread permutation
  9. DitherGlyph Lite v1: chunky scannable glyphs + phone scanner

If you have a format problem; something that has to survive a hostile round trip, or carry more than it looks like it carries; that's the kind of puzzle I like most.

It's the version of this idea I'd been circling for months. Nothing added to the picture, and the picture still says what it was always going to say.

Let’s build something