# qrcp

> Go CLI that transfers files between a computer and a mobile device over Wi-Fi by printing a QR code in the terminal that links to a temporary local web server.

Stars: 10.5k · Language: Go · License: MIT · Categories: Network

- Repository: https://github.com/claudiodangelis/qrcp
- Website: https://qrcp.sh
- Page: https://www.trmn.sh/tools/qrcp

## Install

- Homebrew: `brew install qrcp`
- Go: `go install github.com/claudiodangelis/qrcp@latest`
- Scoop: `scoop install qrcp`

## Overview

qrcp is a command-line file transfer tool written in Go. It binds a web server to the address of your Wi-Fi network interface on a random port and prints a QR code encoding a URL of the form http://{address}:{port}/{random_path}. Scanning the code with a phone opens the URL in the mobile browser, which starts the download. The default handler serves the content and exits the program when the transfer completes.

It works in both directions. `qrcp MyDocument.pdf` sends a file, and multiple files or a folder can be passed in the same way (`qrcp Documents/`). `--zip` compresses the content before transfer. `qrcp receive` serves an upload page so a mobile device can send files to the computer, and `--output=/tmp/dir` sets the destination directory.

No configuration is required, but a YAML file (default `$XDG_CONFIG_HOME/qrcp/config.yml`, or a path given with `--config`) or `QRCP_`-prefixed environment variables can set the interface, bind address, port, URL path, output directory, FQDN, keep-alive, and HTTPS. Use `-i tun0` to pick a specific interface or `-i any` to bind to all interfaces. HTTPS is enabled with `--tls-cert` and `--tls-key`. Completion scripts are provided for Bash, Zsh, and Fish. It suits developers and other terminal users who want to move files to or from a phone on the same network without cables, cloud services, or extra apps.

### Installation

```bash
# via Homebrew
brew install qrcp
```

```bash
# via Go
go install github.com/claudiodangelis/qrcp@latest
```

```bash
# via Scoop
scoop install qrcp
```

![qrcp sending files to a mobile device](https://media.trmn.sh/cached/a60dd396dc0049494b54765c416d9e735ee4507bf0dc75040c672bc83acd6db5.gif)

![qrcp receiving files from a mobile device](https://media.trmn.sh/cached/382891849b22f3c2795d3d5e94f848f2d90ca62461c02b4bfabf811298767e74.gif)

![qrcp QR code in terminal](https://media.trmn.sh/cached/63464b7968b5edae899d4ddb08b30d5988be39581a100c8295ee49e5ed577d67.png)

## Alternatives

- [httpx](https://www.trmn.sh/tools/httpx.md): HTTP probing CLI from ProjectDiscovery that takes hosts, URLs or CIDRs and reports status, title, TLS, tech stack, CDN and more, with matchers and filters. (Go, 10.6k stars)
- [wuzz](https://www.trmn.sh/tools/wuzz.md): Interactive terminal UI for inspecting and editing HTTP requests and responses, with cURL-style arguments and regex, HTML and JSON response filtering. (Go, 10.7k stars)
- [termshark](https://www.trmn.sh/tools/termshark.md): Terminal user interface for tshark that provides Wireshark-like packet analysis capabilities from the command line (Go, 10.0k stars)
- [wego](https://www.trmn.sh/tools/wego.md): Terminal weather client showing 1–7 day forecasts from several backends, rendered as an ASCII-art table, emoji, markdown, or JSON. (Go, 8.6k stars)
- [bombardier](https://www.trmn.sh/tools/bombardier.md): HTTP(S) benchmarking tool written in Go that uses fasthttp by default, with optional net/http for HTTP/2, and reports latency, requests/sec and throughput. (Go, 6.8k stars)

## Guides

- [Best CLI File Transfer Tools](https://www.trmn.sh/best/file-transfer-tools): Compare croc, qrcp, rclone: workflows, strengths and tradeoffs.

---

Canonical: https://www.trmn.sh/tools/qrcp
