Webcode
A scannable code made only for links. Eight colours on a hexagon of triangles, an alphabet built for web addresses, and Reed–Solomon error correction. Type a link and its code is drawn as you type; photograph a code and it is read back here.
Written in the code’s alphabet as ^$pedrosan^*webcode
Read one
Choose a photo of a webcode, or drop one here. A code on white, filling most of the frame, reads best. It is read in your browser; the first read fetches a Python runtime of about 15 MB, kept for next time.
How it is put together
The hexagon is cut into 384 triangles, and each is painted one of eight colours: the corners of the RGB cube, as far apart as colours can be. A fixed pattern of known colours, the same in every code, is the anchor. It tells the reader where the code is, which way up it is, and what each colour looks like in this particular photo. The grey ring around the edge is what the reader looks for first. Four triangles at the top say how long the link is.
The link itself is written in a six-bit alphabet of 64 symbols: the characters that turn up in web addresses, and a key, ^, that turns the next symbol into a common phrase or a capital letter, so ^& is https://www. and ^* is .com/. Thirty-two symbols fit in a code. They are packed into 24 bytes, and 24 bytes of Reed–Solomon parity are added, so the link comes back with up to twelve of those bytes misread, or twenty-four the reader could not make out at all.
The shape comes from my 2023 paper, Decoding Efficiency: The Next Generation of Scannable Systems, with its Hamming code replaced by Reed–Solomon and its neural-network detector replaced by plain geometry: find the ring, fit a homography, sample each triangle, classify. The encoder and the reader are both on GitHub.