iperf 2 vs iperf3: differences and which one to use

Updated November 2026

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

iperf 2 and iperf3 at a glance (November 2026)
Featureiperf 2iperf3
Command nameiperfiperf3
Default port50015201
Recent version2.2.x3.22 (September 2026)
Developed byIndependent project on SourceForgeESnet and Lawrence Berkeley National Laboratory
WindowsSupportedNot officially supported (community builds exist)
ThreadsMulti-threadedOne thread per stream since 3.16; single-threaded before
UDP on the serverStart server with -u as wellClient tells the server; plain -s is enough
MulticastYes, including source-specific multicastNo multicast options
Reverse and two-way tests-R, --full-duplex, -d, -r-R, --bidir
Latency features--trip-times one-way delay, --bounceback, histogramsUDP jitter and loss; TCP RTT in the -J output; no one-way delay
JSON outputNo (CSV-style output with -y C)Yes, -J
Server handlesSeveral 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

When to choose iperf 2

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

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.

Sources