How Tranzo Works
Tranzo uses WebRTC to create a direct, encrypted tunnel between two browsers — no file ever touches our servers.
Step-by-Step
Create or Join a Room
The sender creates a room with a unique ID. The receiver enters the same room ID (or scans the QR code). Both browsers connect to Tranzo's signaling server over WebSocket.
WebRTC Handshake (SDP + ICE)
The signaling server exchanges SDP offers/answers and ICE candidates between the two peers. This is just connection metadata — no file data passes through our server.
Direct Peer Connection Opens
Once ICE negotiation succeeds, a direct DataChannel is established. On the same LAN this is usually instant. On different networks, our coturn TURN relay is used as a fallback.
File is Chunked and Sent
The file is split into 64 KB chunks and streamed over the DataChannel. A progress bar, transfer speed, and ETA are calculated in real time.
Receiver Downloads Instantly
Chunks are reassembled in memory via a Web Worker and presented as a download. Files under 300 MB download automatically; larger files use the showSaveFilePicker API to stream directly to disk.
Technology Used
- WebRTC RTCPeerConnection — direct browser-to-browser data channel
- Socket.IO — lightweight signaling (SDP/ICE exchange only)
- coturn — TURN relay server for NAT traversal fallback
- Web Workers — off-main-thread chunk assembly for smooth UI
- File System Access API — stream large files directly to disk
- QRCode.js + jsQR — room link QR generation and camera scanning
Privacy Guarantee
Our signaling server only sees room IDs and WebSocket connection events. It never sees file names, file contents, or any metadata about what you're transferring. Once the peer connection is established, the signaling server is completely out of the loop.