iperf 2 vs iperf3: differences and which one to use
iperf 2 and iperf3 share a name and a purpose, but they are two different programs developed by two different teams, and they cannot talk to each other. Both are actively maintained in 2026. Which one you need depends on your platform and on what you want to measure.
Two branches of one family
The original iperf was written at NLANR/DAST. According to the iperf3 FAQ, that code was orphaned in the late 2000s at version 2.0.5. Around 2010 ESnet started iperf3, a rewrite from scratch with a smaller code base, a library (libiperf) and JSON output, and chose not to stay compatible with iperf 2. In 2014 Bob McMahon, then at Broadcom, restarted development of iperf 2 on SourceForge. Since then the two have grown in different directions: iperf3 focuses on clean throughput tests and automation, iperf 2 on detailed latency and traffic-pattern features.
Side-by-side comparison
| Feature | iperf 2 | iperf3 |
|---|---|---|
| Command name | iperf | iperf3 |
| Default port | 5001 | 5201 |
| Recent version | 2.2.x | 3.22 (September 2026) |
| Developed by | Independent project on SourceForge | ESnet and Lawrence Berkeley National Laboratory |
| Windows | Supported | Not officially supported (community builds exist) |
| Threads | Multi-threaded | One thread per stream since 3.16; single-threaded before |
| UDP on the server | Start server with -u as well | Client tells the server; plain -s is enough |
| Multicast | Yes, including source-specific multicast | No multicast options |
| Reverse and two-way tests | -R, --full-duplex, -d, -r | -R, --bidir |
| Latency features | --trip-times one-way delay, --bounceback, histograms | UDP jitter and loss; TCP RTT in the -J output; no one-way delay |
| JSON output | No (CSV-style output with -y C) | Yes, -J |
| Server handles | Several clients at once (-1 limits it to one) | One test at a time |
The incompatibility in practice
An iperf3 client pointed at an iperf 2 server (or the reverse) fails or hangs: the protocols, default ports and control messages are different. Always run the same tool on both ends and check versions with iperf -v or iperf3 -v. If a public test server does not answer, check which tool and port it actually runs.
When to choose iperf3
- You want a simple, repeatable throughput number on Linux, FreeBSD or macOS.
- You are scripting tests and want JSON output (
-J) to parse. - You want to skip TCP slow start (
-O) or fetch the server's view of the test (--get-server-output). - You are running perfSONAR or comparing with results from research networks, which commonly use iperf3.
When to choose iperf 2
- Windows hosts. The iperf3 FAQ itself recommends iperf 2 on Windows.
- Multicast. iperf 2 can join a group with
-B, set a TTL with-Tand do source-specific joins with-H. See Multicast testing. - Latency under load.
--trip-timesmeasures one-way delay (the clocks on both hosts must be synchronized), and the enhanced reports from-eadd retries, congestion window and RTT on Unix-like systems. - Request-response tests.
--bouncebackmeasures how fast small requests come back, which is closer to interactive traffic than a bulk transfer. - Traffic patterns.
--isochronoussends frames at a fixed rate, like video, and-bcan add random variation to the load. - Several clients against one server at the same time.
iperf 2 commands to get started
A basic TCP test with enhanced output:
# server
iperf -s -e
# client
iperf -c 192.0.2.10 -e -i 1 -t 10
A UDP test at 50 Mbit/s. Note the -u on the server too:
# server
iperf -s -u -e
# client
iperf -c 192.0.2.10 -u -b 50M -e -t 10
Both directions at once on one connection:
iperf -c 192.0.2.10 --full-duplex -e
With -e, the TCP client report adds Write/Err, Rtry (TCP retries) and, on Unix-like systems, in-flight data, congestion window and RTT. The UDP server report adds jitter, Lost/Total and, when clocks are synchronized, latency figures.
Installing iperf 2
- Debian and Ubuntu: the package is simply called
iperf; Debian 13 ships 2.2.1. - Windows and other systems: download from the iperf2 project on SourceForge.
Many distributions also ship much older 2.0.x builds. The ESnet fasterdata site advises using a recent iperf 2, since most important bugs were fixed in 2.0.8 and later releases added many features.
Both tools, one toolbox. Nothing stops you installing both. A common habit is iperf3 for routine throughput checks and iperf 2 for Windows endpoints, multicast and latency work. perfSONAR, the measurement toolkit used by many research networks, includes iperf3, iperf 2 and nuttcp for throughput tests.