// the find
schlagmichdoch/PairDrop
PairDrop: Transfer Files Cross-Platform. No Setup, No Signup.
PairDrop is a browser-based file transfer tool that works over WebRTC on local networks and falls back to a TURN server for transfers across the internet. It's a well-maintained fork of Snapdrop that adds persistent device pairing, public rooms, and a CLI. Good fit for anyone who regularly needs to move files between mixed-OS devices without installing anything.
The pairing mechanism is clever — devices share a secret stored in IndexedDB, so they find each other across network boundaries without any account. The fallback path (STUN auto-discovery → TURN relay) is handled transparently, which is the hard part of WebRTC most projects get wrong. Self-hosting is genuinely easy: one Docker Compose file, optional coturn config included, and you can swap in your own STUN/TURN servers via a single JSON config. The CLI wrapper and OS-level share-menu integrations (Windows context menu, iOS share sheet, Android) close the gap that makes most browser tools impractical for daily use.
The server-side code is a single Node.js file with no real structure — `server/index.js` wires everything together and there are no tests. If you're self-hosting and something breaks, you're reading raw WebSocket message handling to debug it. The public pairdrop.net instance is the path of least resistance, which means you're trusting a single person's server for signaling and potentially relay traffic. File size limits are effectively set by the browser and available RAM since large files are chunked through WebRTC data channels, not streamed to disk — sending a 20GB ISO is asking for trouble. There's no end-to-end encryption audit; the transfer is encrypted by DTLS (WebRTC default), but the TURN relay server sees the traffic if NAT traversal fails.