…or send text / a link instead
Camera off
Waiting for frames…
How it works
- One-time model download. A Universal Compression Graph bundle is fetched once and kept in Cache Storage and IndexedDB. Every later launch is fully offline.
- File DNA. Bytes are compressed with an order-1 context model driving an arithmetic coder. Images can instead be reduced to a 64-value perceptual latent.
- SpectraCode. The container is Reed-Solomon protected (RS 255,223) and painted as a 120×80 grid of 32 palette colours with four bullseye markers and a 36-colour calibration strip.
- Capture. The receiver warps each camera frame with a homography from the marker centres, fits a colour-correction matrix from the strip, classifies every cell and repairs damage with Reed-Solomon.
- Streaming. Anything larger than one code is split into numbered frames that loop on the sender's screen. The receiver scans continuously, collects the frames it is missing in any order, then verifies a CRC-32 before restoring the file.
Honest limits
One SpectraCode carries 5,111 bytes of compressed payload (1,097 in robust density) — no compressor can push an arbitrary large file below that, which is why bigger files are streamed over several frames instead of one. Real ratios here are roughly 2–4× on text and source code, ~1× on already-compressed data (JPEG, ZIP, MP4), and 1000×+ only in perceptual image mode, which throws away detail and returns a 32×32-detail reconstruction rather than the original photo.