explaingit

timvisee/ffsend

7,339RustAudience · developerComplexity · 2/5Setup · easy

TLDR

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.

Mindmap

mindmap
  root((ffsend))
    What it does
      Encrypted file sharing
      Self-destructing links
      CLI file transfer
    Tech Stack
      Rust
    Features
      Client-side encryption
      Password protection
      Download limits
      QR code generation
      Local history
    Install Options
      Linux snap or AUR
      Homebrew macOS
      Windows binary
    Audience
      Developers
      Privacy-conscious users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Securely send a confidential file to a colleague by uploading it with a link that auto-expires after one download.

USE CASE 2

Share large files up to 1 GB from the terminal without signing up for a cloud service, with client-side encryption so the server never sees the contents.

USE CASE 3

Use ffsend in a script to automate secure file transfers as part of a deployment or backup pipeline.

Tech stack

Rust

Getting it running

Difficulty · easy Time to first run · 5min

Install via snap, Homebrew, AUR, or Nix, no account or API key required, uses a public Send-compatible server by default.

The explanation does not mention the license.

In plain English

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.

Copy-paste prompts

Prompt 1
I want to securely send a file to a contractor using ffsend. Show me the command to upload the file, set a password, and limit it to 1 download before the link expires.
Prompt 2
I shared a file with ffsend but the recipient hasn't downloaded it yet. How do I check if the link is still active, see how many downloads remain, and delete it early if needed?
Prompt 3
How do I point ffsend at my own self-hosted Send server instead of the public one, and what server software do I need to run?
Prompt 4
I want to use ffsend in a bash script to upload a backup file every night and print the shareable link. Show me the command with non-interactive flags.
Open on GitHub → Explain another repo

← timvisee on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.