qrtunnel is a cross-platform tool for immediate file sharing via QR codes. It utilizes SSH reverse tunneling and local networking to bridge the gap between a computer and mobile devices, enabling file transfers even behind NAT or restrictive firewalls without requiring an account.
- Interactive Terminal User Interface (TUI): A keyboard-driven interface for file selection, mode configuration, and port management.
- Smart Mode: Simultaneously establishes a public tunnel and a local LAN server. The recipient device automatically detects the fastest available path (LAN or WAN).
- High-Speed LAN Transfers: Directly shares files over the local network for maximum speed and privacy.
- One-Time Password (OTP) Security: Local network access is protected by a 6-digit passcode displayed only on the host machine.
- Account-Free Tunneling: Uses SSH-based tunneling (via localhost.run) by default on Linux and macOS, requiring no registration.
- Ngrok Integration: Support for ngrok tunnels, providing an alternative for secure public access.
- Multi-File and Directory Sharing: Capability to share individual files, batches, or entire directories.
- Two-Way Sharing: Supports both sending files from the computer and receiving uploads from mobile devices.
pip install qrtunnelRunning qrtunnel without arguments launches the interactive interface.
qrtunnel- Up/Down Arrows: Move the selection cursor.
- Enter / Right Arrow: Confirm selection or proceed to the next screen.
- Left Arrow: Return to the previous screen.
- Space / Enter: Toggle file selection in the file picker.
- Forward Slash ( / ): Enter search mode within the file picker to filter files by name.
- Escape (ESC): Cancel search mode.
- Q / Ctrl+C: Exit the application.
The CLI supports subcommands for direct execution and scripting.
# General syntax
qrtunnel send <path1> <path2> ... [options]
# Example: Share a file and a folder using a specific port
qrtunnel send report.pdf data/ -8080
# Example: Force LAN-only mode
qrtunnel send images/ -lan# Receive files into the current directory
qrtunnel receive
# Receive files into a specific directory using ngrok
qrtunnel receive ./uploads -ngrok| Option | Description |
|---|---|
-smart |
(Default) Enables both LAN and Public Tunnel with auto-detection. |
-lan |
LAN only. Fastest transfer, accessible only on the same Wi-Fi. |
-ssh |
Public link via localhost.run. No account required. |
-ngrok |
Public link via ngrok. Requires an authtoken. |
- Configuration and Ports: The tool defaults to a random port between 20000 and 60000. Users can specify a port using
-p <port>or the shorthand-<port>(e.g.,-9000).
MIT