Pick one
Twelve treatments of the same URL: fonts across, extent and inversion down. Whitespace is what makes the text readable, so raise Clearance if a variant is fighting the noise around it. A half step clears its outermost ring only partly, stippling it, which softens the edge and costs fewer forced modules than a whole ring. Symbol size is chosen automatically; each card shows how wide that code needs to be printed.
Selected
fixed — function patterns and modules carrying the URL itself free — click any of these to flip it; the solver rebuilds the rest
Each nudge re-solves from scratch. Watch the fidelity figure — sliding the text so a full stop meets an alignment square, or a stroke meets the timing line, costs nothing and can gain you modules.
Scanners expect dark modules on a clearly lighter background. This pairing is inverted or too low in contrast, and is likely to fail to read.
Exports contain only the two colours above — never the greys, which mark editable modules in the preview only.
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 colours is affine over GF(2).
The URL 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 spells out the URL 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 URL byte-for-byte intact.
Where a module carries a bit of the URL itself, it cannot be moved — those few pixels come out wherever the URL puts them. The app reports the count as fidelity and picks the symbol size and position that minimise it, always protecting the letterforms first.