Introduction: Is Your Network Actually Fast?
Have you ever copied a large file between two computers and wondered why the transfer was so slow? Perhaps your home Wi-Fi feels sluggish, a network drive takes too long to open files, or you want to know whether an Ethernet cable performs better than a wireless connection.
An ordinary internet speed test can tell you how quickly a device exchanges data with a test server on the internet. But it cannot always tell you how well two devices communicate with each other inside your home, office, school or local network.
That is where iperf3 becomes useful.
iperf3 is a free, open-source network performance measurement tool. It measures the rate at which data can be transferred between two endpoints using a network connection. It can help you investigate local network performance, compare wired and wireless connections, and collect useful measurements before troubleshooting a more complicated problem.
You do not need to become a network engineer to understand the basics. In this guide, you will learn what iperf3 does, how to set up a simple test, how to interpret the results, and what to do when the numbers are lower than expected.
1. What Is iperf3?
iperf3 is a command-line utility developed as part of the ESnet iperf project. It is designed to measure network throughput under controlled test conditions.
Throughput is the amount of data successfully transferred over a connection in a given period. It is commonly reported in bits per second, such as megabits per second (Mbps) or gigabits per second (Gbps).
iperf3 works using two roles:
- Server: The device that waits for a test connection.
- Client: The device that initiates the test and connects to the server.
You run iperf3 on both devices. One listens for incoming test connections while the other sends data to it. The program reports the measured transfer rate.
The tool supports TCP and UDP testing, with additional protocol support depending on the platform. TCP is usually the best starting point for a beginner because it is widely used by everyday applications.
iperf3 is available for supported operating systems, including Linux and macOS, with Windows builds also available through established distribution channels. Installation instructions and supported options can vary by platform and version.
Official project resources:
2. What Can You Use iperf3 For?
iperf3 is useful when you need to measure a particular network connection rather than simply check whether the internet is working.
Test your home network
You can measure how quickly data travels between two computers connected to your home router.
This can help you compare a wired connection with a wireless one or investigate whether your local network is performing as expected.
Compare Wi-Fi with Ethernet
Suppose a laptop transfers data slowly over Wi-Fi but performs better when connected to the router using Ethernet.
A controlled iperf3 test can help establish whether the local connection is a likely contributor to the difference.
Investigate a slow network drive
If two computers communicate over a local network, iperf3 can help you determine whether network throughput is a possible bottleneck.
However, slow file transfers can also be caused by storage drives, file-system overhead, encryption, CPU limitations or the application itself.
Check a network upgrade
After replacing a router, changing a cable or moving a device closer to a wireless access point, you can run comparable tests to see whether measured throughput changes.
Collect evidence for troubleshooting
Instead of saying that a network feels slow, you can report a measured result, the connection type, the test direction and the conditions under which it was obtained.
That information can make technical support conversations more productive.
3. Understand What iperf3 Does Not Measure
Before running a test, it is important to know what the result means.
| Measurement or activity | What iperf3 tells you |
|---|---|
| Data transfer between two test endpoints | Measured throughput under the test conditions |
| Local Wi-Fi or Ethernet performance | How much data the tested path transfers during the test |
| Internet download speed | Not directly, unless the test endpoints and path are specifically designed to measure that connection |
| Website loading speed | Not directly |
| Wi-Fi signal strength | Not a direct measurement |
| Router security | Not a security audit |
| Overall network reliability | Not fully established by one throughput test |
For example, suppose your internet subscription advertises 100 Mbps. A local iperf3 test between two computers on your home network does not establish whether your provider is delivering that 100 Mbps connection.
The local test and the internet test measure different paths.
Likewise, a high throughput result does not prove that every application will respond quickly. Latency, packet loss, server performance and application design can affect the experience.
4. What You Need Before Starting
For a simple local test, prepare the following:
- Two computers or other supported devices.
- A network connection between them, such as the same Wi-Fi network or a wired Ethernet network.
- iperf3 installed on both devices.
- Permission to use both devices and the network.
- The local IP address of the device running the server.
- Permission for iperf3 to communicate through any relevant firewall.
A useful first experiment is to use two computers connected to the same home router.
For a more controlled comparison, connect both computers through Ethernet if possible. You can then test Wi-Fi separately and compare the results.
Important: Only test devices and networks that you own or are explicitly authorised to assess. Do not scan, probe or generate traffic toward unfamiliar systems.
5. Install iperf3
The exact installation method depends on your operating system and the package source available to you.
On Linux
Many Linux distributions provide iperf3 through their official software repositories.
For Debian or Ubuntu-based systems, a typical installation command is:
sudo apt update
sudo apt install iperf3
On other distributions, use the appropriate package manager and package name. Check your distribution's documentation if the command is unavailable.
On macOS
If you already use Homebrew, you can typically install iperf3 with:
brew install iperf3
You can find Homebrew installation and package information on the official Homebrew website.
On Windows
Windows users should obtain a build from a reputable source. The official ESnet project documents iperf3 and links to its source code and releases, but the project does not provide the same native installation experience on every platform.
Start with the official iperf3 documentation and project repository. Check the source and compatibility of any Windows binary you choose.
Avoid downloading executable files from unfamiliar sites that promise extra speed or automatic network repair.
Confirm the installation
Open a terminal or command prompt and run:
iperf3 --version
If the program is installed and available in your command path, it should display version information.
If the command is not recognised, confirm that installation completed and that the executable is available from your terminal.
6. Find the Server Computer's Local IP Address
The client needs the server computer's IP address so it knows where to connect.
An IP address identifies a network interface for communication. In a typical home network, your router assigns local addresses to connected devices.
On Windows
Open Command Prompt and enter:
ipconfig
Find the network adapter you are actually using. Look for its IPv4 address.
It may look like 192.168.1.25 or 192.168.0.25, although your network may use a different address range.
Do not automatically copy the address of a disconnected adapter, virtual network interface or unused connection.
On Linux
You can inspect network addresses with:
ip addr
Find the active interface and its local address.
On macOS
You can inspect network settings through System Settings or use a terminal command such as:
ifconfig
Find the active network interface and its address.
For a typical home-network test, use the server's local address, not its public internet address.
If the devices are on different networks or separated by guest-network isolation, the test may not connect without additional configuration.
7. Run Your First Network Throughput Test
Now you are ready to measure the connection between the two computers.
Assume:
- Computer A will be the server.
- Computer B will be the client.
- Both computers can communicate across the same local network.
- Computer A's local IP address is
192.168.1.25.
The address is an example. Replace it with the actual address of your server.
Step 1: Start the server
On Computer A, open a terminal and run:
iperf3 -s
The -s option tells iperf3 to operate in server mode.
By default, the server listens for client connections on TCP port 5201.
Keep the terminal open while the test runs. The server needs to be available for the client to connect.
Step 2: Start the client
On Computer B, run:
iperf3 -c 192.168.1.25
The -c option tells iperf3 to operate in client mode. The address after it identifies the server.
The default test runs for approximately ten seconds. iperf3 sends test traffic, measures throughput and reports the results.
Step 3: Read the results
The output contains interval measurements and a summary. You will usually see information about the sender and receiver, including the amount of data transferred and the measured bitrate.
A simplified example might look like this:
[ ID] Interval Transfer Bitrate
[ 5] 0.00-10.00 sec 700 MBytes 587 Mbits/sec
These numbers are illustrative only, not a result from your network.
In this example, the tool reports that roughly 700 megabytes were transferred over ten seconds, at a reported bitrate of about 587 megabits per second.
Your own result may be much higher or lower, depending on the devices, network hardware, connection quality and test conditions.
Step 4: Stop the server
After the test finishes, return to Computer A and stop the server with Ctrl+C if it is still running.
The first test gives you a baseline. Record the result before changing your network setup.
8. Test the Opposite Direction
Network performance can differ depending on which device sends data and which receives it.
For example, a wireless device may have different transmit and receive capabilities. Interference, signal conditions and hardware design can also affect the two directions differently.
To reverse the test, run this command on the client:
iperf3 -c 192.168.1.25 -R
The -R option reverses the data direction so that the server sends data to the client.
Compare this result with the original test.
If one direction is consistently slower, record the difference. It is a useful clue for further investigation, although it does not by itself identify the cause.
You can repeat the tests a few times under similar conditions to check whether the difference is consistent.
9. Compare Wi-Fi and Ethernet
One of the most practical uses of iperf3 is comparing different ways of connecting devices.
For a fair comparison, change one important variable at a time.
Test A: Both computers on Wi-Fi
Connect both devices to the same suitable Wi-Fi network and run the basic test.
Record:
- The measured throughput.
- Whether the connection uses 2.4 GHz, 5 GHz or another supported band, if known.
- The approximate distance from the access point.
- Whether other devices are actively using the network.
Test B: Both computers on Ethernet
Connect the computers to the local network using Ethernet, if your equipment supports it.
Run the same test with the same direction and duration.
Test C: Compare the results
Record the measurements in a small table.
| Test | Connection | Throughput |
|---|---|---|
| A | Wi-Fi | Record your result |
| B | Ethernet | Record your result |
| C | Wi-Fi, repeated | Record your result |
Do not assume that Ethernet will always deliver the same speed or that Wi-Fi will always be slower. The result depends on the equipment, cable and port capabilities, wireless conditions, network topology and other factors.
Also note that if both computers are connected wirelessly to the same access point, traffic may use shared wireless airtime. This can influence the measurement.
The goal is to compare real results under clearly recorded conditions, not to force the numbers to match a marketing claim.
10. Understand the Most Important iperf3 Results
iperf3 can display several values. You can learn a great deal by focusing on a few.
Bitrate
Bitrate is the rate at which data is transferred, typically reported in bits per second.
Common units include:
- Kbps — kilobits per second.
- Mbps — megabits per second.
- Gbps — gigabits per second.
Remember that bits and bytes are different. One byte contains eight bits.
A connection reported at 800 Mbps is not transferring 800 megabytes every second. The theoretical conversion is 100 megabytes per second before accounting for protocol overhead and other practical limitations.
Transfer
Transfer indicates how much data was moved during a reporting interval.
A larger transfer total over the same duration generally corresponds to higher throughput, but the amount of data transferred should be interpreted alongside the duration and reported bitrate.
Sender and receiver
The sender and receiver summaries describe the data from each endpoint's perspective.
Small differences between their reported totals can occur. They should not automatically be interpreted as a fault.
TCP versus UDP
TCP is generally the easiest starting point for a basic throughput test.
UDP testing is more specialised. It can help examine behaviour under a specified sending rate, and the output may include information such as datagram loss and jitter.
However, UDP testing requires more care when choosing the target rate and interpreting the result. Sending at an excessive rate can create congestion and make the network appear worse than it would under ordinary use.
For beginners, start with TCP. Learn the basics before experimenting with UDP options.
11. What If the Throughput Is Lower Than Expected?
A low result is a clue, not a complete diagnosis.
Work through these checks in order.
Check the connection type
Confirm whether the computers are connected by Wi-Fi or Ethernet.
For a wired test, verify that the cable and both network ports support the speed you expect. A link negotiated at a lower rate can limit throughput even when the cable appears to work normally.
Check the wireless conditions
If you are testing Wi-Fi, consider the distance from the access point, walls, interference and the number of active devices.
Repeat the test closer to the router and compare the results. Avoid changing several settings at once.
Check the device hardware
A computer's processor, network adapter, driver, power-saving settings and background workload can affect the measured result.
A busy computer may be unable to generate or process test traffic as quickly as expected.
Check the firewall
The server must be reachable by the client. A firewall may block incoming connections to the default iperf3 port.
On a trusted private network, review the firewall rules and allow the test only as appropriate for your environment. Do not disable the firewall entirely as a shortcut.
If you create a temporary rule, remove or restrict it when you finish.
Check the network path
Make sure both computers are actually able to communicate across the network you intend to test.
A guest Wi-Fi network, client isolation feature, VLAN boundary or separate router configuration may prevent communication between devices.
Repeat the test
Run several comparable tests and record the results.
A single reading may reflect temporary congestion, background traffic or a short-lived change in system activity. Consistent results are more useful than one unusually high or low number.
Compare with a separate internet test
If your real concern is internet speed, use a reputable internet speed-test service as a separate measurement.
A strong local iperf3 result combined with poor internet-test results suggests that the issue may lie outside the tested local path, but it does not prove that your internet provider is responsible. The router's internet link, Wi-Fi conditions, test server, congestion and other factors may still be involved.
12. Common Errors and How to Fix Them
“Connection refused”
This commonly means the client reached the target host but no service accepted the connection on the requested port.
Check that the server is running and that the client is using the correct IP address and port.
Connection timeout
A timeout can occur when the client cannot reach the server or the connection is being blocked or dropped.
Check the IP address, network connection, routing and firewall rules. Confirm that the devices are on a network that permits communication between them.
The command is not recognised
Your terminal may not be able to find the iperf3 executable.
Confirm that installation succeeded. If the executable is installed but not in the command path, use the appropriate path or adjust the environment according to your operating system's documentation.
The result changes every time
Some variation is normal. Background traffic, wireless interference, CPU load and other conditions can affect the result.
Keep the test conditions as consistent as possible, repeat the measurement and compare the general pattern rather than relying on a single reading.
The result is far below the advertised Wi-Fi speed
A Wi-Fi link's advertised or negotiated rate is not the same as application-level throughput.
Protocol overhead, shared airtime, signal quality, client capabilities and interference can reduce the amount of data delivered during a test.
Check the actual connection and device capabilities before concluding that the router is faulty.
13. Safety: Run Tests Only Where You Have Permission
iperf3 generates network traffic to measure throughput. Used appropriately, it is a normal diagnostic tool. Used carelessly, it can consume bandwidth or interfere with other users.
Follow these precautions:
- Test only devices and networks you own or have permission to assess.
- Start with short, ordinary TCP tests.
- Avoid high-rate UDP tests unless you understand how to configure and interpret them.
- Do not run performance tests against arbitrary public servers.
- Do not expose an iperf3 server to the public internet simply to make it easier to connect.
- Restrict firewall access to the intended trusted network.
- Stop the server when you have finished testing.
- Be considerate of other people using a shared connection.
For most home users, a short test between two devices on the same private network is sufficient to learn the basics.
14. A Practical Exercise: Measure Your Own Network
Use the following checklist to build a useful baseline.
- [ ] Install iperf3 on two authorised devices.
- [ ] Connect both devices to the network you want to investigate.
- [ ] Find the server's local IP address.
- [ ] Start the server using
iperf3 -s. - [ ] Run the client using
iperf3 -c SERVER_IP. - [ ] Record the throughput and test direction.
- [ ] Repeat the test under similar conditions.
- [ ] Reverse the test using
-R. - [ ] If possible, compare Wi-Fi and Ethernet.
- [ ] Note the connection type and other conditions.
- [ ] Stop the server and remove any temporary firewall rule you created.
A simple record might look like this:
| Detail | Your notes |
|---|---|
| Date and time | |
| Server device | |
| Client device | |
| Connection type | |
| Test direction | |
| First throughput result | |
| Second throughput result | |
| Reversed throughput result | |
| Observations |
This gives you a reference point for future comparisons. If you replace a router, move a computer or change a cable, you can repeat the test and see whether the measured result changes.
Frequently Asked Questions
Is iperf3 free?
Yes. iperf3 is open-source software distributed under a BSD-style licence. Check the official project for the current licence and release information.
Does iperf3 increase internet speed?
No. It measures network performance; it does not increase your internet subscription speed or automatically repair a network.
Can I test my Wi-Fi without internet access?
Yes. If two devices can communicate over your local network and both have iperf3 available, you can test their local connection without relying on an internet speed-test server.
Can I run iperf3 on one computer only?
A normal iperf3 throughput test requires a client and a server endpoint. The program includes both roles, but you generally need two endpoints for a useful network-path measurement.
Does a high iperf3 result guarantee good Wi-Fi?
No. Throughput is only one part of network performance. Latency, packet loss, coverage, roaming behaviour and reliability can also matter.
Should I use TCP or UDP?
Start with TCP for a straightforward throughput test. UDP is useful for more specialised measurements but requires careful configuration and interpretation.
Is iperf3 the same as an internet speed test?
No. iperf3 measures throughput between its client and server. An internet speed test measures performance between your device and a remote test service. They examine different paths and should not be treated as interchangeable.
Conclusion: Measure First, Troubleshoot Second
When a network feels slow, guessing can lead to unnecessary purchases or changes that do not solve the real problem.
iperf3 gives you a practical way to measure data transfer between two endpoints. By running a short test, checking the reverse direction and comparing Wi-Fi with Ethernet, you can collect evidence about how your local network behaves.
The results will not explain every problem, but they can help you distinguish a local throughput limitation from other possible causes and give you a clearer starting point for troubleshooting.
Measure the connection you want to understand, record the conditions, and change one thing at a time.
Official Resources
- iperf3 documentation
- ESnet iperf3 project and source code
- iperf3 command-line usage documentation
- Homebrew — macOS package manager

No comments:
Post a Comment