A link with
/r/ in it is a request link. It is for sending files to the
person who made it, not for receiving: see Sending through a request link.The short version
Open the link and keep the tab open. The files arrive by themselves, each with its own download button. Your browser holds them until you save them, so save every file before you close the tab. With two or more files, Download ZIP saves them all in one archive, folders included.Open the link
Click the link, or point your phone’s camera at the QR code. The page joins the sender’s room, the meeting point for this one transfer, and connects to the sender by itself. A link made in the web app works while the sender’s page stays open and connected to Floe’s server, which introduces the two devices. See How long a code and a link last. A link from the web app, fromfloe 1.12 and later or from Floe Desktop 1.1 and later holds a
link key after the #, which no server receives. The page then checks that
the sender holds the same link key before it accepts a file. If the sender cannot prove it, or
connects and says nothing for 30 seconds, nothing is received and the page says
“Floe couldn’t confirm who sent this link, so nothing was received. Ask them for a new link.”
A link from an older Floe has no link key, and so has no check. It carries #room=, or ?room=
before that, and it still opens the same way. Nothing on the page tells the two apart. See
A room code or a link with no link key has no check.
If Floe says “Open in your browser”
Apps like Facebook, Messenger, Instagram, TikTok, Snapchat, LINE, X, and WeChat open links in their own in-app browser rather than in Chrome or Safari. Those built-in browsers handle file transfers poorly, so Floe recognizes them and shows this screen instead of the transfer view. It does the same when floe.one itself is opened in one of those apps to send. The screen names the app (it calls X “Twitter”), or says “This in-app browser” for some other Android apps. Any other app’s built-in browser is not recognized, and the transfer view opens in it directly.
What Floe shows when a link is opened inside another app's browser
- On Android: tap the ⋮ menu at the top right, then “Open in browser” or “Open in Chrome”.
- On an iPhone, an iPad or anything else: tap the icon of an arrow leaving a box, or the ··· menu, then “Open in Safari” or “Open in Browser”.
While you wait
The card walks through three steps as it gets ready: “Secure room joined”, “Waiting for the sender to start” and “Files stream in below”. It also offers one choice.
The receiving card before the first file arrives
floe send or Floe Desktop ends.
The transfer starts by itself once the connection is established. A sender in the browser checks
the route first, and when they turned relay fallback off or queued more than 2 GB, that takes about
2 seconds. When the route goes through a relay in either case, their page stops
before any file moves.
Your page then shows a red banner with their reason. Ask them to do what it says, then open the new link they send.
Contribute to global stats
Floe’s homepage carries a public, all-time count of bytes moved by everyone, shown under the card as an amount “transferred globally”. When the last file of a transfer lands, 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. A transfer that stops before its last file reports nothing, and neither does one made only of empty files. It is on by default. The checkbox shows from the moment the page opens and disappears once the first file lands, so decide while you are waiting. Your choice is kept in this browser, so unchecking it once covers your later transfers too. 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, where it is shown until the first file arrives. The choice is saved in that browser and applies to every later transfer in it.
- Floe Desktop: turn off Contribute to global stats in Settings. It is saved with your other settings.
- CLI: pass
--no-reporttofloe receivefor one transfer, or setFLOE_NO_STATS=1in your environment to opt out of every transfer run from it.
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. A saved file goes where your browser puts every download, usually the Downloads folder. On an iPhone or iPad, Safari puts downloads in the Files app.
A finished transfer, with per-file buttons and the two bulk options
- Download All saves each file separately, about one every 300 ms. Your browser may ask you to allow multiple downloads.
- Download ZIP bundles everything into one archive named
floe_transfer_<timestamp>.zip. The number in the name is the time the archive was finished, in milliseconds, not the time you clicked. Files go into it as they are, without compression, so the archive is about as large as the files together. An archive of 4 GB or more, or of more than 65,534 files, is refused before any file is read: see Troubleshooting.
- Only the file’s own name shows, without its folders. Two files of the same name from different folders look the same in the list.
- Characters that Windows does not allow in a name, such as
:and?, become_. - A name with nothing usable in it is saved as
received_file.
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 nothing resumes it. What you see when the sender leaves depends on how far things had got:
In the second case the banner can also read “The sender ended the transfer. Ask them to start it
again.” When the sender’s side stopped with a reason, the banner shows that reason instead. A
sender in the browser gives one when it stops by itself or refuses a relayed path, and a
floe send or
Floe Desktop gives one for a file it can no longer read. See
Troubleshooting.
In the third case the badge goes back to Offline, the progress row goes away, and the files
that arrived stay listed. See
Troubleshooting. The rest needs a new
transfer: Floe cannot resume one that stopped.
A reload works while a sender in the browser still has their page open. Files that already arrived
stay in the list, and can still be saved, for as long as the page stays open.
This is what the web app at floe.one shows. A web app that someone hosts themselves can run an
older version, where a few of these lines read differently: see
What an older web app shows.
Your own connection to Floe’s server can drop for a moment while the two devices are still
connecting. The page then joins again by itself. If the server still counts the page’s old
connection, the page keeps trying for about a minute before it shows “Link Invalid”. Whether that
saves the transfer depends on the sender:
A device that comes back on a different network can be refused either way. See
How a transfer works. Once the two
devices are connected, a drop in the server connection no longer matters, and the page does not
join again.
Receiving in the terminal or the desktop app instead
Both write straight to disk as the bytes arrive and rebuild folder structure, which makes them the better choice for anything multi-gigabyte. A browser can only take what that browser can hold, and a phone holds less than a computer. Neither app runs on a phone: for a large transfer to one, see Known limitations. A share link works infloe receive and in the Floe Desktop Receive tab.
A link from a self-hosted Floe also needs that server’s address: see
Use a self-hosted server.
Terminal
& in the link would otherwise end the command. See
Put the link in quotes.
If the sender gave you a room code instead, three words, pass that. The
browser has no field for one. A room code carries no link key, so a transfer joined with one has no
check.
Terminal
If something goes wrong
- “Link Invalid”: the link is incomplete, in use, or locked to other networks. See Troubleshooting.
- “The sender is not connected”, or the card stays on “Waiting for the sender to start”: see The transfer never starts.
- “Connection failed. Ask the sender to try again.”: see Troubleshooting.
- “Floe couldn’t confirm who sent this link”: see Troubleshooting.
- “This browser can’t check this link”: see Troubleshooting.