File sharing for people
A PairDrop alternative for when the other device is not in the room
No account, no install, open source, and a person moving something between two of their own devices. Both keep the bytes away from a third party.
What PairDrop is
In its own terms.
A browser-based, peer-to-peer file transfer between devices on the same network, in the spirit of AirDrop and a fork of Snapdrop: open the page on both devices, they see each other, drop the file. WebRTC carries the bytes and a small signaling server introduces the peers. Pairing across networks is possible with a code.
Side by side
Where they part ways.
| s3nd | PairDrop | |
|---|---|---|
| What it is | A CLI, a library and React hooks over your own S3 bucket | Browser peer-to-peer transfer on a local network |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | Nowhere: peer to peer |
| Both ends online at once | No. The code is redeemed later, until it expires | Yes, at the same time |
| From inside your web app | Yes, through one route on your server | Its own web page |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Public instance, self-hostable |
| Price | Free. You pay your storage provider for a few objects that expire | Free |
| License | MIT | GPL-3.0 |
The differences
What actually changes.
Now versus later
PairDrop works while both devices have the page open. s3nd stores the transfer in the bucket, and the other device picks it up when it is switched on, for as long as the transfer lives.
Nothing stored versus stored in your bucket
PairDrop keeps nothing anywhere, which is a feature. s3nd keeps the object until it expires, which is a different feature: the transfer survives a closed tab.
A page for people versus a primitive for apps
PairDrop is the interface. s3nd is what you build an interface on, in your app, with a code its users type.
The decision
Pick the one that fits.
Pick PairDrop when
- Two devices in the same room, right now.
- Nothing should be written anywhere, ever.
- A URL on both sides and no setup is the whole requirement.
Pick s3nd when
- The other device is not here yet, or not switched on.
- A script or an app is one side of the transfer, not a person with a tab.
- You want the transfer to live, briefly, in a bucket you control.
More comparisons
Tool by tool.
Put a file. Hand over the code.
Point it at the bucket you already pay for. Nothing to deploy, nothing to sign up for, nothing in the middle.
npm install -g @s3nd/clis3nd init --provider r2 --bucket drops3nd put ./anything.zip