schollz /croc

Easily and securely send things from one computer to another :crocodile: :package:

★ 40,900⑂ 1,653👁 244⑃ 748● 640▤ 232◈ 0
GoMITCreated 2017-10-17getcroc.com
40,900
stars
+9
1,653
forks
244
watchers
748
prs
640
issues
232
releases
0
discussions

README

This project’s future depends on community support. Become a sponsor today.



 About

croc is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, _croc_ is the only CLI file-transfer tool that does all of the following:

- Allows any two computers to transfer data (p2p with relay fallback)
- Provides end-to-end encryption (using PAKE)
- Enables easy cross-platform transfers (Windows, Linux, Mac, Browser)
- Allows multiple file transfers
- Allows resuming transfers that are interrupted
- No need for local server or port-forwarding
- IPv6-first with IPv4 fallback
- Can use a proxy, like Tor

For more information about croc, see my blog post or read a recent interview I did.

!Example

 No-install

You can use croc without installing anything at getcroc.com.

The browser version is fully compatible with the CLI, so you can send and receive files between them.

 Install

You can download the latest release for your system, or install a release from the command-line:

bash
curl https://getcroc.com | bash


The installer places croc and croc-update in the same directory. Standalone
release archives include both binaries too. To upgrade:

bash
croc update        check croc and prepare the updater when needed
croc-update        update the croc active on PATH


The updater shows download progress with transferred bytes. Each command asks
before changing a binary. Pass --yes to each command to skip
its confirmation. Protected directories such as /usr/local/bin may still
require authentication: the command requests sudo or doas on Unix, or UAC
approval on Windows. Writable custom prefixes work without elevation:

bash
curl https://getcroc.com | bash -s -- -p "$HOME/.local/bin"


croc update --check reports croc release availability without installing;
croc-update --check checks the croc active on PATH. Direct helper use selects
that executable first, including a user-owned installation such as
$HOME/go/bin/croc. If croc is absent from PATH, it installs beside the helper.
Use croc-update --path /path/to/croc to select a particular installation.
When croc is current, croc update prints only its up-to-date message. When a
new release is available, it ensures the helper is ready and prints
Run: croc-update. croc upgrade is an alias for croc update. Neither binary
overwrites itself or automatically downgrades a newer installed version.

If an older croc update reports that the running executable is not writable,
run the installer once to obtain this pair. Subsequent upgrades use the commands
above. Manually extracted standalone archives do not need installer registration.
Package-managed installations use their owning package manager instead.

When the CLI sends or receives a transfer, it checks for a newer croc release at
most once every 24 hours. The check runs in the background and any update notice
is shown after the transfer finishes. Network and release-service failures in
background checks are ignored; --quiet s

Top issues

Latest release

v11.6.5 v11.6.5 2026-11-07
What's Changed
 chore: update dependencies by @schollz in https://github.com/schollz/croc/pull/1429


Full Changelog: https://github.com/schollz/croc/compare/v11.6.4...v11.6.5

Snapshot: 2026-11-10T09:35:25Z · Data license Apache-2.0 · JSON