Ember QR

A standard QR code drawn as a plume of embers. Its spare bits and part of its error-correction budget are spent on the picture, so any phone camera can still read it.

Error correction more correction = sturdier, less room for the picture

How it works
  1. Free bits. After the text, the QR's data area has spare bits that decoders ignore. The error-correction parity depends on them in a known, linear way, so solving for them sets chosen modules, data and parity, to match the embers, with zero errors. A bigger QR has more spare bits, which means more picture.
  2. Burn. Each error-correction block can repair a number of damaged codewords. "Burn" spends that share of the repair budget forcing more modules into the ember shape. The rest stays as margin for real-world wear.
  3. Drawing. Inside the column, modules are grid cells. In the plume they are embers of every size. Outside the plume, unavoidable dark modules become specks of ash. Every mark still covers its module's centre, which is the only spot a scanner looks at.
  4. What must stay: the three corner finder squares, the small alignment squares and the format strips, which scanners use to lock on.