Send a file
The phone downloads it with the original filename. Any size streams, so a 4GB video never touches memory. The server shuts down after the download.
C:\> qrshare.exe
Serve a file, folder, or text over your wifi and scan the QR. The transfer runs in your phone's browser.
Auto-detect
qrshare reads what you give it and picks the right mode. Force it with a flag when you want to.
The phone downloads it with the original filename. Any size streams, so a 4GB video never touches memory. The server shuts down after the download.
Zipped on the fly and streamed. Never buffered to disk.
Scanning opens an upload page. Phone photos land on your laptop.
Pipe it in or pass it as an argument. The phone shows the text with a one-tap copy button that works even over plain HTTP.
Same wifi, direct route
Both devices are on the same wifi, so the phone reaches your laptop directly. Nothing routes through the internet.
qrshare starts a tiny web server on your wifi network and prints a QR code right in your terminal.
Point your phone's camera at it. No app to install, just the browser you already have.
The file downloads, the upload lands, or the text appears with a copy button. Then qrshare exits.
Local by default
✗ Cloud bytes never touch the internet
No relay, no NAT traversal, no cloud upload. The phone talks straight to your laptop's LAN address. The bytes never touch the internet.
Docker, VPN, and wifi all active? qrshare resolves the address your phone can actually reach, and warns when the only route is a tunnel it cannot.
Send or receive a multi-gigabyte file with flat memory use on both ends.
Every share carries a random token. A bare scan of your IP gets a 404.
A single Go binary with no runtime dependency. Drop it on your PATH.
One binary
One binary, no dependencies. Pick whichever fits your setup.
brew install edaywalid/tap/qrsharego install github.com/edaywalid/qrshare/cmd/qrshare@latestC:\> qrshare report.pdfLatest release v0.1.0. Prebuilt binaries for macOS and Linux (amd64 and arm64) are on the releases page.