File sharing for people
A Firefox Send alternative that needs nothing deployed
Short-lived transfers that expire on their own, no account, open source, and a design that assumes the server should not be trusted with the contents.
What Firefox Send is
In its own terms.
Mozilla’s end-to-end encrypted file-sharing service: upload, get a link, and the file expired after a number of downloads or a period of time. Mozilla shut the service down in 2020. The code was open source, and community forks, notably timvisee’s Send, keep it alive as something you host yourself.
Side by side
Where they part ways.
| s3nd | Firefox Send | |
|---|---|---|
| What it is | A CLI, a library and React hooks over your own S3 bucket | End-to-end encrypted file sharing by link; discontinued, forks are self-hostable |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | The Send server’s storage; forks can use S3 |
| Both ends online at once | No. The code is redeemed later, until it expires | No |
| From inside your web app | Yes, through one route on your server | Its own web app |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Self-hosted forks only |
| Price | Free. You pay your storage provider for a few objects that expire | Free |
| License | MIT | MPL-2.0 |
The differences
What actually changes.
A web app to deploy versus a route to mount
A Send fork is a whole application: a Node server, a Redis, a storage backend, a front end. s3nd is a library you call from your own API, or a CLI that talks to the bucket with nothing running at all.
Encryption built in versus encryption you add
Send encrypts in the browser and puts the key in the URL fragment. s3nd stores whatever bytes you hand it, so the same design is a few lines of WebCrypto on your side, documented in the encrypted sync guide.
Files for people versus state for apps
Send moves a file to a person with a link. s3nd also moves a database to another device with a code, with schema versions and expiry enforced on read.
The decision
Pick the one that fits.
Pick Firefox Send when
- You want a shareable-link web page for people, self-hosted.
- End-to-end encryption in the browser, out of the box.
Pick s3nd when
- No application to run: a bucket and, at most, one route in the app you already have.
- Moving app state, not only files.
- The CLI to a bucket, with nothing deployed anywhere.
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