QartText

The domain name, phone number or network name, written in a bitmap font inside the code itself, and not at the cost of error correction. Every code here is a fully valid QR symbol with its redundancy completely intact.

Options

Alphanumeric mode packs 5½ bits per character instead of 8, which leaves more room for the letterforms and often buys a smaller code — but its character set has no lowercase, so the address has to be encoded in capitals. That is only safe when there is nothing after the host: a scheme and a host name are case-insensitive, a path is not. Codes with a path stay in byte mode. The text drawn inside keeps the case you typed either way.

Technical Details

A QR code’s Reed–Solomon code is linear over GF(256), the block interleaving is a permutation, and the mask is a fixed XOR. Composed, the map from data bits to module colors is affine over GF(2).

The payload (a URL, a tel: number, a WIFI: descriptor) occupies the first few hundred bits. Everything after the four-bit terminator is padding, which decoders never read, so those bits are free variables. Writing one column per free bit and one row per module we want to control gives a linear system; Gauss–Jordan elimination over GF(2) solves it. The answer is a genuine codeword that both carries the payload and paints the picture.

Nothing is overwritten and no damage is introduced, so the full error-correction budget survives for real-world wear. This is Russ Cox’s QArt construction, with the artwork being type rather than an image. Cox bought his free bits by appending junk to the URL; taking them from the padding instead leaves the payload byte-for-byte intact.

Where a module carries a bit of the payload itself, it cannot be moved, and those few pixels come out wherever the payload puts them. The app reports the count as fidelity and picks the symbol size and position that minimize it, always protecting the letterforms first.