Iperf3
iperf3 measures the maximum achievable bandwidth between two machines. Unlike most tools in this guide, it has to run on both ends: one side acts as a server, the other connects to it as a client. Run it when you need to know whether the link itself is slow or the application on top of it is.
Availability
| Platform | How to get it |
|---|---|
| Windows (Cygwin) | not packaged for Cygwin |
| Windows (native) | unofficial builds from iperf.fr or winget / chocolatey |
| Fedora | sudo dnf install iperf3 |
| Ubuntu / Debian | sudo apt install iperf3 |
Examples
- On the server side (listens on TCP/UDP port 5201 by default, so open that port in the firewall):
iperf3 -s
- On the client side, run a 10 second TCP throughput test:
iperf3 -c <server IP>
- Measure the reverse direction (server sends, client receives) without swapping roles. Asymmetric links are common, so test both directions:
iperf3 -c <server IP> -R
- Use 4 parallel streams for 30 seconds. Parallel streams do a better job of saturating high-bandwidth, high-latency links:
iperf3 -c <server IP> -P 4 -t 30
- UDP test at a fixed 100 Mbit/s rate. The report includes jitter and packet loss, which TCP tests hide:
iperf3 -c <server IP> -u -b 100M
- Machine-readable output for graphing later:
iperf3 -c <server IP> --json > result.json
Public Servers
When you do not control the far end, iperf3serverlist.net keeps a list of volunteer-run public servers.