How to test your connection speed on a VPS or dedicated server (2026)
Target audience: Intermediate. You are comfortable with the command line and basic server administration.
Estimated completion time: 20 to 30 minutes.
By the end of this tutorial, you will be able to measure the raw throughput of your server with Speedtest and diagnose the link between your server and a specific remote point with iPerf3.
Introduction
Connection speed questions on a VPS or dedicated server come in two distinct forms. The first is general: how much bandwidth does this server actually push right now. The second is specific: why is the transfer between this server and that particular endpoint slow. These two questions require different tools.
This tutorial covers both levels. Speedtest gives you a quick reading of overall channel throughput in under a minute. iPerf3 measures the path between two known points and is the INTROSERV standard for diagnosing connectivity problems, as defined in the internal manual "Network Connectivity Issue Handling Rules". Understanding which tool answers which question saves time and prevents misleading conclusions.
Prerequisites
Before you begin, make sure you have the following:
- A VPS or dedicated server running Ubuntu 24.04 LTS, Ubuntu 22.04 LTS, AlmaLinux 9, Rocky Linux 9, Windows Server 2022, or Windows Server 2025
- A non-root user with sudo privileges on Linux, or an administrator account on Windows
- Outbound internet access from the server; both tools open outbound connections only and do not require any inbound ports
- Software installed during the tutorial: Speedtest CLI 1.2.0 and iperf3 3.9 or later from the distribution repositories
No inbound firewall changes are needed. If your server restricts outbound traffic, allow outbound TCP to ports 80 and 443 for Speedtest and to the port of your chosen iPerf3 server for the diagnostic tests.
Part 1: quick throughput check with Speedtest
Speedtest by Ookla measures download bandwidth, upload bandwidth, latency, and packet loss against a nearby public test server. It is the fastest way to get a general picture of the channel.
Speedtest and similar services connect to third-party servers chosen automatically from a public pool. The result describes your channel in general terms only. Do not use these tools to diagnose a connectivity problem to a specific server. For point-to-point diagnosis, use iPerf3 as described in Part 2.
Installing Speedtest CLI on Ubuntu
Ookla distributes the CLI through its own apt repository. Add the repository:
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
On Ubuntu 22.04, install the package directly:
sudo apt install speedtest
On Ubuntu 24.04, the Ookla repository publishes its packages under the jammy codename and does not provide a noble entry, so point the repository to jammy before installing. This step is required on 24.04: without it, the install fails with "Unable to locate package speedtest".
sudo sed -i 's/noble/jammy/g' /etc/apt/sources.list.d/ookla_speedtest-cli.list sudo apt update sudo apt install speedtest
Installing Speedtest CLI on AlmaLinux and Rocky Linux
Add the Ookla dnf repository:
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.rpm.sh | sudo bash
Install the package:
sudo dnf install speedtest
Installing Speedtest CLI on Windows Server
Open PowerShell as Administrator. Download and extract the official CLI archive:
Invoke-WebRequest -Uri "https://install.speedtest.net/app/cli/ookla-speedtest-1.2.0-win64.zip" -OutFile "$env:TEMP\speedtest.zip" Expand-Archive -Path "$env:TEMP\speedtest.zip" -DestinationPath "C:\Tools\speedtest"
The archive contains speedtest.exe, which runs without installation. Ookla also offers a graphical Speedtest application for Windows; on a server accessed over RDP, the CLI is usually the more practical choice.
Running the test
On Linux, run:
speedtest
On Windows, run from PowerShell:
C:\Tools\speedtest\speedtest.exe
On the first run, the tool asks you to accept the Ookla license and GDPR terms interactively. Confirm them, and the test starts. For a non-interactive or scripted run on either Linux or Windows, append the acceptance flags so the tool does not prompt:
speedtest --accept-license --accept-gdpr
On Windows, add the same flags to speedtest.exe.
A complete run takes about 30 seconds and ends with a summary:
Speedtest by Ookla Server: Example ISP - Example City (id: 12345) ISP: Example Networks Idle Latency: 1.25 ms (jitter: 0.10ms, low: 1.18ms, high: 1.40ms) Download: 940.12 Mbps (data used: 512.3 MB) Upload: 918.47 Mbps (data used: 466.1 MB) Packet Loss: 0.0% Result URL: https://www.speedtest.net/result/c/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
The Download and Upload lines show the measured throughput. The Result URL points to a shareable page with the same numbers.

To test against a specific Speedtest server from the public pool, list nearby servers with speedtest -L and pass the chosen ID with speedtest -s <YOUR_SERVER_ID>. This narrows the randomness but the target is still a third-party server outside your control.
Testing from a browser
When the server hosts a desktop environment, or when you want to check the channel from your own workstation for comparison, two browser services cover the same ground. Speedtest.net runs the full Ookla test with server selection. Fast.com, operated by Netflix, shows a download figure immediately and reveals upload and latency after you select Show more info. Browser results depend on the machine running the browser, so a test from your workstation measures your workstation's channel, not the server's.

