Beam Direct
Two devices scan each other's QR codes to swap a WebRTC handshake — no server, no signup, no sign-in. After the handshake the devices talk directly over a peer-to-peer data channel, so files move at LAN or full WAN speed.
You'll generate a session offer, your friend scans it from the Join tab, then you scan their answer back. Total time is usually 10–30 seconds.
Step 1 of 2 — show this QR to your friend on the Join tab. The animation loops; they only need a moment of view to capture the offer.
Step 2 of 2 — point your camera at your friend's screen. They'll be on the Join tab showing an answer QR. As soon as it's captured the data channel opens.
You'll scan your friend's offer first, then show an answer back to them.
Step 1 of 2 — point your camera at the host's QR on their Host tab.
Step 2 of 2 — show this QR to the host. They'll scan it back and the data channel will open.
How it works
- The host's browser creates an
RTCPeerConnectionwith a single data channel and generates an SDP offer. ICE gathering runs (the browser asks STUN for the device's public address); once it's complete the full offer is QR-beamed in animated frames. - The joiner's camera scans the offer, applies it as the remote description, generates an answer, lets ICE gather, and QR-beams the answer back.
- The host scans the answer and applies it. WebRTC handshake completes — the peer connection comes up.
- Files dropped on either side are split into 16 KB chunks with a binary header (file id, sequence, total) and sent over the data channel. The receiver assembles the chunks into a
Bloband exposes it as a download. - On the same Wi-Fi, the two devices usually connect directly via host candidates and you don't need internet at all. Across the internet, STUN (Google's public server) discovers each device's public address. Symmetric NATs without TURN may still fail — that's a known limitation of any serverless P2P approach.
- No server stores or relays your bytes. The QR exchange is the entire signaling layer.