Everything you need to know about using FileCourier — from file sizes to connection troubleshooting.
No. Your file is never uploaded to any server. It travels directly between two browsers using WebRTC's DataChannel — the server only exchanges a small handshake (peer IDs and ICE candidates), then steps aside completely.
Yes. WebRTC mandates DTLS-SRTP encryption on every DataChannel — there is no unencrypted mode. Your file is encrypted in transit regardless of whether it goes direct P2P or through a TURN relay server.
Only peer IDs and ICE candidates (network path metadata). No file names, no file data, no personal information. After the WebRTC channel opens, the signaling server is no longer involved.
No. There are zero analytics scripts, zero tracking pixels, zero cookies, and zero fingerprinting on FileCourier. We have no way of knowing who used the service or what was transferred.
No limit for Chrome and Edge users. Files stream directly to disk using a service worker, so the file never fully loads into RAM — you can transfer 100 GB or more. Firefox and Safari use an in-memory fallback that is capped at 512 MB per file.
Yes — up to 10 files per session. Add them to the queue before or after the receiver connects. Each file is offered individually: the receiver sees the file name, size, and type, and can Accept or Decline. Files are sent sequentially once accepted.
P2P transfer works in all modern browsers (Chrome, Edge, Firefox, Safari). Unlimited file sizes require Chrome or Edge (StreamSaver.js service worker). Firefox and Safari support transfers up to 512 MB via the in-memory fallback. We recommend Chrome or Edge for the best experience.
No. You can send from a desktop browser to a mobile browser, or any other combination. The only requirement is that both people use a browser that supports WebRTC (all modern browsers do).
Yes — for home WiFi-to-WiFi and regular broadband connections worldwide, it works directly in about 90% of cases. For mobile data behind carrier NAT or strict firewalls, the app automatically offers a relay button after 8 seconds. Relay works for most networks. On a small number of restrictive mobile carriers, relay servers may also be unreachable — switching the mobile device to WiFi fixes this immediately.
Relay mode routes all traffic through a TURN server when a direct peer-to-peer connection can't be established (e.g., strict NAT or CGNAT). After 8 seconds without a connection, a yellow "Connect via Relay" button appears on the receiver's screen. Clicking it reconnects through the relay — the sender's link stays valid and doesn't need refreshing.
Yes. The sender's browser tab must remain open for the entire duration of the transfer. If the sender closes the tab mid-transfer, the connection drops and the receiver cannot continue. The receiver's tab must also stay open while downloading.
If the receiver switches networks (e.g., from mobile data to WiFi), the app detects the change and automatically attempts to reconnect up to three times. If reconnection succeeds, the connection re-establishes and the sender can offer the files again. If you need to start fresh, the sender's share link remains valid — just refresh the receiver's tab.
After 8 seconds of no connection, a "Connect via Relay" button appears on the receiver's screen — click it. This reroutes through a relay server and works for most strict or mobile networks. The sender's link stays valid; no refresh needed.
If relay also fails: your mobile carrier is likely blocking relay server IP ranges. The fix is to connect the mobile device to WiFi instead of mobile data — this resolves the issue immediately.
The link is valid as long as the sender's browser tab stays open and connected. If the sender closes the tab or the signaling server connection drops and doesn't recover, the link becomes invalid. The sender can refresh the page to generate a new link.
Only one receiver can be connected at a time. If a second person opens the link while a transfer is already in progress, they will be unable to connect until the current session ends. After the transfer completes, the sender can click "Send Again" to generate a new session for the next recipient.
Yes, completely free. No subscriptions, no credits, no paywalls. FileCourier is open source (MIT license). You can also self-host the signaling server on any Node.js host.
Still have questions?
Open a GitHub issue or just try FileCourier — it takes 10 seconds to start a transfer.