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.
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 readsTransfer 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.How the cap is enforced
How the cap is enforced
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.