TCP Throughput / BDP
Enter the bandwidth, the RTT and the TCP window size and compute the BDP, the real throughput limited by the window and the recommended window to fill the link. On high-latency links the window must be ≥ BDP to use the full bandwidth.
Diagnosis
—
Mathis limit (with loss)
Mathis: ≈ (MSS × 8) / (RTT × √p) with
MSS = 1460 B. It is an approximate upper bound for classic
TCP (Reno/NewReno) under loss.
How it is calculated · BDP, window and Mathis
1. BDP (bytes) = BW × RTT / 8,
with BW in bps and RTT in seconds. It is the
amount of data "in flight" needed to fill the link.
2. Throughput limited by the window:
(window × 8) / RTT. A fixed window only lets you send
those bytes per RTT.
3. To saturate the link, the window must be
≥ BDP. On high-BDP links (lots of latency or
bandwidth), 64 KB without scaling severely limits
performance.
4. With loss p > 0, the
Mathis limit ≈ (MSS × 8) / (RTT × √p) bounds classic TCP
throughput, independent of the window.
Runs locally in your browser · no sign-up · nothing leaves your browser.
How it works
The calculator takes the link bandwidth (Mbps), the RTT (round-trip latency, in ms) and the TCP window size (KB), and returns three results: the BDP or bandwidth-delay product (BDP = BW × RTT / 8, in bytes), the actual throughput that window allows (window × 8 / RTT, capped at the physical bandwidth) and the recommended window to saturate the link, which is exactly the BDP.
The logic is TCP itself: a connection can only keep as many bytes in flight as its window, and those bytes take one RTT to be acknowledged, so on high-latency links a small window wastes bandwidth (which is why RFC 7323 window scaling exists). If you also enter a loss percentage, the tool adds the Mathis limit: throughput ≈ (MSS × 8) / (RTT × √p) with a 1460-byte MSS, an upper bound for classic TCP (Reno/NewReno) under packet loss.
Example: 100 Mbps WAN with 80 ms RTT and a 64 KB window
- BDP:
100,000,000 × 0.08 / 8 = 1,000,000 bytes ≈ 977 KB. That much data must be in flight to fill the link. - Throughput with 64 KB:
65,536 × 8 / 0.08 ≈ 6.55 Mbps. - Verdict: the connection uses only 7% of the link. With window scaling and a window around 977 KB, the full 100 Mbps would be usable.