Share Files Between Any Devices — No App, No Signup, No Limits
One 6.5MB Go binary. Browser-based. WebRTC P2P with E2E encryption. Works across any networks, anywhere.
BeamIt is an open-source, instant file sharing tool that lets anyone share files between ANY devices, ANYWHERE — same room or different countries — using only a web browser. One 6.5MB Go binary. Zero configuration. Just run it. Same-network devices auto-discover; cross-network pairs use a short shareable code. Transfers prefer WebRTC P2P, fall back through TURN, then WebSocket relay — every path stays end-to-end encrypted.
- About
- Features
- Installation
- Quick Start
- How It Works
- Usage Examples
- Why BeamIt
- Self-Hosting
- Contributing
- License
- Support
- Browser-Based: Works on every device with a modern browser — no app to install, no signup
- True P2P via WebRTC: Direct device-to-device transfer when possible, fastest and most private
- E2E Encrypted: AES-256-GCM end-to-end on every path, including TURN relay
- Cross-Network: Same room, same network, different countries — works anywhere
- Auto-Discovery on LAN: Devices on the same network appear automatically
- Single Binary / Self-Hostable: 6.5MB Go binary, zero dependencies, no database
- No File Size Limits: Share files of any size; only your bandwidth matters
- Dark/Light Theme: System-aware, mobile responsive
- Text/Clipboard Sharing: Send snippets and links alongside files
- Room Codes: Cross-network pairing via short codes (e.g.
BEAM-X7K2)
Three-step strategy: P2P → TURN → relay. Always works. Always encrypted.
Step 1: WebRTC P2P direct (via STUN)
├── Success → fastest, most private
└── Fail (strict NAT) →
Step 2: WebRTC via TURN relay
├── Success → still E2E encrypted
└── Fail (TURN blocked) →
Step 3: WebSocket relay fallback
└── Always works. Encrypted. Slower.
Same network and cross-network — both flows are first-class
Same Network (auto-discovery):
- Person A opens BeamIt in their browser
- Person B opens BeamIt on another device (same network)
- Both devices appear automatically
- Drag file → drop on device → instant P2P transfer
Different Networks (share a code):
- Person A clicks "Get a sharing code" → gets
BEAM-X7K2 - Sends code to Person B (text, call, whatever)
- Person B enters code → devices paired
- WebRTC P2P transfer, E2E encrypted
# Download from releases page
curl -L https://github.com/cc1a2b/beamit/releases/latest/download/beamit-linux-amd64 -o beamit
chmod +x beamit
./beamitgit clone https://github.com/cc1a2b/beamit.git
cd beamit
make build
./beamitdocker run -p 8080:8080 -p 3478:3478/udp ghcr.io/cc1a2b/beamit- Linux, macOS, or Windows (64-bit)
- Modern browser (Chrome, Firefox, Safari, Edge — anything with WebRTC)
- 6.5MB free disk for the binary
./beamitOpen http://localhost:8080 in your browser. Done.
Devices on the same LAN find each other via mDNS broadcast. Drag, drop, transfer.
A short BEAM-XXXX code pairs two browsers across the internet. WebRTC handles NAT traversal; TURN handles strict NATs; WebSocket relay handles the rest.
P2P first (fastest). TURN second (still encrypted, slightly slower). WebSocket relay last (always works).
# Default — HTTP on :8080
./beamit
# Custom port
./beamit --port 9090
# Custom STUN/TURN servers
./beamit --stun stun:custom.stun.com:3478 \
--turn turn:custom.turn.com:3478 \
--turn-user myuser --turn-pass mypass
# Enable HTTPS with cert + key
./beamit --tls-cert cert.pem --tls-key key.pem
# Bind to a specific interface
./beamit --host 192.168.1.10 --port 8080| Tool | Browser-based | Cross-network | True P2P | Simple UX | Single binary | Self-host | No limits |
|---|---|---|---|---|---|---|---|
| BeamIt | |||||||
| LocalSend | (app) | (LAN only) | |||||
| PairDrop | (relay) | (Node.js) | |||||
| ShareDrop | (LAN only) | ||||||
| FilePizza | |||||||
| wormhole.app | (cloud) | (10GB) | |||||
| Magic Wormhole | (CLI) |
BeamIt is the only tool that does all 7.
# Run on your own VPS
./beamit --host 0.0.0.0 --port 80 \
--tls-cert /etc/letsencrypt/live/share.example.com/fullchain.pem \
--tls-key /etc/letsencrypt/live/share.example.com/privkey.pem
# With a public TURN server for strict-NAT users
./beamit --turn turn:turn.example.com:3478 \
--turn-user myuser --turn-pass mypassBehind a reverse proxy:
location / {
proxy_pass http://127.0.0.1:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}Contributions welcome from the open-source community.
- Report bugs via GitHub Issues
- Suggest features that respect the no-signup, no-app philosophy
- Improve documentation
- Submit pull requests for new transports, UI improvements, or self-host docs
git clone https://github.com/cc1a2b/beamit.git
cd beamit
go mod tidy
make buildBeamIt is released under the MIT License. See LICENSE for details.
Copyright (c) 2024-2026 Hussain Alsharman
Licensed under MIT License — free for commercial and personal use
If BeamIt makes file sharing easier:
Star this repo • Follow @cc1a2b • Share with everyone
BeamIt — Share Files Between Any Devices
Built by cc1a2b for the open web
