Skip to main content
A direct transfer has no size limit. Floe does not cap it, because the file never touches anything Floe pays for. Most transfers are direct. A relayed transfer is capped at 2 GB per session. When a network blocks the direct path, the file goes through a relay instead, and relay bandwidth costs real money. The cap is what keeps Floe free. So the practical answer to “how big a file can I send” is: as big as you like, as long as the two devices can reach each other directly. See Direct connections for what decides that.

How to stay on the unlimited path

These improve your odds of a direct connection:
  • Use a normal home or personal Wi-Fi network.
  • Disconnect from any VPN.
  • Avoid strict corporate and university networks.
  • Try a personal mobile hotspot when you cannot avoid one.
Two devices on ordinary consumer networks almost always connect directly, even on different networks and even on mobile data.

What counts as one session

A session is one sender and one receiver. The room holds exactly two people, so only one recipient is ever connected at a time and there is no way for a session to accumulate. The check happens once, before any file data moves. When the connection turns out to be relayed, Floe compares the total size of everything you queued against 2 GB and either allows the whole transfer or refuses it. It is not a meter that stops you partway, so a 3 GB batch over a relay is declined up front rather than truncated at 2 GB. Exactly 2 GB is allowed. Only more than that is refused. Starting a new transfer runs the check again from scratch, so splitting a large batch into pieces under the cap works. Deliberately cycling sessions to get around the cap goes against the spirit of a free service.

What you see when it stops you

In the browser, the status line reads Transfer blocked. Relay limit exceeded. and nothing is sent. In the CLI, the send fails with relay connections are capped at 2 GB, naming the total you selected. In Floe Desktop, the same message, plus Turn off Hide my IP to send larger files when that setting is what forced the relay.

One case that catches people out

Floe Desktop’s Hide my IP address setting, and the CLI’s --relay-only flag, route every transfer through the relay on purpose, so the other person never sees your address. While either is on, the 2 GB cap applies to every transfer, even on a network that could easily have connected directly. Turn it off, or drop the flag, to send more. You never need to turn relay fallback off to send something large. The cap applies only when the connection actually ends up relayed, so leaving fallback on costs a direct transfer nothing and saves the transfer that would otherwise have failed.

Two other limits, which are not Floe’s

A browser receiver holds what it receives in memory. Each file accumulates there as it arrives, and stays there once complete so you can still save it, so the peak is closer to the whole transfer than to any one file. A large enough transfer exhausts the tab, and on a phone that happens sooner. Download ZIP compounds it again, because zipping reads every file back at once. Floe Desktop and the CLI write straight to disk as bytes arrive and have no such ceiling, which makes them the better choice for anything multi-gigabyte. Your disk is the other one. Nothing checks that the receiving device has room before the transfer starts.
The 2 GB cap is local policy on the sending side, applied identically by the web app, the desktop app, and the CLI. It is not part of the wire protocol and the receiver runs no size check of its own.Once the connection is established, the sender inspects the network path that actually won. If it runs through a relay and the queued files total more than the limit, the transfer is blocked before any file data moves. The comparison is strictly greater than, so a payload of exactly 2 GB passes. Direct connections skip the check entirely.If the route cannot be determined, the sender allows the transfer rather than blocking a legitimate one. That is deliberate: a probe hiccup should never stop a transfer that would have worked. The consequence is that a relayed transfer over 2 GB can still start and then fail partway, in the rare case where Floe could not tell it was relayed.The limit lives in RELAY_SIZE_LIMIT in client/lib/relay.ts and RelaySizeLimit in cli/engine/transfer/relay.go. It is compiled into all three clients rather than served by the signaling server, so raising it on a self-hosted instance means building the clients from modified source. See TURN relay.