Public benchmark results

3 to 50x on damaged networks.

We benchmarked RIFT, our in-development transport, against plain HTTPS across 25 network conditions, 193 runs, every file SHA-256 verified on arrival. The ties and the losses are published with everything else.

What runs in your browser today

Right now, dragging a file into Forma uploads it in parallel chunks over ordinary HTTPS, straight from your browser to Google Cloud Storage, and that path already resumes on its own if the connection drops. RIFT, benchmarked below, is the QUIC and BBR transport we are building for an upcoming desktop and CLI uploader. What follows are lab measurements of that transport, published early because we build in the open.

What we measured

A. RIFT

Our in-development transport. Built on QUIC and BBR, with content addressed manifests and crash safe resume. Not yet in the browser app; benchmarked here ahead of its desktop and CLI release.

B. Plain HTTPS

curl over HTTP/2 to nginx, TLS 1.3, WebDAV PUT to disk. The same upload path nearly every product on the internet uses.

Both sides run the same AES-256 class crypto, so the comparison is transport, not cipher. One 2 GiB incompressible file, medians of 5 interleaved reps per cell, run on GCE with Linux netem.

50x 1% loss, 100 ms RTT, 100 Mbit link

TCP ran 2.6 hours per upload, verified 3 times.

15 of 25 conditions HTTPS could not finish inside 30 minutes

14 publish as DNF (did not finish); in the 15th we let the uploads run to completion, 2.6 hours each. RIFT held 61 to 90 MB/s on every 1 Gbit cell and 11.2 to 11.7 MB/s on every 100 Mbit cell, across every condition tested.

0.98x 0% loss, 100 Mbit link

A tie on clean networks, as physics demands.

0.76x 0% loss, 5 ms RTT, 1 Gbit link

RIFT's loss on clean gigabit. Userspace crypto pays a CPU cost that kernel TCP does not. We publish it anyway.

Every cell, plotted

Heatmap of goodput in megabytes per second for RIFT versus HTTPS across loss and RTT combinations on the 1 Gbit link
1 Gbit link. RIFT holds 61 to 90 MB/s across every loss and latency combination tested. HTTPS ranges from 117.91 MB/s on a clean link down to DNF once loss appears.
Heatmap of goodput in megabytes per second for RIFT versus HTTPS across loss and RTT combinations on the 100 Mbit link
100 Mbit link. RIFT holds 11.2 to 11.7 MB/s regardless of loss or latency. HTTPS matches on a clean link and falls to DNF as loss climbs past 1%.
Bar chart comparing goodput under independent random packet loss versus bursty correlated packet loss, at 5% loss and 200 ms RTT on the 1 Gbit link
Same 5% loss, same 200 ms RTT, two loss models. Bursty, 25% correlated loss made RIFT slightly faster than independent random loss: 75.95 MB/s against 61.15 MB/s. HTTPS did not finish either run.
Chart of CPU time consumed per gigabyte transferred, RIFT versus HTTPS
The cost behind the 0.76x clean gigabit number. Userspace QUIC pays a CPU tax per gigabyte that kernel TCP does not, and this test VM's NIC lacks UDP offload. Production ingest hardware has it.

The full matrix

All 25 conditions, medians of 5 interleaved reps per cell, goodput in MB/s.

Ratio = median goodput, ours divided by HTTPS, per cell. Rows marked DNF (did not finish) mean HTTPS never finished within the 30 minute cap.
Loss RTT Link Ours (MB/s) HTTPS (MB/s) Ratio Note
0%5 ms100 Mbit11.6711.890.98xClean LAN: a tie, as physics demands.
0%100 ms100 Mbit11.5311.810.98xTie.
0%200 ms100 Mbit11.3511.710.97xTie.
0%5 ms1 Gbit90.16117.910.76xWe lose clean gigabit. Userspace crypto CPU cost without NIC UDP offload. Published anyway.
0%100 ms1 Gbit86.6125.723.37xTCP window limited on the long fat pipe.
0%200 ms1 Gbit78.9912.866.14xIntercontinental fiber profile.
1%5 ms100 Mbit11.676.291.85xTCP loses half its speed to 1% loss.
1%5 ms1 Gbit88.007.4711.78xOur transport unaffected by loss, TCP collapses.
1%100 ms100 Mbit11.360.2350xTCP ran 2.6 hours per upload, verified 3 times.
1%100 ms1 Gbit81.57DNF≥68xTCP did not finish 2 GiB inside 30 min.
1%200 ms100 Mbit11.20DNF≥9.4xDNF.
1%200 ms1 Gbit71.57DNF≥60xDNF.
2%5 ms100 Mbit11.602.884.03x
2%5 ms1 Gbit85.773.1427.28xBoth completed, no cap needed.
2%100 ms100 Mbit11.28DNF≥9.5xThe kill criterion cell. Bar was 3x.
2%100 ms1 Gbit79.18DNF≥66x
2%200 ms100 Mbit11.30DNF≥9.5x
2%200 ms1 Gbit68.57DNF≥57x
5%5 ms100 Mbit11.53DNF≥9.7xTCP DNFs at 5% loss even on a 5 ms LAN.
5%5 ms1 Gbit87.33DNF≥73x
5%100 ms100 Mbit11.34DNF≥9.5x
5%100 ms1 Gbit79.34DNF≥66x
5%200 ms100 Mbit11.30DNF≥9.5x
5%200 ms1 Gbit61.15DNF≥51xWorst i.i.d. cell. Our transport still 61 MB/s.
5% / 25% correlated200 ms1 Gbit75.95DNF≥64xKill criterion 2, bar was 2x. Bursty loss helped our transport.

DNF means did not finish: the HTTPS upload was capped at 30 minutes and had not completed the 2 GiB file. The published ratio is a floor computed against that cap, so the true ratio is higher. 14 rows publish as DNF. A 15th condition, 1% loss at 100 ms on 100 Mbit, also could not finish inside 30 minutes; there we let three uploads run to completion, 2.6 hours each, which is where the measured 50x comes from. Its fourth rep hit the cap and is logged in the raw data.

Honest caveats

  1. These are netem lab numbers: synthetic, independent packet loss and fixed delay. Real networks have bursty, correlated loss, which narrows the advantage. The correlated loss row exists in the matrix for exactly that reason, and it is published with everything else.
  2. Clean gigabit is a real loss for us, 0.76x. Userspace QUIC pays a CPU tax that kernel TCP does not, and this test VM's NIC lacks UDP segmentation offload. Production ingest hardware, Hetzner bare metal, has it, and we will remeasure this number there.
  3. The corpus is one 2 GiB file, a cost control after discovering that TCP crawl cells run 2.6 hours per rep. A 10 GiB validation of the headline cells is queued behind the full matrix.
  4. Single flow, single machine, no competing traffic. Fairness under contention is a v1 measurement.

Reproduce it

The raw per-run data behind this table is downloadable now.

The harness that reruns the full matrix with one command is being packaged for public release.

Damaged networks are where RIFT will pay for itself.

Your upload today already resumes automatically if the connection drops. RIFT is what we're building to make the worst networks fast too.

Send files free