The privacy-first, cross-platform local file transfer tool.
Inspired by Landrop, AirDrop, and Snapdrop.
Transfer Anywhere is an open-source web application that allows you to send photos, videos, and large files between devices on your local network without using the internet. It uses WebRTC for peer-to-peer transfer, ensuring your files go directly from Device A to Device B without ever being stored on a server.
- 🚀 Blazing Fast: Uses your local Wi-Fi speed. No internet bandwidth is consumed.
- 🔒 Secure & Private: Files are transferred directly between devices via WebRTC. No intermediate storage.
- 📱 Cross-Platform: Works on iOS, Android, macOS, Windows, Linux, and Smart TVs.
- 💾 No App Store Required: Runs entirely in the browser.
- 📱 PWA Ready: Install it as a native app on iOS/Android for a full-screen experience.
- 🕵️ Automatic Discovery: Devices automatically find each other on the same network.
This project uses a Client-Server architecture for discovery, but a Peer-to-Peer architecture for data transfer.
- Frontend (React + Vite): The user interface.
- Signaling Server (Node.js + Socket.io): A lightweight server that acts as a "matchmaker". It helps devices find each other and exchange connection details (SDP/ICE candidates). It does not touch your files.
- Data Channel (WebRTC): Once devices are introduced, they create a direct, encrypted connection to transfer data.
- Node.js (v16 or higher)
- npm (comes with Node.js)
- A Wi-Fi network connecting all devices.
To run this locally, you need to start two terminals.
npm installThis server listens on port 3001. It handles device discovery.
npm run serverOutput: 🚀 Signaling Server running at: http://192.168.1.X:3001
This serves the UI on port 5173.
npm run dev -- --hostOutput: Network: http://192.168.1.X:5173
- Ensure your computer and phone are on the same Wi-Fi network.
- Look at the Frontend Terminal output for the Network URL.
- Example:
http://192.168.1.5:5173
- Example:
- Open Safari (iOS) or Chrome (Android) and enter that URL.
- For the best experience (PWA):
- iOS: Tap the Share button → Tap Add to Home Screen.
- Android: Tap Menu (three dots) → Tap Install App or Add to Home screen.
- Launch the app from your home screen. It will look and feel like a native app.
- Check the Server: Ensure
npm run serveris running and shows no errors. - Check the Network: Are both devices on the exact same Wi-Fi? (e.g., Guest networks often block device-to-device communication).
- Firewall: Ensure your computer's firewall allows incoming connections on port 3001 (Node) and 5173 (Vite).
- Refresh: Sometimes the WebRTC handshake fails. Refresh both browsers.
- Browser Privacy: Some browsers (like Brave or strict Safari settings) might block WebRTC. Try disabling shields for the local IP.
- HTTPS: Modern browsers sometimes restrict WebRTC features on
http://unless it islocalhost. If using Chrome on Android, you might need to enablechrome://flags/#unsafely-treat-insecure-origin-as-securefor your local IP.
- Double-check the IP address.
- Ensure your computer is not using a VPN that isolates it from the LAN.
- Frontend: React 18, TypeScript, Tailwind CSS, Lucide Icons.
- Build Tool: Vite.
- Backend (Signaling): Node.js, Express, Socket.io.
- Protocol: WebRTC (RTCPeerConnection, RTCDataChannel).
This project is open-source and available under the MIT License.