# s3nd vs Magic Wormhole

> A Magic Wormhole alternative that goes through your own bucket. What Magic Wormhole is, where the two overlap, where they differ, and when to pick each.

Canonical: https://www.s3nd.sh/alternatives/magic-wormhole · Markdown: https://www.s3nd.sh/alternatives/magic-wormhole.md · Français: https://www.s3nd.sh/fr/alternatives/magic-wormhole

Both hand you a short code in a terminal, both are open source, and both exist for a person carrying something from one machine to another without an account.

## What Magic Wormhole is
A command-line tool that sends files and directories from one computer to another with a short, human-readable code such as 7-crossover-clockwork. The two sides run a PAKE, so the code both finds the peer and keys the encryption; the bytes travel directly between the machines, or through a transit relay when they cannot reach each other.

Website: https://magic-wormhole.readthedocs.io

## Where they part ways.
| | s3nd | Magic Wormhole |
| --- | --- | --- |
| What it is | A CLI, a library and React hooks over your own S3 bucket | CLI file transfer with a spoken code |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | In transit only: peer to peer, or through a transit relay |
| Both ends online at once | No. The code is redeemed later, until it expires | Yes |
| From inside your web app | Yes, through one route on your server | No, terminal first |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Public rendezvous and relay servers by default; self-hostable |
| Price | Free. You pay your storage provider for a few objects that expire | Free |
| License | MIT | MIT |

## What actually changes.
- **Asynchronous, not live** — Wormhole needs both ends running at the same time: the sender waits until the receiver enters the code. s3nd writes to the bucket and exits. The code is redeemed whenever the other machine gets to it, until the transfer expires.
- **Your bucket, not a relay** — Wormhole goes through a rendezvous server and, when direct connection fails, a transit relay; public ones by default, yours if you run them. s3nd stores the object in a bucket you already own, and there is no relay to run or trust.
- **Where the encryption comes from** — Wormhole is end-to-end encrypted by construction. s3nd is encrypted in transit and at rest by your provider; end to end is yours to add by encrypting before sending, and the code is a bearer token that a short expiry and a rate limit protect.
- **Also a library** — Wormhole is a tool for people at keyboards. s3nd ships the same primitive as a library and React hooks, so a web app can move its own IndexedDB state with the same code.

## Pick the one that fits.
### Pick Magic Wormhole when
- You want end-to-end encryption without thinking about it.
- Both machines are online and you are at both keyboards.
- You have no bucket and would rather not create one.

### Pick s3nd when
- The sender leaves before the receiver arrives.
- You already pay for a bucket and want the bytes to stay in it.
- The thing moving is an app’s state, not a file on disk.
