Skip to main content
Someone sent you a Floe link, or a QR code. Open it in any modern browser and the files arrive on their own. There is nothing to install, no account, and nothing to click to start. Click the link, or point your phone’s camera at the QR code. The page joins the sender’s room by itself and starts negotiating the connection.

If Floe says “Open in your browser”

Apps like Facebook, Messenger, Instagram, TikTok, Snapchat, LINE, X, and WeChat open links in their own built-in browser rather than in Chrome or Safari. Those built-in browsers handle file transfers poorly, so Floe recognizes them and shows this instead of the transfer view. Those eight are recognized by name. Any other Android app that opens links in a plain web view is caught by a general check and gets the same screen, worded “This in-app browser”, so an app that is not on the list can still land you here.
A full-screen Floe prompt reading Open in your browser, with two numbered steps for reaching Safari, a Copy link to paste in browser button, and a Continue anyway link

What Floe shows when a link is opened inside another app's browser

Follow the two steps, or tap Copy link to paste in browser and open it yourself in Chrome, Safari, Edge, or Firefox. Continue anyway (some features may not work) proceeds regardless. Until you do one of those, the page has not joined the room. That is deliberate: a room takes exactly one recipient, so an in-app browser cannot silently take that seat and lock the real browser out.

While you wait

The card walks through three steps as it gets ready, and offers one choice.
The Floe receive card with a green Direct badge, a completed Secure room joined step, an active Waiting for the sender to start step, and a checked Contribute to global stats box

The receiving card before the first file arrives

The badge at the top right means the same thing it does on the sending side: Offline (red) is no signaling connection, Ready (green) is signaling up but the route not yet decided, Direct (green) is device to device, and Relay (amber) is through the encrypted relay. It tracks your own connection, so a green Ready does not mean the sender is ready. The ping readout next to it is shown to senders only. The transfer starts by itself, usually a couple of seconds after the connection is established. If it never starts, the sender’s side may have stopped it: Floe checks the route 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

Floe’s homepage carries a public, all-time count of bytes moved by everyone. When a transfer finishes, the receiving side adds this transfer’s size to that total, and nothing else. No file names, no contents, nothing identifying, and the report never slows or blocks the transfer. It is on by default. The checkbox disappears once the first file lands, so decide while you are waiting. Every receiving surface can turn the report off, and turning it off means the byte count is never sent, rather than sent and ignored.
  • Browser: uncheck Contribute to global stats on the receiver view before the first file lands. The choice is saved in that browser and applies to every later transfer from it.
  • Floe Desktop: turn off Contribute to global stats in Settings. It is saved with your other settings.
  • CLI: pass --no-report to floe receive for one transfer, or set FLOE_NO_STATS=1 in your environment to opt out for good.
The sender never reports on any surface, so this only ever concerns transfers you receive. This switch covers the public counter and nothing else. On floe.one the site’s own anonymous analytics record a transfer’s outcome separately, and are described under Error monitoring and analytics. The CLI, the desktop app, and any self-hosted instance without an analytics key send neither. Your choice is stored in this browser and applies to every later transfer from it. The total is only ever shown on the homepage. See Security and privacy for the full data-handling note.

Saving what arrives

Every file gets its own download button the moment it lands, so you can start saving while the rest are still coming.
The Floe receive card showing Download All and Download ZIP buttons above three completed files, each with its own download button, and the line 3 files received

A finished transfer, with per-file buttons and the two bulk options

On a transfer of two or more files, Download All and Download ZIP appear as soon as the second file lands. They hide again while the next file is streaming and come back between files, so if they vanish mid-transfer nothing is wrong. Once the transfer finishes they stay put. The two differ in more than convenience. A ZIP keeps any folder structure the sender used and numbers duplicate names inside the archive. Saving files one at a time flattens the structure and leaves duplicate names to your browser. A single-file transfer shows only that file’s own button, and no bulk options. On iOS, use Download ZIP when there is more than one file. Saving them individually behaves inconsistently in Safari and in iOS web views. The exception is a very large transfer: zipping holds every file in memory at once, so if that fails, save them from their own rows instead.

The sender has to stay connected

Files stream from the sender’s device, so if they close their tab, quit Floe Desktop, or stop the CLI before the transfer finishes, the connection drops and you need a new session. If your network blips before the first file arrives, Floe recovers on its own: it rejoins the room and the sender builds a fresh connection. Once files have started landing, signaling is finished and Floe stops rejoining, so a drop after that point ends the session and you need a new link for whatever did not arrive. What you see when the sender drops depends on whether anything had arrived yet. Before the first file, the status reads Peer disconnected. Waiting for reconnection, and it does not resume by itself. After at least one file has landed, the status names what actually arrived: a partial multi-file transfer reads Sender disconnected. 1 of 3 files received, and only a batch where every announced file landed reads Transfer complete. Either way, files that already finished stay in the list and stay downloadable. A file that arrives incomplete is not offered to you at all. Floe compares what arrived against the size the sender announced and discards anything that does not match, in either direction, rather than handing you a file that looks whole and is not. Two details follow from that. A mismatch stops the rest of the transfer too, so files queued behind the bad one never arrive either. And the check needs a size to compare against: if the sending peer announces none, which only very old releases do, the file is accepted as it stands.

Receiving in the terminal or the desktop app instead

Both write straight to disk, rebuild folder structure, and have no memory ceiling, which makes them the better choice for anything multi-gigabyte.
Terminal
Links made in the browser carry the ?s= value and links printed by floe send do not. floe receive accepts both, and so does the Floe Desktop Receive tab. If the sender gave you a three-word code instead, pass that:
Terminal
See floe receive and Receive files in the desktop app. “Link Invalid” means the link is malformed or already in use, which are its only two causes. A room takes exactly one recipient, so a link that someone else is already receiving on will not work for you. Ask for a new one. A short code that will not resolve came from floe send or Floe Desktop and lasts ten minutes. Links from the web app carry no code and stay valid as long as the sender’s tab is open. Stuck connecting is usually a network that blocks direct paths. 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, run floe send --no-relay, or simply closed their tab. See Troubleshooting for more.