explaingit

schollz/croc

📈 Trending35,060GoAudience · generalComplexity · 2/5ActiveLicenseSetup · easy

TLDR

A command-line tool to send files between computers securely using a short code phrase, no setup required.

Mindmap

mindmap
  root((repo))
    What it does
      Send files securely
      Generate code phrases
      End-to-end encryption
    How it works
      Relay server connection
      PAKE key exchange
      No server setup needed
    Use cases
      Transfer between friends
      Move to remote servers
      Cross-network sharing
    Features
      Resume interrupted transfers
      Folder support
      Pipe stdin/stdout
      QR code display
    Tech stack
      Go language
      Single binary
      Cross-platform
    Audience
      Non-technical users
      System administrators
      Developers

Things people build with this

USE CASE 1

Send a large file to a friend without using cloud storage or email.

USE CASE 2

Transfer files between your laptop and a remote server across different networks.

USE CASE 3

Move an entire folder from one machine to another with a single command.

USE CASE 4

Pipe data through stdin/stdout for scripting and automation workflows.

Tech stack

GoPAKE encryptionRelay server

Getting it running

Difficulty · easy Time to first run · 5min
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.

In plain English

Croc is a command-line tool that lets you send files or folders from one computer to another quickly and securely, no matter what operating system either machine is running. The core problem it solves is the hassle of transferring files between machines that aren't on the same network: you don't need to set up a server, open firewall ports, or use a cloud storage intermediary. The way it works is elegantly simple. The sender runs a single command and croc generates a short code phrase, a handful of random words. The recipient types that code phrase on their machine and the transfer begins. Under the hood, the two computers connect through a relay server (a publicly available one by default, or one you host yourself), and the data is protected with end-to-end encryption using a technique called PAKE (Password-Authenticated Key Exchange). This means even the relay server cannot read your files, only the person with the matching code phrase can decrypt them. Croc handles several practical scenarios that simpler tools miss: transfers can be resumed if they get interrupted, multiple files and entire folders can be sent in one go, and there is support for piping data through standard input and output for scripting. It even supports routing through a proxy like Tor for extra privacy, and can display a QR code so a phone can receive the code phrase easily. You would reach for croc when you need to move a file from your laptop to a friend's computer, from your desktop to a remote server, or between two machines on completely different networks, and you want the process to be safe and dead simple. It is a Go program, which means it compiles to a single binary with no runtime dependencies, and packages are available for macOS, Windows, Linux, and most popular package managers.

Copy-paste prompts

Prompt 1
How do I use croc to send a file to someone? Walk me through the exact commands.
Prompt 2
Show me how to set up my own relay server for croc instead of using the public one.
Prompt 3
How can I use croc to transfer a folder with multiple files and resume if it gets interrupted?
Prompt 4
Can I pipe data through croc for scripting? Show me an example with stdin/stdout.
Prompt 5
How does croc's encryption work and why can't the relay server read my files?
Open on GitHub → Explain another repo

Generated 2026-05-18 · Model: sonnet-4-6 · Verify against the repo before relying on details.