# s3nd vs croc

> A croc alternative with nothing running between the two machines. What croc is, where the two overlap, where they differ, and when to pick each.

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

A code in a terminal, no account, open source, and a sender who does not want to think about networks. croc is the tool most people reach for when they want exactly what the s3nd CLI does.

## What croc is
A Go command-line tool for sending files and folders between any two computers with a code phrase. It uses a PAKE for end-to-end encryption, a relay to get through NATs, resumes interrupted transfers, and ships as a single binary for every platform.

Website: https://github.com/schollz/croc

## Where they part ways.
| | s3nd | croc |
| --- | --- | --- |
| What it is | A CLI, a library and React hooks over your own S3 bucket | CLI file transfer with a code phrase |
| Where the data lives | Your bucket: S3, R2, MinIO, Scaleway, Wasabi | In transit only, through a 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 |
| Accounts | None. The code is the whole handshake | None |
| Hosting | Your bucket, plus your server when a browser takes part | Public relay by default; self-hostable |
| Price | Free. You pay your storage provider for a few objects that expire | Free |
| License | MIT | MIT |

## What actually changes.
- **Live versus stored** — croc streams while both ends are connected. s3nd stores the object and leaves; the code works later, from a machine that was off when the transfer was made.
- **A relay versus a bucket** — croc uses a public relay by default and lets you run your own. s3nd uses the bucket you already have, with the provider’s durability, lifecycle rules and billing.
- **Resume and size** — croc resumes a broken transfer and handles very large files well. s3nd does a single PutObject today, which is right for snapshots and ordinary files; multipart is on the roadmap.
- **A primitive, not only a tool** — The same code that runs the CLI runs in a Next.js route and behind React hooks, so an application can offer the same move-with-a-code to its users.

## Pick the one that fits.
### Pick croc when
- Both ends are online and you want end-to-end encryption for free.
- Multi-gigabyte files where resume matters.
- No cloud account of any kind, not even a bucket.

### Pick s3nd when
- The two machines are never online at the same time.
- A server in front, handing out tokens instead of S3 keys, for a team.
- A web app moving its own data, with the CLI as a bonus.
