Move a file between a screen and a camera using nothing but flashing light.
Runs entirely in this tab — nothing is uploaded, and it works with the network off. How it works Flashing-light safety
Best for documents, photos and keys. Large files take a while — a 1 MB file is roughly two minutes.
The sending screen flashes a stream of QR codes. The receiving camera reads as many as it can. When enough have arrived, the file is rebuilt.
The obvious approach — chop the file into numbered chunks and cycle through them — needs the receiver to catch every single one, and a single missed frame means waiting for the whole loop to come round again.
Instead each frame carries a fountain-coded block: an XOR of a randomly chosen handful of the file's blocks, drawn from a robust soliton distribution. The receiver needs any slightly-larger-than-necessary number of frames, whichever ones happen to arrive. Nothing has to be caught in order, nothing is ever re-requested, and there is no back-channel at all — which is what lets a screen talk to a camera that cannot answer.
This page and the Android app implement the identical wire format, verified packet-for-packet, so either can send to the other.
Everything happens in this tab. No file ever leaves your device, and the page works with the network disconnected.
Sending a file makes this screen flash black-and-white patterns rapidly — up to 30 times a second — for as long as the transfer runs.
If you have photosensitive epilepsy, or are prone to seizures, migraines or motion sickness triggered by flashing light, do not use the sending screen. Ask the other device to send instead, and use this one to receive.
Choosing a slower speed reduces the flicker rate but does not remove it.