gitmyhub

ffsend

Rust ★ 7.4k updated 7mo ago

:mailbox_with_mail: Easily and securely share files from the command line. A fully featured Firefox Send client.

A command-line tool for securely sharing files up to 1 GB via an encrypted upload link that self-destructs after a set number of downloads or time limit, with the encryption key never leaving your device.

Rustsetup: easycomplexity 2/5

ffsend is a command-line tool for sharing files securely over the internet. You upload a file or directory and get back a link you can send to someone else. They can download using the same tool or through a regular web browser. Files can be up to 1 GB.

The key feature is that files are encrypted on your computer before they are uploaded. The encryption key is part of the shareable link, not stored on the server, so the server never sees the contents of your files. You can also set an additional password, a limit on how many times the file can be downloaded before the link stops working, and an expiry time after which the file is automatically deleted. The default lifetime is 24 hours or 1 to 20 downloads, whichever comes first.

Beyond uploading and downloading, the tool includes commands to check whether a shared file still exists, inspect its metadata (name, size, download count, time remaining), delete it early, or change its password after upload. There is a local history command that shows links to files you have previously shared. The tool can also generate a QR code from a share link, shorten the URL, and copy the link to your clipboard automatically.

ffsend is built in Rust and is designed to use very little memory by streaming data during both upload and download rather than loading files into memory all at once. It is intended to work in scripts without needing interactive input.

The tool runs against a Send-compatible server. A public server is maintained by the project's author, and you can also point ffsend at your own self-hosted Send instance. Installation packages are available for Linux (snap, Arch AUR, Fedora, Nix), macOS (Homebrew), Windows, FreeBSD, and Android via Termux.

Where it fits