QartText
Kind
URL<br>Phone<br>Wi-Fi
URL
Phone number
Network name
Password
Security
WPA/WPA2/WPA3<br>WEP<br>None (open)
Hidden network
Generate
Options
Error correction
L: 7% recovery, most room for artwork<br>M: 15% recovery (default)<br>Q: 25% recovery<br>H: 30% recovery, least room
Maximum lines
1: never wrap
Clearance
1: tight<br>1½: 1 clear ring, 1 stippled<br>2 (default)<br>2½: 2 clear rings, 1 stippled<br>3½: 3 clear rings, 1 stippled<br>5: generous
Text override
Pick one
Twelve treatments of the same code: fonts across, extent and inversion down.<br>Whitespace is what makes the text readable, so raise Clearance if a variant<br>is fighting the noise around it. A half step clears its outermost ring only<br>partly, stippling it, which softens the edge and costs fewer forced modules than<br>a whole ring. Symbol size is chosen automatically; each card shows how wide that<br>code needs to be printed.
Selected
fixed: function patterns and modules carrying the payload itself
free: click any of these to flip it, and the solver rebuilds the rest
Placement
auto
Each nudge re-solves from scratch. Watch the fidelity figure:<br>sliding the text so a period meets an alignment square, or a stroke meets the<br>timing line, costs nothing and can gain you modules.
Module size 8 px
Export dark<br>Export light
Scanners expect dark modules on a clearly lighter background. This pairing is<br>inverted or too low in contrast, and is likely to fail to read.
Download PNG<br>Download SVG<br>Undo edits
Exports contain only the two colors above, never the grays, which mark editable modules in the preview only.
Keep It On Your Device
QartText needs no network once it has loaded. It does all the work in your<br>browser and never sends anything anywhere. Add it to your home screen or dock and<br>it opens like any other app, works with no signal at all, and drops the address bar.
Install
Technical Details
A QR code’s Reed–Solomon code is linear over GF(256), the block<br>interleaving is a permutation, and the mask is a fixed XOR. Composed, the map<br>from data bits to module colors is affine over GF(2).
The payload (a URL, a tel: number, a WIFI:<br>descriptor) occupies the first few hundred bits. Everything after the<br>four-bit terminator is padding, which decoders never read, so those bits are free<br>variables. Writing one column per free bit and one row per module we want to<br>control gives a linear system; Gauss–Jordan elimination over GF(2) solves it.<br>The answer is a genuine codeword that both carries the payload and paints the<br>picture.
Nothing is overwritten and no damage is introduced, so the full error-correction<br>budget survives for real-world wear. This is Russ Cox’s<br>QArt construction, with the artwork<br>being type rather than an image. Cox bought his free bits by appending junk to the<br>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<br>few pixels come out wherever the payload puts them. The app reports the count as<br>fidelity and picks the symbol size and position that minimize it,<br>always protecting the letterforms first.