Bandwidth Delay Product Calculator
Size TCP windows from bandwidth and RTT, compare current buffers and stream counts, and spot BDP, overhead, and scaling warnings.| Metric | Value | Detail | Copy |
|---|---|---|---|
| {{ row.label }} | {{ row.value }} | {{ row.detail }} |
| Check | Recommendation | Reason | Copy |
|---|---|---|---|
| {{ row.check }} | {{ row.recommendation }} | {{ row.reason }} |
Introduction:
A fast link can still move data slowly when the sender has to pause for acknowledgments too often. The limiting factor is not only how many bits per second the path can carry, but also how long a round trip takes. A transfer over a nearby 1 Gbps LAN and a transfer over a 1 Gbps inter-region path have the same headline bandwidth, yet the long-distance path needs far more unacknowledged data in flight before it can stay busy.
Bandwidth-delay product, usually shortened to BDP, is the amount of data that fits in the network path at a chosen rate and round-trip time. It turns a speed-and-latency pair into a byte target that can be compared with TCP receive windows, socket buffers, application buffers, and multi-stream transfer settings. The idea is simple, but the unit shift matters: bandwidth is normally entered in bits per second, while the window that limits a TCP sender is sized in bytes.
The term becomes important when latency is no longer tiny. A backup over a private WAN, a database replication stream between cloud regions, an object-store upload through a VPN, or a research transfer over a national network may need window sizes measured in mebibytes instead of kilobytes. Satellite, mobile, encrypted tunnel, and congested routes can increase the delay side of the product even when the access link looks generous.
| Concept | Plain meaning | Common mistake |
|---|---|---|
| Bottleneck bandwidth | The usable rate of the slowest relevant part of the transfer path. | Using a provider headline speed when shaping, VPN limits, or storage caps are lower. |
| Round-trip time | The time for data to go out and an acknowledgment or response to come back. | Using only local ping latency when the transfer crosses a longer or busier path. |
| Receive window | The amount of data the receiver lets a TCP sender keep outstanding. | Raising bandwidth expectations while leaving one flow limited by a small window. |
| Parallel streams | Multiple TCP flows used by one transfer job. | Assuming more streams change total BDP rather than splitting it across flows. |
BDP is not the same thing as measured throughput. It only answers whether the window can hold enough bytes for a target rate and RTT. Packet loss, congestion control, host CPU, disk speed, encryption, path MTU, queueing, and application pacing can all keep real throughput below the calculated window-limited ceiling.
The result is most useful as a first sizing check. When the calculated per-stream target is far above the current receive window, tuning buffers or using a transfer that opens several streams may remove one limiter. When the window already fits, the next investigation should move to loss, retransmissions, host limits, or the application itself instead of adding buffer space blindly.
How to Use This Tool:
Use this calculator as a window-sizing pass before changing host buffers, transfer settings, or stream counts. Enter the path numbers you want to model, then compare the per-stream target with the effective receive window available to one TCP flow.
- Enter
Path bandwidthas the usable bottleneck rate for the transfer. Use a shaped WAN, VPN, private link, or measured rate when it is lower than the advertised link speed. - Enter
Round-trip latencyin milliseconds. Start with measured idle RTT; if loaded latency rises during real transfers, rerun the sizing with the higher value. - Set
Target utilizationto the share of bandwidth you want the window to support. Values from 80% to 95% usually leave more planning room than a perfect 100% target.A target above 95% triggers a warning because jitter, loss recovery, and shared-link bursts can make a full-pipe target brittle. - Set
Parallel streamsto the number of TCP flows the transfer can actually open. ThePer-stream window targetdivides aggregate BDP by this count. - Enter
Current receive windowin MiB for one flow. If you are testing an old unscaled baseline,0.064 MiBis close to a 64 KiB receive window. - Open
Advancedonly when those assumptions matter.MSSchangesPackets in flight;Protocol overheadlowers the payload-rate target before the byte window is calculated. - Check
Input audit,Window Metrics, andTuning Guidance. If the audit saysAdjusted, fix the clamped input before using the window recommendation.
Interpreting Results:
The value to compare first is Per-stream window target. If it is larger than Current receive window, one TCP flow cannot keep enough bytes outstanding for the selected rate and RTT. Aggregate BDP target is the path-wide in-flight byte requirement, while Current aggregate ceiling estimates the throughput cap caused by the entered window and stream count before other bottlenecks are considered.
window fitsmeans the entered per-flow receive window meets the calculated per-stream target.window shortmeans the current window is below the target and may cap throughput.TCP window scalingmarkedRequiredmeans the target exceeds the original unscaled TCP receive-window range.Needed streams with current windowis useful only when the application can open that many independent flows without harming the service.
A fitting window removes one common limiter, not every limiter. If live throughput is still low, verify loss, retransmits, congestion control, CPU, storage, encryption overhead, path MTU, and application pacing before increasing buffers again.
Technical Details:
BDP is a capacity-time product. The capacity term should be the bandwidth available to the transfer, not every link speed on the topology. The time term is round-trip time in seconds, because TCP data flow depends on acknowledgments returning before the sender can safely advance beyond the advertised window.
TCP receive windows matter because the receiver advertises how many bytes it is prepared to accept. The sender cannot exceed that advertised window even if the path has spare bandwidth. For targets above the original 16-bit TCP window range, the endpoints need TCP window scaling negotiated during connection setup so larger receive windows can be represented.
Formula Core:
The aggregate byte target is the adjusted payload rate multiplied by RTT. The per-stream target divides that byte target by the selected stream count, and the current-window ceiling estimates how much bandwidth the entered window and stream count can support.
| Symbol | Meaning | Unit or source |
|---|---|---|
B |
Path bandwidth converted from Mbps to bits per second | Path bandwidth x 1,000,000 |
U |
Target utilization as a fraction | Target utilization / 100 |
O |
Protocol overhead reserve as a fraction | Protocol overhead / 100 |
T |
Round-trip time converted from milliseconds to seconds | Round-trip latency / 1000 |
N |
Parallel stream count | Whole TCP flows, minimum 1 |
Wcurrent |
Current receive window for one flow | MiB converted to bytes |
For the default 1,000 Mbps path, 80 ms RTT, 90% utilization, four streams, and no overhead reserve, the payload target is 900 Mbps. The aggregate BDP is 9,000,000 bytes, or about 8.58 MiB. Four streams split that into about 2.15 MiB per stream. A 16 MiB current receive window therefore fits the modeled target.
| Input or check | Boundary | Resulting cue |
|---|---|---|
Path bandwidth |
Must be above zero | Nonpositive values are clamped above zero. |
Round-trip latency |
Must be above zero | Nonpositive RTT is clamped above zero. |
Target utilization |
1% to 100% | Out-of-range entries are clamped; values above 95% get a caution. |
Parallel streams |
Minimum 1 whole flow | Fractional or low values are treated as at least one flow. |
MSS |
Minimum 200 bytes | Only Packets in flight changes; byte-window targets do not depend on MSS. |
Protocol overhead |
0% to 90% | The reserve lowers the payload-rate target before BDP is calculated. |
Per-stream window target |
Above 64 KiB | TCP window scaling is marked required. |
The chart tabs use the same equations. RTT Capacity Map changes RTT while holding the other inputs steady, so the target grows linearly with latency. Stream Scaling Curve changes stream count, so the modeled fill improves until the current receive windows can cover the aggregate BDP or the path bandwidth cap is reached.
Accuracy Notes:
BDP sizing is deterministic for the numbers entered, but the numbers themselves may be noisy. Use measurements from the same path, direction, VPN state, and time window you care about.
- Idle RTT can understate the delay seen during loaded transfers when queues build.
- Bandwidth tests may hit a nearby test endpoint instead of the remote service that matters.
- The calculation does not detect packet loss, congestion-control behavior, host limits, storage speed, or application pacing.
- The calculations run from the values entered in the browser and do not measure the network by themselves.
Worked Examples:
These examples show how the same formula can point to different next checks depending on latency, window size, and stream count.
Inter-region backup with several streams
A 10,000 Mbps path at 50 ms RTT and 90% target utilization needs about 53.64 MiB aggregate BDP. With eight parallel streams, Per-stream window target is about 6.71 MiB. A 32 MiB current receive window fits, so slow backup throughput should be investigated through loss, host limits, storage, encryption, or application behavior rather than receive-window size first.
Single-stream transfer capped by the receive window
A 500 Mbps path at 120 ms RTT and 90% utilization needs about 6.44 MiB per stream. With a 4 MiB current receive window and one stream, Current aggregate ceiling is about 279.62 Mbps, or 55.9% of the path. The practical next test is a larger per-flow window or at least two streams if the application supports them.
Old 64 KiB window baseline
A 100 Mbps path at 40 ms RTT and 85% target utilization needs about 0.41 MiB per stream. Entering 0.064 MiB for the current receive window models only about 13.42 Mbps of fill, so window short and TCP window scaling are expected. Verify host buffer limits and window scaling before blaming the WAN.
FAQ:
Is BDP the same as throughput?
No. BDP sizes the in-flight byte window needed for a chosen bandwidth and RTT. Actual throughput can still be lower because of loss, congestion control, host limits, storage, encryption, or application pacing.
Why does the result change so much with RTT?
RTT is multiplied directly into the byte target. Doubling RTT doubles the amount of data that must stay outstanding for the same rate, utilization, overhead, and stream count.
Why is TCP window scaling required?
The warning appears when the per-stream target is above the original 64 KiB receive-window range. The connection must negotiate window scaling before a larger advertised receive window can be used.
What should I enter for protocol overhead?
Leave Protocol overhead at 0% for raw BDP math. Add a reserve when encryption, tunnels, framing, or shared-link planning should reduce the payload rate you expect to fill.
Why does Input audit say Adjusted?
One or more numeric fields was outside the supported range, such as nonpositive bandwidth, nonpositive RTT, a utilization outside 1% to 100%, an MSS below 200 bytes, or overhead outside 0% to 90%. Correct the highlighted assumption and review the metrics again.
Glossary:
- Bandwidth-delay product
- The amount of data that fits in a path at a given bandwidth and RTT.
- Bottleneck bandwidth
- The usable rate of the slowest relevant part of the transfer path.
- Round-trip time
- The time for a packet and its acknowledgment or response to complete a round trip.
- Receive window
- The amount of data a TCP receiver advertises that it can accept.
- TCP window scaling
- A TCP option that allows receive windows larger than the original 16-bit window field.
- MSS
- Maximum segment size, used here to estimate how many packets are in flight.
References:
- RFC 6349: Framework for TCP Throughput Testing, RFC Editor, August 2011.
- RFC 7323: TCP Extensions for High Performance, RFC Editor, September 2014.
- Determining the Bandwidth-Delay Product, Oracle Database Net Services Administrator's Guide.
- What is latency?, Cloudflare Learning Center.
- How to test internet speed in Linux, Simplified Guide.