Secure peer-to-peer file transfer

Direct, Fast, and Zero-Knowledge Peer-to-Peer File Sharing

Share files of any size directly from device to device. Zero configuration, completely local, E2E encrypted, and bypasses browser memory constraints.

https://localhost:3001

Sender

Direct WebRTC

Receiver

Engineered for Speed & Security

A unified hybrid transfer protocol built for seamless operation in online, cloud-scale, and isolated offline LAN environments.

Direct Beam (Instant P2P)

Devices on the same network discover each other automatically based on shared IP mapping. Connect and stream files in seconds over local Wi-Fi with no configuration.

Zero-Knowledge Security

Files are encrypted chunk-by-chunk in-browser using AES-256-GCM. The decryption key stays inside the URL hash fragment (#), which is never sent to the server.

IndexedDB Buffering

Large files (10GB+) will exhaust browser heap memory and crash the tab. We buffer chunks directly to client disk storage via IndexedDB to enable infinite file size transfers.

SW Streaming assembly

A browser Service Worker intercepts downloads and streams chunks from IndexedDB directly to the browser download manager in real-time, bypassing RAM heap exhaustion.

Symmetric End-to-End Cryptography

SendFiles protects your privacy with a zero-knowledge architecture. No unencrypted data or keys ever touch the network or server.

1

Client-Side Key Generation

An AES-256-GCM key is generated directly in your browser. Files are encrypted chunk-by-chunk before sending.

2

Hash-Bound Decryption Key

The key is placed in the URL hash (#). Browsers strictly keep hash segments client-side, meaning the key is never sent to the signaling server.

3

Salted PBKDF2 Password Lock

Locker PIN codes are stretched client-side using PBKDF2 with 600,000 iterations of SHA-256, protecting against brute-force attacks.

// Zero-Knowledge Key Isolation
https://zihaaaad.github.io/SendFiles/#/locker/7AF92D#key=7e9f3b8a1c...
// Browsers never send hash (#) to the server.
Network Gateway Key Blocked
// Express Server Received Parameters:
RoomID: "7AF92D"
File Count: 3
DecryptionKey: null (Unknown to Server)

Download SendFiles

The desktop app is the recommended option. The command-line builds remain available if you prefer to run SendFiles as a background service.

Desktop app Recommended

A normal windowed application, like any other program on your computer. It runs the sharing server in the background and shows the interface in its own window. Other devices on your Wi-Fi connect to the LAN address displayed inside the app.

Windows

Windows 10/11, x64

Linux

x64 AppImage

macOS

Intel and Apple Silicon

Unsigned builds: these applications are not code-signed. Windows SmartScreen shows "Windows protected your PC" the first time you run one, so choose More info then Run anyway. On macOS, right-click the app and choose Open for the first launch.

Alternative: run it as a server

You do not need these if you downloaded the desktop app above. They start the same server from a terminal and open your default browser instead of giving you an application window. Use them to run SendFiles headless, or if an application control policy blocks the desktop app.

Windows

Windows 10/11, x64

Linux

Ubuntu, Debian, CentOS, x64

Blocked by security policy? Standalone executables are compiled wrappers that can trigger corporate security warnings such as SmartScreen or Windows Defender Application Control. The portable archives instead ship the officially signed Node.js binary and start the app through a small launcher script, which those policies normally allow.

Port already in use? SendFiles listens on port 3000 by default. If something else holds that port, it moves to the next free one and prints the address it chose. Set the PORT and HTTPS_PORT environment variables to pick your own.

Technical FAQ

Have questions about SendFiles' design, security, or network routing? Find answers here.

Does the server see my files or passwords?
No. All encryption keys are stored inside the URL hash (#), which remains local in your browser and is never sent to the network. Passwords are salted and stretched client-side using 600,000 iterations of PBKDF2 before the hash is sent, ensuring the server has zero knowledge of your plain text passcode or raw file contents.
How does the local network auto-discovery work?
When you load the app, the client pings the server to determine its public WAN IP address. Senders and receivers sharing the same public IP are grouped into a secure "neighborhood". For local networks, they automatically exchange signaling offers to establish a direct LAN peer connection.
What happens if direct P2P connections are blocked?
In restrictive network configurations (like double NATs or symmetric enterprise firewalls) where WebRTC fails, the engine falls back to a WebSocket chunk relay. Chunks are encrypted, packaged using custom binary framing (saving 33% overhead over Base64), and securely routed through the signaling gateway.
Can this application scale horizontally?
Yes. The backend features fully integrated Redis clustering. Active room mappings and WebSocket signaling packets are replicated across server nodes using Redis Pub/Sub channels, allowing you to run a cluster of SendFiles instances behind a load balancer.