Send files from
the command line
One command uploads your file and prints a share link. Built for shell scripts, build pipelines and anyone who would rather not open a browser to send a file.
$ everytransfer send report.pdf → everytransfer.com/k3n9xq2ab7de/
One command, one link
No browser, no drag and drop. Point it at a file and it gives you back a URL ready to paste into chat or an email.
Made for scripts
Reads its key from an environment variable, speaks JSON on request, and returns a proper exit code so a failed upload fails the build.
Same controls as the website
Password protect a link, expire it after a week, or cap how many times it can be downloaded — all from flags on the command.
Getting started
Needs Node.js 20 or newer. Three steps and you are sending files.
Install
$ npm install -g @everytransfer/cli
Sign in
$ everytransfer login
Send
$ everytransfer send file.zip
Your API key comes from your account settings. Prefer not to install anything? npx -p @everytransfer/cli everytransfer send file.zip works too.
What you can do with it
Lock a link down
$ everytransfer send contract.pdf \ --password hunter2 \ --expire 7d \ --limit 3
Needs a password, dies after a week, and stops working after three downloads.
Use it from a build
$ export EVERYTRANSFER_API_KEY=$KEY $ link=$(everytransfer send build.zip --json \ | jq -r .link)
No interactive login, machine readable output, and a failed upload fails the job.
Send several files at once
$ everytransfer send *.png --name "Design exports"
They arrive as one transfer under a single link.
Keep track of what you sent
$ everytransfer list $ everytransfer delete 4821
See downloads and expiry at a glance, and pull a link when you are done with it.
Worth knowing before you start
Around 256 MB per file. The client sends each file in one request, so it is bound by the server upload limit. Bigger files still go through the website, which splits them into chunks. If a file is over the line, the client says so instead of failing quietly.
Folders need zipping first. Pass files, not directories.
Your plan needs API access. The client signs in with an API key, so the API feature has to be on your plan. See plans.
Questions
How do I send a file from the command line?
Install the client with "npm install -g @everytransfer/cli", sign in once with "everytransfer login", then run "everytransfer send yourfile.pdf". The command uploads the file and prints a share link you can paste anywhere.
Is there a file size limit?
Yes. The command line client uploads each file in a single request, so a file has to fit inside the server upload limit, which is currently around 256 MB. Larger files still work through the website, which splits them into chunks. If a file is too big the client tells you plainly rather than failing silently.
Can I use it in a CI pipeline or a cron job?
Yes. Set the EVERYTRANSFER_API_KEY environment variable instead of signing in interactively, and every command will use it. Read commands accept --json, and the exit code is non-zero on failure, so it is safe to use in a script.
Is this a replacement for transfer.sh?
It covers the same job. transfer.sh was a popular way to share a file straight from a terminal and is no longer running. This client does the same thing, with an account behind it, so your links can be listed, password protected, given an expiry date, and deleted when you are done.
Do I need an account?
Yes. The client authenticates with an API key from your account, which is what lets it list and manage your transfers. Your plan needs to include API access.
Can I password protect a link or make it expire?
Yes. Pass --password to require a password before downloading, --expire to set a lifetime such as 7d or 12h, and --limit to delete the transfer after a number of downloads.
Start sending from your terminal
Free to start. Create an account, grab an API key, and your first transfer is one command away.