Peer-to-peer file sharing in your browser. No servers, no accounts, no file size limits.
- 🔒 P2P Transfer — Files go directly from sender to receiver, no middleman
- 📁 Any File Size — Limited only by your browser's memory
- 🔐 Encrypted — All transfers use WebRTC's built-in encryption + optional AES chunk encryption
- ✅ Integrity Verified — SHA-256 hash verification ensures files arrive intact
- 💓 Connection Health — Automatic heartbeat monitoring detects dead connections
- 📊 Connection Metrics — Real-time RTT and connection type (direct/relay) display
- 📱 Cross-Platform — Works on desktop and mobile browsers
- 🎯 Simple UI — Drag, drop, share. That's it.
- ⚡ Fast — Direct connection means maximum speed
- Sender: Drag files into the drop zone
- Share: Copy the generated link or QR code
- Receiver: Open the link on another device
- Transfer: Files download automatically
- Frontend: HTML5, CSS3, JavaScript
- P2P: WebRTC DataChannels
- Signaling: Custom lightweight server (for connection setup only)
- Encryption: DTLS (built into WebRTC)
DropTransfer uses WebRTC to establish a direct peer-to-peer connection between the sender and receiver. Files are chunked and streamed directly from one browser to another, never touching our servers.
- Sender generates a unique session ID
- Signaling server helps peers find each other
- WebRTC establishes direct connection
- Files are chunked (1MB each) and transferred
- Receiver's browser reassembles the file
I needed to send a large video file to a friend, but:
- Email had a 25MB limit
- WeTransfer required an account
- Google Drive was too slow
So I built DropTransfer — no accounts, no limits, just works.
- Requires modern browsers (Chrome, Firefox, Edge)
- Both peers must keep the tab open during transfer
- Mobile browsers may have stricter background tab policies
- Very large files (>2GB) may hit browser memory limits
- Connection health monitoring (heartbeat)
- File integrity verification (SHA-256)
- Connection quality metrics (RTT, connection type)
- Folder transfer support
- Resume interrupted transfers
- Self-hosted signaling server option
- Multi-file batch transfer with individual progress
While WebRTC provides encryption in transit, the initial signaling goes through our server. For maximum privacy, you can self-host the signaling server (see docs/self-host.md).
This project is licensed under the GPL-3.0 License.
Powered by OpenClaw
⭐ Star this repo if you find it useful!
