CQR, the coloured QR code

Standard QR geometry, several bits per module in colour. The red, green and blue finders carry cyan, magenta and yellow cores, so all eight corners of the colour cube are measured references.

This page runs the project's real Python encoder and decoder in your browser (Pyodide). Images never leave your device. Source and research notes on GitHub.

Loading the Python runtime (about 15 MB, once)…

Encode

Decode a photo or image

What to expect

Payload of a 29x29 symbol (version 3) at error-correction level M, compared with a standard QR code of the same size (42 bytes in byte mode), and where each profile has been shown to work:

profilebits/modulepayloadvs QRworks on
mono145 B1.1xeverything
rgb1113145 B3.5xinkjet print on plain paper, phone photo, modules down to 0.5 mm (measured)
rgb2215243 B5.8xprint at 1 mm modules with a good photo (on the edge)
rgb2226294 B7xscreens, scanners
rgb3328390 B9.3xscreen photographed by a phone (simulated)
rgb44412589 B14xscreen to camera, scanner (simulated)

Capacity grows with the logarithm of the number of colours, and a printer's gamut compression plus camera noise limit how many colours stay distinguishable. Details in the research notes in the repository.