FileDrop is a high-performance peer-to-peer file transfer platform built using WebRTC, Next.js and TypeScript. It enables secure browser-to-browser file sharing without uploading files to any server.
No uploads. No cloud storage. No middleman. Just pure P2P transfer.
https://file-drop-inky.vercel.app/
https://filedrop-production-b0ac.up.railway.app
- π Direct Peer-to-Peer File Transfer (WebRTC Data Channels)
- π¦ Chunked File Streaming (64 KB chunks)
- β‘ Zero Server-Side File Storage
- π§ BufferedAmount Backpressure Handling
- π Real-Time Upload & Download Progress Tracking
- π§Ύ Room-Based Connection System
- π§βπ€βπ§ Secure Two-Peer Sessions
- β Transfer Abort & Error Handling
- π₯ Native File Save Support
- π Fully Deployed & Production Ready
- π Browser-to-Browser Secure File Sharing
+----------------------+
| Frontend |
| Next.js |
| (Hosted on Vercel) |
+----------+-----------+
|
|
v
+----------------------+
| Signalling Server |
| Node.js + WS |
| (Hosted on Railway) |
+----------+-----------+
|
SDP Exchange Only
|
v
+----------------------+
| WebRTC P2P |
| Browser <--------> Browser
+----------------------+
|
v
Direct File Transfer
(No Files Stored Anywhere)
- User creates a room (random 10-character room ID).
- Another user joins using the same room ID.
- The signalling server exchanges SDP offers and answers.
- WebRTC establishes a direct peer connection.
- Files are split into 64 KB chunks.
- Chunks are streamed over WebRTC Data Channels.
- Receiver writes files directly to disk.
The signalling server is ONLY used to establish the connection. No file ever passes through the server.
- Next.js (App Router)
- TypeScript
- Tailwind CSS
- Framer Motion
- Node.js
- Express.js
- WebSocket (ws)
- WebRTC
- RTCPeerConnection
- RTCDataChannel
- Streams API
- StreamSaver.js
- Vercel
- Railway
FileDrop
β
βββ client
β βββ app
β βββ components
β β
β βββ hooks
β β βββ useWebRTC.ts
β β βββ useFileTransfer.ts
β β
β βββ public
β
βββ Server
β βββ server.ts
β
βββ screenshots
git clone https://github.com/girish-xd/FileDrop.gitcd Server
npm install
npm run devServer runs on:
http://localhost:1908
cd client
npm install
npm run devCreate a .env.local file inside the client directory.
NEXT_PUBLIC_BACKEND_URL=http://localhost:1908For production deployment:
NEXT_PUBLIC_BACKEND_URL=https://filedrop-production-b0ac.up.railway.app- Open FileDrop on two devices.
- Click Create Room.
- Share the room ID.
- Join the room from the second device.
- Select or drag & drop any file.
- Accept the transfer request.
- Download completed. β
- Supports only two peers per room.
- WebRTC connectivity depends on network conditions.
- Extremely large file transfers depend on bandwidth and browser limitations.
- Multi-peer file sharing.
- Resume interrupted transfers.
- End-to-end encryption layer.
- File previews.
- Mobile-first optimizations.
- QR-based room sharing.
If you liked the project, consider giving it a star.




