How the transfer works
When you send a file, we use WebRTC to establish a connection between you and the recipient. Our signaling server introduces the two devices and then steps aside. In most cases, data flows directly between browsers. When a direct path is not available, our TURN relay server bridges the connection. Even through the relay, files remain encrypted and are never stored.
Information we collect
- Files. We do not collect or store any files.
- Metadata. Filenames and sizes travel directly between the two devices over the encrypted data channel so the receiver can see what is arriving. They never pass through, and are never stored on, our servers.
- Aggregate transfer total. When a transfer completes, the receiving side reports only the number of bytes it received. We add this to one shared, all-time counter of total bytes transferred, shown on our homepage. The sender never reports. We do not store file names, file contents, or any link between this number and you. You can opt out of this report: uncheck "Contribute to global stats" on the receiver view in the browser, or use
--no-report(or setFLOE_NO_STATS=1) when using the CLI. - IP addresses. Like all web servers, our hosting provider may log connection request IP addresses for security and abuse prevention. We do not link this to your identity.
Third-party services
Floe uses third-party infrastructure providers for hosting and network relay services. The web app is hosted on Vercel, the signaling server runs on Microsoft Azure, and when a relay is needed, encrypted file data passes through Cloudflare's TURN network. For usage analytics we use only Umami, which is cookieless and does not track you across sites, and we optionally use Sentry for error monitoring. The link you share carries its room id in the URL fragment (the part after the #). Browsers never include the fragment in HTTP requests, so it stays out of hosting logs, referrer headers, and analytics. Our signaling server receives the room id only when your app joins the room to be paired with your peer; it is held in memory for the life of the session and never logged. Please refer to each provider's privacy policy regarding data handling.
Relay server
When a direct connection cannot be established, file data is routed through Cloudflare's TURN relay network (turn.cloudflare.com). The relay processes encrypted data packets in transit and does not store, decrypt, or inspect any file contents. Relay sessions are limited to 2 GB per session. Connection metadata (timestamps, IP addresses) may be logged by the infrastructure provider for security purposes.
Error monitoring
The web app uses Sentry to monitor application errors and performance. This applies to floe.one in the browser only; the desktop app and the CLI contain no error monitoring. Sentry may capture:
- Error stack traces and browser metadata (browser version, OS, device type)
- Connection type (direct or relay), transfer progress, file count, and total size at the time of an error
Session replay is not enabled. Floe used to record a sample of browser sessions. A recording reported the page address, and on a receiver page that address contains the room link, so replay was removed rather than kept: the room link is the only thing protecting a transfer.
Sentry does not capture file names, file contents, or any personally identifiable information. The room link is stripped from every error report and breadcrumb before it is sent. Sentry Privacy Policy.
Usage analytics
The web app uses Umami, a privacy-focused analytics tool, to understand how the service is used. This applies to floe.one in the browser only; the desktop app and the CLI contain no analytics. Umami collects:
- Aggregate transfer metrics: number of files and total bytes transferred per session
- Connection type (direct or relay) and whether a transfer succeeded or failed
- Standard page view data: pages visited, browser type, country (not city)
Umami does not use cookies, does not collect personally identifiable information, and does not track individuals across sessions or websites. File names and file contents are never recorded. Umami Privacy Policy.
The desktop app
Floe Desktop is the same peer-to-peer engine as the web app and the CLI, running as a Windows application. Its network behavior is identical: it contacts our signaling server to pair you with your peer, fetches relay credentials, and then streams file data directly between devices. It contains no analytics, no error monitoring, and no telemetry. The only optional report is the same anonymous byte total described above, which you can turn off with "Contribute to global stats" in Settings.
Everything else it does stays on your device:
- Clipboard. The app reads your clipboard only when you paste (Ctrl+V) to stage copied files or a screenshot for sending. It never reads the clipboard in the background.
- Files. Received files are written to the folder you choose (your Downloads folder by default). Nothing is uploaded anywhere.
- Settings. Your preferences are stored locally in your user profile and are not removed automatically when the app is uninstalled.
- Optional right-click menu. The GitHub build can add a "Send with Floe" entry to the File Explorer right-click menu. Turning it on writes one per-user registry entry; turning it off (or uninstalling) removes it. The Microsoft Store build does not offer this entry.
- Notifications. The app shows standard Windows notifications when a transfer completes or fails.
When installed from the Microsoft Store, installation and automatic updates are handled by Microsoft; see Microsoft's privacy statement for what the Store itself collects.
Contact & abuse reports
Questions about this policy, bug reports, and abuse reports all go to our public issue tracker: github.com/jannskiee/floe/issues.
Because Floe is peer-to-peer, transferred content never reaches our servers: we cannot see, store, or remove files that users send to each other. What we can do in response to a report is restrict abusive use of the signaling and relay infrastructure. If you believe Floe is being used to send you illegal or harmful content, stop accepting transfers from that sender and report the details on the issue tracker so we can act on the infrastructure side.