Free experimental tool: type text, watch it become a swirling particle constellation, and decode it with any phone camera. Reed-Solomon protected, works offline over light — no network needed.
ParticleCode is an experimental, open-source visual code format. Instead of a static grid of black and white squares, your data becomes a living cloud of colored particles — and any phone camera can decode it using just a web page. No app, no network, no pairing: the data travels from screen to camera through light alone.
It was inspired by Apple's Quick Start particle cloud — the swirling dots you see when migrating to a new iPhone. That format is proprietary and undocumented; ParticleCode is the open answer to the same problem: getting bits from screen A to camera B reliably, through colored light.
Encoding. Your payload (text, a URL, Wi-Fi credentials, a contact card) is split into 43-byte blocks, protected with a CRC-16 checksum and Reed-Solomon error correction over GF(256), then mapped to 160 particles × 3 bits each — one of 8 colors per particle. Blocks cycle continuously; the receiver latches any block that decodes cleanly, in any order.
Why 8 colors and not full RGB? A camera channel mangles colors — auto white balance, exposure shifts, chroma-subsampled video. Two decades of color-barcode research (Microsoft's HCCB, COBRA, PixNet) converged on the same answer: a small, maximally separated palette plus heavy error correction. Six hues on a 60° wheel plus two grays survive the trip.
Structure. Four white anchor dots let the decoder locate and perspective-correct the constellation; three calibration satellites measure the frame's hue drift from auto white balance before classification; and a Reed-Solomon(60,49) code per state corrects up to 5 byte errors — so missed frames and smudges simply wait for the next cycle.
Scenes. The same message can wear seven skins — nebula, Saturn with a Cassini gap, a three-tongue bonfire, a solar system, wind darts, clouds, and a rainstorm — because scenes are motion and decoration layered over the same codec contract. An Auto mode reads the message's color palette and picks its own weather.
Throughput is about 120–180 bytes per second after overhead — roughly 50× slower than an animated QR. ParticleCode trades bandwidth for a format people enjoy pointing cameras at. It works best with a bright screen, steady hands, and no glare; heavily compressed video or a dirty lens will slow lock-on.
The full specification, simulator, and source code live at github.com/spconroy/particle-code.
ParticleCode is an experimental visual code format where data is encoded in the colors of a swirling cloud of particles instead of a static grid of black and white squares. A QR code carries data in the on/off state of modules arranged in a square; ParticleCode carries 3 bits per particle in an 8-color palette, arranged in an organic constellation with white anchor dots for positioning. The key differences: ParticleCode is animated (it can re-encode live as you type), it auto-detects which of five constellation shapes it's viewing, and it's designed to be beautiful enough for screens — where QR codes are designed for print.
Open the tool on a laptop or tablet and type or paste your payload — the particle cloud re-encodes live. Then open the same page on a second device (a phone works well), switch to the Receive tab, and start the camera. Hold the phone 20–40 cm from the screen with the whole constellation visible, including the four white corner anchors. The decoder locks on, samples each particle's color, corrects errors with Reed-Solomon, and reassembles your text — typically within a few seconds. No network, Bluetooth, or app installation is required; the data travels through light.
Because cameras are not colorimeters. Between the screen and the decoder, colors pass through gamma correction, auto white balance, auto exposure, lens optics, a Bayer color filter array, and chroma-subsampled video compression — every stage warps the RGB values. The same hex color comes back different depending on lighting and device. Research on color barcodes (including Microsoft's HCCB) converged on small palettes: six hues spaced 60° apart plus two grays give 3 reliable bits per particle, and anything finer drowns in channel noise. The format spends its redundancy on Reed-Solomon error correction instead.
Each 60-byte state carries 11 Reed-Solomon parity bytes over GF(256), correcting up to 5 corrupted bytes per state — on top of a CRC-16 checksum that validates every block before it's accepted. Blocks also cycle continuously, so a missed or blurred frame isn't a failure; the receiver simply catches the block on its next pass. Temporal voting across camera frames filters transient noise before decoding even begins.
The codec carries UTF-8 text, so it speaks the standard QR payload conventions: URLs, Wi-Fi credentials (WIFI: format with proper escaping), vCard contact cards, email (mailto:), phone (tel:), SMS, geo locations, and TOTP 2FA seeds (otpauth://). The sender builds these from structured forms; the receiver recognizes the decoded payload and offers the web-native action — open the link, copy the Wi-Fi password, save a .vcf, and so on.
Yes — the format is fully specified and MIT-licensed at github.com/spconroy/particle-code. The codec (palette, layouts, Reed-Solomon, framing, homography) is a dependency-free JavaScript module that runs in browsers and Node, and the page includes a built-in simulator that renders the constellation with synthetic camera noise and decodes it end-to-end, so you can verify changes without two devices. It's an experimental format, so expect the specification to evolve.