Calcoid

TCP Throughput Calculator

Estimate maximum TCP throughput from window size and RTT, or bound it under packet loss with the Mathis equation using MSS and loss rate.

TCP Throughput Calculator

The window model gives the receive-window ceiling. The Mathis model bounds throughput under packet loss.

The legacy 16-bit TCP window maxes at 65,535 bytes (about 64 KiB) unless window scaling is enabled. 1 byte = 8 bits.

RTT is the ping time: how long a packet takes to reach the far end and back. Use the ping or traceroute value for the path.

Maximum window-limited throughput

17.48 Mbps

17.48 Mbps for this window and RTT

Throughput ceiling

In bits/second
17.48 Mbps
In megabits/second
17.4763 Mbps
In mebibytes/second
2.0833 MiB/s

Inputs

Window / buffer
64 KiB
Round-trip time
30 ms

Frequently Asked Questions about the TCP Throughput Calculator

How does this calculator estimate TCP throughput?
It uses two models. The window model computes the receive-window ceiling as window size in bits divided by the round-trip time (RTT), because a connection can have at most one window of data unacknowledged per round trip. The Mathis model bounds throughput under packet loss as (MSS divided by RTT) times (C divided by the square root of the loss probability). Pick the window model when the window or buffer is the limit, and the Mathis model when packet loss is the limit.
What is the Mathis equation?
The Mathis equation estimates the steady-state throughput of TCP congestion avoidance under random packet loss. In bytes per second it is (MSS / RTT) times (C / sqrt(p)), where MSS is the maximum segment size, RTT is the round-trip time, p is the per-packet loss probability, and C is a constant. It comes from Mathis, Semke, Mahdavi, and Ott (1997) and is an upper bound that holds well at low loss rates.
Why does throughput drop so much as packet loss rises?
In the Mathis model throughput scales with 1 divided by the square root of the loss rate, so loss has an outsized effect. Going from 0.01 percent loss to 1 percent loss (a factor of 100) cuts the ceiling by a factor of 10. This is why even a small amount of loss on a long, high-latency path can sharply limit a single TCP connection.
Which Mathis constant (C) should I use?
The constant depends on how acknowledgements are sent. With delayed ACKs (the common default, two segments acknowledged per ACK) C is the square root of 3/2, about 1.2247. With one ACK per segment C is the square root of 3/4, about 0.8660. The simplified value C = 1 is often quoted for a quick estimate. Choose the option that matches your TCP stack.
What is MSS and what value should I enter?
MSS is the TCP Maximum Segment Size, the largest payload carried in one TCP segment, measured in bytes. On a standard Ethernet path with a 1500-byte MTU the MSS is usually 1460 bytes, which is 1500 minus the 20-byte IPv4 header and the 20-byte TCP header. Jumbo frames or IPv6 and TCP options can change this, so use the value your path actually negotiates.
Why is my measured throughput lower than the calculated ceiling?
Both models give an upper bound for a single connection, not a guarantee. Real throughput is also limited by the slowest link on the path, the sender and receiver buffer sizes, CPU and disk speed, competing traffic, and the specific congestion-control algorithm in use. Use the result as a ceiling to size buffers and spot bottlenecks, then compare it against an actual transfer.

Related Calculators

More calculators in "Tech"

See all 98 calculators in "Tech"