An Internet speed test measures the whole path to an external server. But many questions concern only the home network: is the NAS slow because the Wi-Fi is, or because the disk is? Is the bedroom access point performing as it should? Can the new cable in the study really handle a gigabit? To answer, you need a tool that measures speed between two internal devices, without going through the Internet. The most widely used is iperf3.
How iperf3 works
iperf3 is a free program, available for Windows, macOS, Linux and as a smartphone app. It works in pairs: on one device it runs in server mode and listens; on another it runs in client mode, connects to the server and generates traffic for a few seconds. At the end both report the speed achieved.
The ideal server is a device cabled close to the router: a NAS, a mini PC, a Raspberry Pi or a desktop computer. That way the figure you measure concerns the stretch between the client and the core of the network.
The basic commands
On the device acting as server:
iperf3 -s
On the client, giving the server's address:
iperf3 -c 192.168.1.10
By default the client sends data to the server for 10 seconds on port 5201. Some useful options:
| Option | Effect |
|---|---|
-R |
Reverses direction: the server sends, the client receives |
-t 30 |
Test duration in seconds |
-P 4 |
Four parallel streams, useful for saturating fast links |
-u -b 50M |
UDP test at 50 Mbit/s, shows packet loss and jitter |
Always measure both directions, with and without -R, because Wi-Fi is often asymmetric: a phone may receive well and transmit poorly.
A method for finding the bottleneck
The idea is to measure one stretch at a time, starting from the one that should perform best.
- Cable near the router: a laptop connected by cable to the same switch as the server. On gigabit ports you should expect a value close to 940 Mbit/s. If it is much lower, the problem lies in the laptop, the server or the switch.
- Cable in the far room: the same laptop plugged into the study's wall jack. If the result drops a lot, the problem is in the installation cable or an intermediate switch.
- Wi-Fi close to the access point: measures the realistic maximum of Wi-Fi with that device.
- Wi-Fi at the problem spots: sofa, bedroom, balcony. The drop compared with the previous point shows how much distance and walls cost.
Writing the values down gives you a small map of the network, far more useful than any signal indicator.
Interpreting the results
Some practical pointers:
- values stuck around 94 Mbit/s on cable indicate a link negotiated at 100 megabits: a faulty cable, a jack with a broken pair or an old port;
- low values in one direction only on Wi-Fi are normal up to a point, but a huge difference may indicate interference near one of the two devices;
- values that swing widely from one second to the next suggest interference, roaming between access points or a device going into power saving;
- one slow stream but four fast ones indicate that the limit lies in the single TCP connection or the CPU, not the network.
Real Wi-Fi throughput is always well below the link rate shown by the operating system. A phone reporting a 1200 Mbit/s link will get a noticeably lower value with iperf3: that is normal, because Wi-Fi spends part of its time on coordination and acknowledgements.
Where the problem hides
Two common cases. First: the NAS seems slow, but iperf3 from laptop to NAS gives full values. Then the network is innocent and the limit is in the disks or the file-sharing protocol. Second: a wireless mesh access point shows half the values of the main one, because the radio backhaul splits the bandwidth.
In my work iperf3 is the first tool I bring to a home with network problems. Ten minutes of measurements separate facts from impressions and often prevent needless purchases.
Watch the CPU
On very weak devices, such as some routers or old single-board computers, iperf3 may be limited by the processor before the network. If the server's CPU is maxed out during the test, the measured value is not reliable. That is why it is better to use a device with at least some processing power as the server.
In short
- iperf3 measures speed between two devices at home, without the Internet.
- Start a server with
iperf3 -sand a client withiperf3 -c address. - Always measure both directions and use several streams on fast links.
- Work one stretch at a time, from the cable near the router to Wi-Fi at the problem spots.
- Values around 94 Mbit/s on cable reveal a 100-megabit link.