A lightweight local network file & clipboard sharing tool. Powered by Rust + WebRTC.
Works with Single File.
Inspired by PairDrop. No setup, no signup, no cloud β just open the page and share.
- π Clipboard sharing β Send text between devices. Received text is auto-copied.
- π File transfer β Send files peer-to-peer with receiver confirmation.
- π No registration β Open the web page, devices on the same LAN find each other automatically.
- π Cross-platform β Works on any device with a modern browser (desktop, phone, tablet).
- π P2P by WebRTC β Files and text go directly between devices. Server only handles signaling.
- π i18n β English & Chinese. Auto-detects browser language.
- π Self-hosted β Run on your own machine. No third-party servers.
# Download the latest binary from Releases
ppdrop
# Or build from source:
cargo run --releaseOpen http://<your-lan-ip>:8080 on any device on the same network (or specify a custom port: ppdrop 9090).
On startup, the terminal displays a QR code for each LAN IP β scan it with your phone to open the page instantly.
languages: English and Chinese.
| Action | How |
|---|---|
| Send text | Click Send Text on a peer β type/paste text β Send (or Ctrl+Enter) |
| Send clipboard | In the text dialog, click π Read Clipboard |
| Send file | Click Send File on a peer β select a file β receiver gets a confirmation dialog |
| Receive text | Text appears in a toast notification and is auto-copied |
| Receive file | Click Accept & Download to start receiving |
| Change device name | Click the device name to edit |
ppdrop [PORT]
| Argument | Description |
|---|---|
PORT |
Port to listen on (default: 8080) |
-h, --help |
Print help message |
git clone https://github.com/your-username/ppdrop
cd ppdrop
cargo build --release
./target/release/ppdrop [PORT]βββββββββββββββ WebSocket ββββββββββββββββ
β Browser A β βββ signaling βββ β Rust Server β
β (WebRTC) β β (warp) β
β β WebRTC P2P β β
β Browser B β βββ data channelβββ (static fs) β
β (WebRTC) β ββββββββββββββββ
βββββββββββββββ
- Server (
src/main.rs): WebSocket signaling relay + static file server. ~140 lines. - Client (
static/app.js): WebRTC peer management, device discovery, text/file transfer. - UI (
static/): Vanilla HTML/CSS/JS. No frameworks.
Pre-built binaries for 5 platforms (via GitHub Actions):
| Platform | File |
|---|---|
| Linux (glibc) | ppdrop-x86_64-unknown-linux-gnu.tar.gz |
| Linux (musl) | ppdrop-x86_64-unknown-linux-musl.tar.gz |
| Windows | ppdrop-x86_64-pc-windows-gnu.zip |
| macOS (Intel) | ppdrop-x86_64-apple-darwin.tar.gz |
| macOS (Apple Silicon) | ppdrop-aarch64-apple-darwin.tar.gz |
GPL-3.0