> For the complete documentation index, see [llms.txt](https://docs.gotempest.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.gotempest.app/productivity/iperf3-network-speed-test.md).

# iperf3 Network Speed Test

Tempest ships an **embedded iperf3** so you can measure server bandwidth, latency, and jitter without `apt install iperf3` on either end. Open the iperf3 panel inside any tab, point it at the host, and Tempest runs the TCP / UDP test natively — no client to install, no server-side dependency, just a chart in your terminal.

This is the fastest way to answer "is this slow because of the network or the app?" when you're already SSH'd into a box.

## Run a speed test

1. Open any SSH connection (or use Tempest's local shell).
2. Open the **iperf3** panel from the tab toolbar.
3. Choose direction:
   * **Download** (server → client) — most common
   * **Upload** (client → server)
   * **Bidirectional**
4. Optional: choose **TCP** (default, throughput) or **UDP** (latency / jitter / packet loss).
5. Set duration (default 10 s) and parallel streams.
6. Click **Run**.

The chart updates per-second; results panel shows aggregate throughput, retransmits (TCP), or jitter / loss (UDP).

## Native implementation

Tempest links iperf3 directly into the binary (Rust FFI to the upstream C library), so:

* **No install on the remote** — Tempest spins up an in-process iperf3 server when needed.
* **No install on your machine** — it's part of Tempest.
* Works on **macOS, Windows, and Linux** with identical behavior.

## When you'd use this

* Diagnosing slow `git clone` / `apt update` — is it the network or the registry?
* Validating a new VPS provider's advertised bandwidth before committing
* Comparing two cloud regions before deciding where to deploy
* Verifying a VPN / Tailscale / WireGuard tunnel is operating at line speed
* Pre-flight check before a large `rsync` job

## Limitations

* iperf3 measures end-to-end network throughput, not application performance. A `curl` against an HTTP API still depends on the server's ability to respond fast.
* UDP tests can be rate-limited by intermediate routers; treat results as a *lower bound*.

## See also

* [Tempest Monitoring](/productivity/tempest-monitoring.md) — live network I/O gauge for the same SSH session
* [SSH Port Forwarding](/connect-to-servers/ssh-port-forwarding.md) — tunnel iperf3 over an SSH connection if direct UDP is blocked