Part 2: precise diagnosis with iPerf3
iPerf3 measures the maximum achievable bandwidth between two specific hosts: your server as the client and a known iPerf3 server as the endpoint. Because both ends of the link are fixed, the result describes exactly the path you care about. This is the tool INTROSERV uses for connectivity diagnosis under the internal manual "Network Connectivity Issue Handling Rules", and it is the measurement to attach when you report a network problem.
Installing iPerf3 on Ubuntu
The package is available in the standard repositories:
sudo apt update sudo apt install iperf3
The installer may ask whether to start iperf3 as a daemon. Answer no; the tests in this tutorial run iperf3 as a client only, and a permanently listening daemon is an unnecessary open port.
Installing iPerf3 on AlmaLinux and Rocky Linux
Install from the standard repositories:
sudo dnf install iperf3
Installing iPerf3 on Windows Server
The iPerf3 project does not publish official Windows binaries. The project documentation refers to community builds, available at github and https://files.budman.pw. Download the latest 64-bit archive from either source, extract it, and place the contents in a directory such as C:\Tools\iperf3. The archive contains iperf3.exe together with the libraries it needs; keep them in the same directory.
Verify the binary from PowerShell:
C:\Tools\iperf3\iperf3.exe --version
Expected output:
iperf 3.21 (cJSON 1.7.15)
Running the upload test
The upload test sends data from your server to the remote iPerf3 server. Replace
Public iPerf3 servers near INTROSERV European datacenters that you can use for these tests: Germany/Wolfsburg 62.176.224.217 port 5201, France/Paris 45.147.210.189 port 5200 (port range 5200 to 5240), Netherlands/Naaldwijk 185.182.195.76 port 5201, United Kingdom/London 5.180.211.133 port 5200, Poland/Warsaw 185.246.208.67 port 5201. Pick the one closest to your server. These servers are shared and limit the number of simultaneous clients, so if a test is refused, retry after a short pause or move to the next server in the list. The authoritative list is maintained in the internal manual "Network Connectivity Issue Handling Rules".
iperf3 -c <YOUR_IPERF_SERVER> -p <YOUR_IPERF_PORT> -t 30 -P 10 -i 0
The flags have the following meaning. -c starts iperf3 in client mode against the given server. -p selects the server port. -t 30 runs the test for 30 seconds, long enough to smooth out short fluctuations. -P 10 opens 10 parallel streams, which saturates the link the way real multi-connection traffic does. -i 0 disables intermediate reports, so the output contains only the final summary.
After 30 seconds, the test prints per-stream results and a summary block:
[SUM] 0.00-30.00 sec 3.28 GBytes 940 Mbits/sec sender [SUM] 0.00-30.00 sec 3.27 GBytes 938 Mbits/sec receiver
Read the upload result from the sender row: this is the rate at which your server pushed data to the remote endpoint.

Running the download test
The download test reverses the direction: the remote server sends data to yours. Add the -R flag to the same command:
iperf3 -c <YOUR_IPERF_SERVER> -p <YOUR_IPERF_PORT> -t 30 -P 10 -i 0 -R
-R switches iperf3 to reverse mode. Read the download result from the receiver row of the summary: this is the rate at which your server received data.
Public iPerf3 servers accept a limited number of simultaneous clients. If the connection is refused with "the server is busy running a test", wait a short time and retry, or pick another public server in the same region.
Run each test two or three times and compare the results. A single low reading can reflect momentary load on the public server rather than a problem on your link. Consistently low numbers across repeated runs and across two different iPerf3 servers are a much stronger signal.
Verifying the installation
Confirm that both tools are present and report their versions.
On Linux:
speedtest --version iperf3 --version
Expected output:
Speedtest by Ookla 1.2.0.84 (ea6b6773cf) Linux/x86_64-linux-musl 5.15.0 x86_64 iperf 3.9 (cJSON 1.7.13)
Exact version strings vary with the distribution release. Any output that prints a version confirms the tool is installed and executable. On Windows, run the same commands with the full paths used earlier.
Reverting changes
If you no longer need the tools, remove them and the added repositories.
On Ubuntu:
sudo apt remove speedtest iperf3 sudo rm /etc/apt/sources.list.d/ookla_speedtest-cli.list sudo apt update
On AlmaLinux and Rocky Linux:
sudo dnf remove speedtest iperf3 sudo rm /etc/yum.repos.d/ookla_speedtest-cli.repo
On Windows Server, delete the extracted directories:
Remove-Item -Recurse -Force "C:\Tools\speedtest" Remove-Item -Recurse -Force "C:\Tools\iperf3"
Conclusion and next steps
You can now answer both connection speed questions with the right instrument. The decision comes down to what you need to know:
| Situation | Tool |
|---|---|
| You need a general speed figure for the server channel | Speedtest |
| You are diagnosing a problem down to a specific server | iPerf3 |
For a quick sanity check after provisioning a new INTROSERV VPS or dedicated server, a single Speedtest run is enough. For anything you intend to report as a network problem, run the iPerf3 upload and download tests against a public server near the datacenter and record the sender and receiver figures; these are the numbers the diagnosis procedure in "Network Connectivity Issue Handling Rules" expects. As a next step, consider scheduling periodic iPerf3 runs against a fixed endpoint to build a baseline, which makes genuine degradation visible the moment it starts.
Document Version: 1.
Last Updated: August 2026
Owner: Technical Documentation Team