Move data between machines that share no network AIRGAP
Move keys, contracts and notes between machines that are not on the same network. The payload plays as QR frames on this screen and a second device reads them back through its camera.
How it works
How the payload actually crosses
The text is split into chunks of 110 bytes. Each chunk is base64-encoded and wrapped in a short header (a protocol marker, this frame's number, how many frames there are in total, and a CRC32 of the whole original payload), and each of those becomes a real QR symbol, drawn from the ISO/IEC 18004 encoder on this site. The frames play in a loop on the screen.
The receiving device points its camera at that screen and decodes the
symbols with BarcodeDetector, which is the browser's own
barcode API rather than something written here and marked as its own
homework. Frames arrive in whatever order the camera catches them, are
filed by sequence number, and duplicates are dropped. When every number
from one to the total is present they are joined in order and the CRC32 is
recomputed. If it does not match, nothing is shown at all: a partly
corrupted key is worse than no key, because you would use it.
The chunk size is deliberately modest. A QR symbol carrying less data has fewer, larger modules, and larger modules are what a phone camera can resolve across a desk in ordinary room light. Pushing more bytes into each frame makes the transfer shorter on paper and unreadable in practice.
What an air gap is worth, and how people lose it
The point of keeping a machine off the network is that a machine with no network connection cannot be reached over one. The moment you plug in a USB stick to move a file, you have made a connection: a slow one with high latency, and a real one. Every significant attack on an air-gapped system has crossed it the same way, on removable media, because that is the only path there is.
Light across a room is a narrower path. The receiving device gets pixels through a camera and nothing else: no filesystem is mounted, no driver is loaded for a device of unknown provenance, no autorun, no firmware on the far end of a cable. What can cross is the bytes in the frames, which is what you wanted to cross.
The rest of the air gap is yours to keep. A camera pointed at a screen is readable by any other camera pointed at the same screen, so this is a transfer for a room you control, not a transfer that is private in itself. If the payload would matter in the wrong hands, encrypt it with CIPHER first and send the armour block across: then the frames carry ciphertext and a photograph of your screen is worth nothing.
The self-test says what it is
The loopback check renders the frames and reads them back through the same decoder on the same machine. That proves the encoder and the decoder agree and that this browser can do both, which is genuinely worth knowing before you carry a laptop into another room.
It is not an optical hop and it is not described as one. An earlier version of this page had a button called “Simulate Ingest From Buffer” that copied the text straight out of the transmitter's own textarea into the output box, over a grid of hand-drawn squares that looked like a QR code and that no scanner on earth could read. Nothing optical ever happened. The frames on this page are real symbols and the receiver is a real camera; the self-test is labelled separately because the difference is the entire value of the tool.
For the codes themselves, QRMAKER makes one that never leaves the machine and QRSHIELD shows you where a code points before you follow it.
Doing this often? The OBSCURA Sovereign Suite seals files so that only the person with the passphrase opens them, and checks files before they are opened. On its own, US$4 a month; with everything else, US$9 a month or US$79 a year. 7 days free.