Skip to content

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.

Notifications You must be signed in to change notification settings

TaylorChen/transfer-anywhere

Repository files navigation

Transfer Anywhere 📡

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.

screencapture-192-168-3-23-3000-2025-11-23-00_20_31

✨ Features

  • 🚀 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.

🏗 Architecture

This project uses a Client-Server architecture for discovery, but a Peer-to-Peer architecture for data transfer.

  1. Frontend (React + Vite): The user interface.
  2. 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.
  3. Data Channel (WebRTC): Once devices are introduced, they create a direct, encrypted connection to transfer data.

🛠️ Prerequisites

  • Node.js (v16 or higher)
  • npm (comes with Node.js)
  • A Wi-Fi network connecting all devices.

🚀 Quick Start (Development)

To run this locally, you need to start two terminals.

1. Install Dependencies

npm install

2. Start the Signaling Server

This server listens on port 3001. It handles device discovery.

npm run server

Output: 🚀 Signaling Server running at: http://192.168.1.X:3001

3. Start the Frontend Application

This serves the UI on port 5173.

npm run dev -- --host

Output: Network: http://192.168.1.X:5173


📱 How to Use on Mobile (iOS / Android)

  1. Ensure your computer and phone are on the same Wi-Fi network.
  2. Look at the Frontend Terminal output for the Network URL.
    • Example: http://192.168.1.5:5173
  3. Open Safari (iOS) or Chrome (Android) and enter that URL.
  4. 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.
  5. Launch the app from your home screen. It will look and feel like a native app.

⚠️ Troubleshooting

"I can't see other devices"

  1. Check the Server: Ensure npm run server is running and shows no errors.
  2. Check the Network: Are both devices on the exact same Wi-Fi? (e.g., Guest networks often block device-to-device communication).
  3. Firewall: Ensure your computer's firewall allows incoming connections on port 3001 (Node) and 5173 (Vite).

"Transfer stuck at 0%" or "Waiting..."

  1. Refresh: Sometimes the WebRTC handshake fails. Refresh both browsers.
  2. Browser Privacy: Some browsers (like Brave or strict Safari settings) might block WebRTC. Try disabling shields for the local IP.
  3. HTTPS: Modern browsers sometimes restrict WebRTC features on http:// unless it is localhost. If using Chrome on Android, you might need to enable chrome://flags/#unsafely-treat-insecure-origin-as-secure for your local IP.

"Site cannot be reached" on mobile

  1. Double-check the IP address.
  2. Ensure your computer is not using a VPN that isolates it from the LAN.

📦 Tech Stack

  • Frontend: React 18, TypeScript, Tailwind CSS, Lucide Icons.
  • Build Tool: Vite.
  • Backend (Signaling): Node.js, Express, Socket.io.
  • Protocol: WebRTC (RTCPeerConnection, RTCDataChannel).

📄 License

This project is open-source and available under the MIT License.

About

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.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published