Skip to main content
When someone sends you files via Floe, they share a link (e.g. https://floe.one/#room=...) or a QR code. Open it in any modern browser to receive. Click the link or scan the QR code. The page connects to the signaling server and joins the sender’s room automatically. No account or installation is needed.
Some in-app browsers (embedded in Facebook, Messenger, Instagram, TikTok, Snapchat, LINE, X (Twitter), WeChat, and generic Android WebViews) have limited support for file transfers. Floe recognizes them by user agent, and instead of loading the transfer view it shows a full-screen prompt with steps for opening the page in Chrome or Safari, plus a Copy link to paste in browser button. A Continue anyway link sits at the bottom, but some features may not work.

Connection

Once the page opens, Floe joins the room and negotiates the WebRTC connection. While you wait, the card shows a three-step pipeline: Secure room joined, Waiting for the sender to start, then Files stream in below. Each step ticks over as it completes. A status dot sits in the top-right of the transfer card once it is up: The dot tracks your own connection to the signaling server until the peer connection resolves, so a green Ready does not by itself mean the sender is ready. The ping readout next to the dot is shown to senders only. The transfer begins on its own, usually a couple of seconds after the connection is established. You do not need to click anything. If it never starts, the sender’s side may have blocked it: Floe checks the path before any bytes move, and refuses a relayed connection when the sender turned relay fallback off or queued more than 2 GB. See Sending Files.

Contribute to global stats

While you wait for the transfer, the receiver view shows a Contribute to global stats checkbox. It is on by default. The checkbox disappears once the first file lands, so set it before the transfer starts. Floe’s homepage has a public, all-time counter of total bytes transferred across every user. When a transfer finishes, the receiving side adds only this transfer’s byte count to that shared total. File names, file contents, and identifying information are never sent, and the report never slows or blocks the transfer. Your choice is saved in your browser and applies to all future transfers from that device. The sender never reports, and the counter is viewable only on the homepage. See Security and Privacy for the full data-handling note.

Download options

Each file gets a download button (the download-arrow icon, no label) on its row as soon as it arrives, so you can save files while the rest are still streaming. When a transfer contains two or more files, two extra buttons appear once everything has arrived: A single-file transfer shows only that file’s own download button.
On iOS, use Download ZIP when the transfer has more than one file. Individual file downloads can behave inconsistently on Safari and iOS web views due to browser sandboxing.

The sender must stay connected

Files stream directly from the sender’s device. If the sender closes their browser tab, quits Floe Desktop, or stops the CLI process before the transfer completes, the connection drops and you will need to ask them to start a new session. If your own network blips before the first file arrives, Floe recovers on its own: it re-joins the room as soon as you are back and the sender builds a fresh connection. Once files have started landing, signaling is finished and Floe stops re-joining, so a drop that takes the peer connection with it ends the session and you will need a new link for whatever did not arrive. If the sender’s side is the one that dropped before anything arrived, you see Peer disconnected. Waiting for reconnection and the transfer does not resume by itself. Either way, files that already finished stay in the list and remain downloadable.

Receiving with the CLI instead

If you prefer the terminal, paste the full link into floe receive:
Terminal
Links created in the browser carry a ?s= nonce; links printed by floe send do not. floe receive accepts both. Or use the short code if the sender shares one:
Terminal
See floe receive for details and flags.
  • “Link Invalid”: the link is expired, malformed, or already in use. A room admits exactly one receiver, so a link someone else has already opened will not work for you. Ask the sender to start a new session.
  • Short code expired: short codes come from floe send or Floe Desktop and last 10 minutes. Links from the web app carry no code and stay valid as long as the sender’s tab is open.
  • Stuck connecting: the sender may be behind a strict network. Both peers need to be on compatible networks for a direct connection. The error Could not connect. Ask the sender to enable “Network Relay” and try again. covers every failure Floe treats as expected, so the relay is not always the culprit: the sender may have turned their Network relay fallback checkbox off (or run floe send --no-relay), or they may simply have closed their tab. Ask them to leave relay fallback on and create a new link.
See Troubleshooting for more help.