Bandwidth Delay Product Calculator
Calculate the bandwidth-delay product of a link, the maximum throughput a TCP window allows at a given round-trip time, and Linux buffer settings to match.
Free · No sign-up · Your inputs stay in your browser
Input
Calculate the bandwidth-delay product and TCP window
Output
9.54 MiB in flight
Bandwidth-delay product
10,000,000 bytes
The window needed to keep the link full.
Max throughput with a 64 KiB window
6.6 Mbit/s
0.7% of the link: the window, not the link, is the bottleneck.
sysctl (Linux)
net.core.rmem_max = 20971520 net.core.wmem_max = 20971520 net.ipv4.tcp_rmem = 4096 131072 20971520 net.ipv4.tcp_wmem = 4096 16384 20971520
Twice the BDP, at least 4 MiB. Apply with sysctl -p after adding to /etc/sysctl.d/.
A single TCP connection can send at most one window per round trip, so throughput is capped at window ÷ RTT whatever the link speed. Filling a long fat pipe needs a window at least as large as the bandwidth-delay product. Linux scales the window automatically up to the maximums below; the defaults are often too small for transfers across continents.
Runs in this browser. Nothing you paste is sent to a server.
About this tool
Method, assumptions, practical next steps, and limits.
Why a fast link can be slow
TCP sends at most one window of data per round trip, so a single connection's throughput is capped at window divided by RTT. With a 64 KiB window, which is what you get without window scaling, an 80 ms transatlantic link carries about 6.5 Mbit/s however fast it is. Window scaling (RFC 7323) and large enough buffers fix it.
Tuning Linux
Linux autotunes the window up to tcp_rmem and tcp_wmem's maximums. Raising them helps long, fast paths such as replication between regions or backups to distant storage. Several parallel connections, as rclone and aria2 use, get around a small window too.