---
title: "Calculate maximum TCP throughput using the Bandwidth-Delay Product (BDP) formula. Given link bandwidth and round-trip latency, computes the BDP (maximum in-flight data), achievable throughput with a given TCP window size, link utilization percentage, and recommended window size for full utilization. Critical for diagnosing slow transfers over high-latency links (WAN, VPN, satellite), tuning TCP buffers, and understanding why a 1Gbps link may only deliver 25Mbps with default 64KB windows. Applies to iperf testing, WAN optimization, and network capacity planning."
method: POST
path: "/api/tcp_throughput"
tags: ["homelab"]
---

# Calculate maximum TCP throughput using the Bandwidth-Delay Product (BDP) formula. Given link bandwidth and round-trip latency, computes the BDP (maximum in-flight data), achievable throughput with a given TCP window size, link utilization percentage, and recommended window size for full utilization. Critical for diagnosing slow transfers over high-latency links (WAN, VPN, satellite), tuning TCP buffers, and understanding why a 1Gbps link may only deliver 25Mbps with default 64KB windows. Applies to iperf testing, WAN optimization, and network capacity planning.

`POST /api/tcp_throughput`

## Request

- Base URL: `https://calc.engineer`
- URL: `https://calc.engineer/api/tcp_throughput`
- Auth: none declared

## Request body

- object
  - `bandwidth_mbps` number, required: Available link bandwidth in megabits per second
  - `rtt_ms` number, required: Round-trip time (latency) in milliseconds
  - `window_size_kb` number: TCP receive window size in kilobytes
  - `mss_bytes` number: Maximum Segment Size in bytes (typically 1460 for Ethernet)

## Response `200`

Computed result for tcp_throughput

- object
  - `result` object, required
    - `bdp_bytes` number, required: Bandwidth-Delay Product in bytes: maximum data in flight
    - `bdp_kb` number, required: Bandwidth-Delay Product in kilobytes
    - `max_throughput_mbps` number, required: Maximum achievable TCP throughput in megabits per second given the window size
    - `window_sufficient` boolean, required: Whether the current window size is large enough to fill the pipe
    - `recommended_window_kb` number, required: Minimum window size in kilobytes needed to fully utilize the link
    - `utilization_pct` number, required: Percentage of available bandwidth that can actually be used
  - `tool` string, required
  - `version` string, required
  - `computed_at` string, date-time, required
  - `chain` object, required
    - `feeds` unknown[]
      - unknown
    - `accepts_from` unknown[]
      - unknown

## Other responses

- `400`: Validation error or invalid JSON
- `404`: Tool not found

---

[API](https://skmtc.dev/calc/apis/calc-engineer-api.md) · [All operations](https://skmtc.dev/calc/apis/calc-engineer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/calc/apis/calc-engineer-api/revisions/8830480ec488?raw)
