Skip to content
s3nd
Menu

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.

 s3ndPairDrop
What it isA CLI, a library and React hooks over your own S3 bucketBrowser peer-to-peer transfer on a local network
Where the data livesYour bucket: S3, R2, MinIO, Scaleway, WasabiNowhere: peer to peer
Both ends online at onceNo. The code is redeemed later, until it expiresYes, at the same time
From inside your web appYes, through one route on your serverIts own web page
AccountsNone. The code is the whole handshakeNone
HostingYour bucket, plus your server when a browser takes partPublic instance, self-hostable
PriceFree. You pay your storage provider for a few objects that expireFree
LicenseMITGPL-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.

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