iperf3 — Network Analysis and Diagnostics
Latest Tool Guides / Network Analysis and Diagnostics / iperf3.html
A standard tool for measuring actual network bandwidth between a server and a client.
Basic Information
| Program Name | iperf3 |
|---|---|
| One-Line Introduction | A standard tool for measuring actual network bandwidth between a server and a client. |
| Development & Maintenance | ESnet (U.S. Department of Energy Laboratory, Open Source) |
| Official Homepage | https://iperf.fr |
| Official Documentation | https://iperf.fr/iperf-doc.php |
| Official Download | https://iperf.fr/download.php |
| Supported Operating Systems | Linux, macOS, Windows, FreeBSD (Source, Package, Binary) |
| License | BSD-3-Clause (BSD License Variant) |
| Stable Version | 3.18.x — Verified on 2026-10-18 |
| GitHub Repository | https://github.com/esnet/iperf |
| Category | Network Analysis & Diagnostics (Tags: Bandwidth Test, Network Performance, Speed Measurement) |
What is this program?
iperf3 is a standard tool for measuring the actual network transfer bandwidth (Mbps/Gbps) between two hosts. One side runs in server mode, the other in client mode, exchanging data for a specified duration to measure average, maximum, latency, and packet loss.
While ping only measures round-trip time, iperf3 measures actual bulk data transfer performance, making it essential for performance verification after line changes, cloud migration, or VPN configuration. It supports both TCP and UDP and allows multi-stream testing.
What problems does it solve?
- Verifies if the actual bandwidth of a network line meets the promised speed.
- Measures performance degradation after VPN or cloud VPC connections.
- Checks for changes in transfer speed after replacing Wi-Fi or wired networks.
- Provides numerical verification of packet loss rate, latency, and jitter.
Key Features
TCP & UDP Bandwidth Measurement
Measures actual transfer speeds using TCP and UDP protocols.
- Use Case: Used for line performance verification and post-cloud migration inspection.
- Results Obtained: Obtains measured bandwidth in Mbps/Gbps units.
- Limitations: The target link may saturate during measurement, requiring caution during operations.
Multi-Stream
Tests with multiple parallel streams simultaneously to measure maximum bandwidth.
- Use Case: Used when checking the full capacity of high-bandwidth links.
- Results Obtained: Can measure higher actual maximum speeds than with a single stream.
- Limitations: A higher number of streams increases CPU and socket load.
Packet Loss & Jitter Measurement
Measures packet loss rate and jitter during UDP tests.
- Use Case: Used when predicting the quality of real-time voice/video streaming.
- Results Obtained: Secures loss rate and jitter figures needed for QoS.
- Limitations: UDP measurements are affected by QoS settings of network devices.
Reverse Test
Can also measure bandwidth in the client→server direction.
- Use Case: Used when checking asymmetric upload/download links (cable, ADSL).
- Results Obtained: Can measure the difference in bidirectional bandwidth.
- Limitations: Requires opening a port on the server side.
Installation & Execution
Ubuntu / Debian
Install from the distribution repository.
sudo apt update
sudo apt install iperf3
# Verify installation
iperf3 --version
Fedora / RHEL
Install with dnf.
sudo dnf install iperf3
macOS / Homebrew
Install with Homebrew.
brew install iperf3
Practical Usage Examples
Basic Bandwidth Test
Measures download speed between server and client.
# Server side (Run on the target server)
iperf3 -s
# Client side (Test for 10 seconds)
iperf3 -c server_IP -t 10
# Result: Average, maximum, latency, retransmissions
UDP Test & Loss Rate Check
Sends traffic at a specified bandwidth via UDP to measure loss rate.
# UDP 100Mbps test
iperf3 -c server_IP -u -b 100M -t 10
# Result: Check loss rate (%), jitter (ms), datagram count
Simultaneous Download & Upload Measurement
Checks bidirectional bandwidth at once.
# Upload test (Client → Server)
iperf3 -c server_IP --reverse -t 10
# Measure max bandwidth with 4 multi-streams
iperf3 -c server_IP -P 4 -t 10