File transfer for long, lossy networks

Far is fast now.

Send huge files across the world at full speed, even over bad networks.

$farwing cp big.iso user@sydney:/data/

Free for any use up to 1 Gbit/s. Farwing Server goes to 10 Gbit/s and beyond.

Oregon USA Sydney Australia
6.6 Gbit/sOregon to Sydney through 3% packet loss, 139 ms round tripStandard TCP on the same path: 0.57 Mbit/sHow we tested
6.8 Gbit/s
Oregon to Sydney through 1% packet loss
2.6 s
to copy 1 GiB on that path. scp stalled before a complete file.
3.4×
faster than TCP BBR at 1% loss, and ahead of 8 parallel BBR streams
11.5 Gbit/s
the whole path with no loss added, on about 2 of 16 CPU cores

TCP thinks a lost packet means a full road. Over an ocean, it usually doesn't.

On a long path, a few lost packets are normal. They come from radio links, busy exchange points and old hardware, not from too much traffic. Standard TCP backs off every time, and on a 140 ms path it takes a very long time to speed up again.

Farwing does not slow down for loss. It watches one thing: whether a queue is building in the network. If the delay grows, it eases off. If not, it keeps the link full and sends the missing blocks again, lowest first.

Measured, not modelled

Across the Pacific, at every loss level.

Oregon to Sydney, 139 ms round trip. 20-second runs, median of three. Useful data delivered per second, in Mbit/s.

Farwing8 × TCP BBR streamsTCP BBRTCP CUBIC (Linux default)

Every speed claim is measured and dated.How we measured

Median of three runs. On the open path Farwing delivered 11,523 Mbit/s.All results and method

One gigabyte across the Pacific. Under three seconds.

A real 1 GiB copy, Oregon to Sydney, timed from the start of the command to a checked file on disk, against HTTP, UDT, Tsunami, and scp on the same path. Each run had 5 minutes to finish.

Repeat copies: SSH session reused, path speed remembered. A first copy to a new host took 4.5–4.8 s with no loss.

No added loss
Farwing
2.2 s
HTTP
3.9 s
scp
83 s
0.1% loss
Farwing
2.4 s
HTTP
stalled
UDT
71 s
scp
stalled
1% loss
Farwing
2.6 s
HTTP
stalled
UDT
285 s
scp
stalled
3% loss
Farwing
3.0 s
HTTP
stalled
UDT
stalled
Tsunami
stalled
scp
stalled
Bars on a 5-minute scale. Median of three runs. Stalled means the copy was still running, had errored, or had made no progress when that limit ended.
Transfer calculator

How long will your copy take?

Pick a file, a link and two places on the map. The estimate comes from our own measured runs: Farwing against the standard TCP that most copy tools use, or against scp.

Plan
Copy
Compare with
Farwing transfer time
1 min 35 s
Standard TCP: 7.7 days
Speed-up
7,034×
faster than standard TCP on this path
Throughput
9.07 Gbit/s
Standard TCP: 1.2 Mbit/s
Link used
91%
Standard TCP: 0%
How it works

Works like scp. Flies like nothing else.

Starts with SSH

It logs in with your normal SSH access and starts its own receiver on the far host. No daemon to install, no new accounts.

Encrypted end to end

Every session gets fresh keys. Every packet is encrypted and checked with AES-256-GCM. The secret travels inside the SSH session.

Ignores random loss

It slows down only when the delay grows, which means a router queue is filling. It keeps that queue to a few milliseconds.

Finds a way through

UDP blocked? It moves to eight parallel TCP streams. TCP blocked too? It goes through SSH. Same command, same encryption.

Picks up where it stopped

If a copy breaks, run the same command again. Farwing skips the blocks already on disk, on every route, both directions.

Checked as it lands

The whole file is checked with BLAKE3 while it is written, in any order. The check ends milliseconds after the last block. Until then the file keeps a temporary name.

Four lanes, one copy

One copy runs as four coupled lanes, each on its own CPU core. Together they pass per-flow speed limits. 11.5 Gbit/s used about 2 of 16.

Remembers the path

Each copy records what the path carried. The next copy to that host starts near full speed, not from zero. On a 1 GiB copy that saves over a second.

01 · first choice
Encrypted UDP
Its own speed control and loss recovery. Port 47700.
02 · no answer in 3 s
8 × TCP streams
Encrypted 1 MiB chunks over parallel connections, with BBR.
03 · ports closed too
Through SSH
Each stream rides its own SSH session. It still gets there.
04 · from the browser
HTTPS
Farwing Desktop and Farwing Server fall back to the web port when nothing else is open.

Fast. You set the manners.

With the default 4 lanes, one long TCP flow kept about half its speed while Farwing ran.

With --lanes 1, Farwing ran next to a 4.8 Gbit/s TCP flow and did not slow it at all.

--policy autoDefault. Finds the path rate, keeps the router queue to a few milliseconds, ignores random loss.
--lanes 1One flow instead of four. Behaves like a single connection on a shared link.
--policy backgroundGives way to all other traffic. For bulk copies that must not disturb anyone.
--policy fixed -l 900mA steady rate, for links you own. Stops itself if most packets are lost.
Products

One engine. Three ways to fly.

For engineersFree

Farwing

scp-style copies from the terminal, at full speed on any link.

  • Any use, including commercial
  • Up to 1 Gbit/s, 2 transfers at once
  • Linux, macOS and Windows
Download
For people who receive filesFree

Farwing Desktop

Opens when you click a Farwing link and runs the copy at full speed. Shows every file as verified.

  • No account, no setup
  • Pause, resume, retry
  • Windows, macOS and Linux
Get Farwing Desktop
For teamsPrice on request

Farwing Server

A web portal on your own server for sending, receiving and automating transfers.

  • Packages, shared folders, guests
  • Hot folders, sync and an API
  • SSO, audit log, your branding
Start a 30-day trial

Named for a far wing.

Each autumn, a shorebird leaves Alaska and flies more than 13,000 km across the Pacific without a single stop. Days of open ocean. No rest, no shortcut. It does not fight the distance. It is built for it.

Farwing is built the same way.

Quick start

Three commands to the other side.

Install Farwing on both hosts. You need an SSH login to the far host. For full speed, let the far host accept UDP on port 47700. If it does not, Farwing finds another route.

1 Install it
curl -fsSL -o farwing-install.sh https://farwing.io/install.sh
bash ./farwing-install.sh
2 Copy a file, the way scp does
farwing cp big.iso user@host:/data/
3 Test the path, no disk used
farwing bench user@host --size 5G

Your files. The far side. Full speed.

Start free from the terminal, or run Farwing Server for your whole team. The 30-day trial has every feature.

Get started freeStart a 30-day trial