Still scans
Draw on this QR code and it rearranges its spare bits to keep your picture. Scan it with your phone: it still works.
Scans
Reads
How it keeps your picture
- A QR code is mostly bytes. Your message comes first, then a four-bit stop. Readers stop there, so every byte after it can be anything at all. Those are the spare bits.
- The rest are check bytes from Reed-Solomon coding, which let a reader repair damage. Every check bit is a fixed XOR of data bits, so asking for a check module to be dark is one equation over the spare bits.
- Each stroke adds equations in order of importance, and the page solves them by Gauss-Jordan elimination, block by block. A wish that contradicts the ones before it is skipped and gets a pink dot. The spare bits nobody asked about take whatever values make the rest true, which is why the noise shuffles while you draw.
- Your message is spread through the code. Its bytes fill the first block, and the blocks are woven together a byte at a time, so every few bytes across most of the code belong to it. Turn on Anatomy to see them in blue.
- Spending the repair budget flips whole bytes to match your picture anyway. The reader fixes them, but that budget is then gone when someone spills coffee on it. The meter shows both: blue for what you spent, pink for damage.
- The scanner on this page renders the code, samples the middle of every module, and decodes what it sees: format strip, mask, repair, then the bytes. A real camera also has to find the three corner squares, so covering one fails even when the data would still check out.
Solving for a picture this way follows Russ Cox's QArt codes (2012).