---
title: "How to test VPS network speed with iperf3 | StreetHosting"
description: "Measure your VPS upload, download and UDP speed with iperf3, check bandwidth with curl and wget, and see why the result also depends on the other end."
url: "https://streethosting.com.br/en/guides/vps/test-vps-network-speed"
type: "page"
language: "en-US"
---

VPS · 8 min · Intermediate

Published on Sep 28, 2026 · Updated on Sep 28, 2026

# VPS bandwidth test: iperf3, curl downloads and how to read the results

iperf3 measures what the network between two machines can really handle, in both directions, over TCP and UDP. The result only makes sense once you know which end and which stretch of the path is capping the number.

By [Equipe StreetHosting](https://streethosting.com.br/en/autores#equipe-streethosting) · StreetHosting infrastructure and support team

[Network, DNS and domains](https://streethosting.com.br/en/guides/topics/networking) [Linux administration](https://streethosting.com.br/en/guides/topics/linux)

Summarize with:

[](https://chat.openai.com/?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "ChatGPT") [](https://claude.ai/new?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Claude") [](https://www.google.com/search?udm=50&aep=11&q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Google AI Mode") [](https://x.com/i/grok?text=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Grok") [](https://www.perplexity.ai/search/new?q=Summarize%20the%20key%20points%20of%20this%20StreetHosting%20guide%3A%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed.%20Highlight%20the%20step-by-step%20instructions%2C%20the%20prerequisites%20and%20the%20most%20common%20mistakes. "Perplexity")

Share:

[](https://x.com/intent/tweet?text=How%20to%20test%20VPS%20network%20speed%20with%20iperf3&url=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed "Share on X") [](https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed "Share on Facebook") [](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed "Share on LinkedIn") [](https://wa.me/?text=How%20to%20test%20VPS%20network%20speed%20with%20iperf3%20https%3A%2F%2Fstreethosting.com.br%2Fen%2Fguides%2Fvps%2Ftest-vps-network-speed "Share on WhatsApp")

For agents: Copy as Markdown [.md](https://streethosting.com.br/en/guides/vps/test-vps-network-speed.md)

In this guide 8 sections

* [What a network test measures](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#o-que-medir)
* [Install it and open the port](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#instalar)
* [First test and how to read it](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#primeiro-teste)
* [Reverse, parallel and bidirectional](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#reverso-paralelo)
* [UDP test](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#udp)
* [Downloads with curl and wget](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#curl-wget)
* [What limits the result](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#interpretar)
* [VPS and dedicated server uplink](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#onde-rodar)

Quick answer

To **test the network speed of your VPS**, run `iperf3 -s -1` on the VPS and `iperf3 -c IP_DA_VPS` on the other end, then repeat with `-R` for the opposite direction and `-P 4` for parallel streams. Open port 5201 only during the test and close it afterward. The final number always reflects the narrowest stretch: your internet connection, Wi-Fi and route count as much as the VPS does.

## What a network test measures[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#o-que-medir)

A bandwidth test measures throughput: how many bits per second really pass between two machines. It is not the same as the advertised port speed, which is the ceiling, and it has no direct relationship with ping. The difference between advertised capacity and real throughput is explained in [throughput and bandwidth](https://streethosting.com.br/en/guides/infrastructure/throughput-vs-bandwidth).

What almost everyone forgets is that the test has two ends and a path between them. If the VPS has a 1 Gbps uplink and your home has a 300 Mbps fiber line, the test from home will never go past 300 Mbps, and that says nothing about the VPS. The result is the minimum of the VPS, the route and the other end.

Even with no bottleneck at all, TCP does not reach 1000 Mbit/s on a 1 Gbps link. Each 1500 byte packet carries about 1448 bytes of data after the IP and TCP headers, and the Ethernet frame adds more bytes on the outside. The practical ceiling is close to 940 Mbit/s, and a result in that range means the link is full.

## Install it and open the port[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#instalar)

iperf3 has to be installed on both ends. On Ubuntu and Debian it is in the default repository; on a Mac, in Homebrew; for Windows there are ready-made builds of the same program.

`# Ubuntu and Debian, on the VPS and on the Linux client sudo apt update && sudo apt install iperf3 # macOS brew install iperf3`

If the Ubuntu installer asks whether iperf3 should start automatically as a service, answer no. You will run the server only at the moment of the test.

The server listens on port 5201, over both TCP and UDP. Open that port only to the IP the test comes from. In UFW, a rule without a protocol covers both:

`# find your public IP on the test computer curl -4 ifconfig.me # on the VPS, open the port only to that IP sudo ufw allow from SEU_IP to any port 5201`

iperf3 does not ask for a password by default. With the port open to the world, anyone can use your VPS for tests and eat your bandwidth. Restrict it by IP and delete the rule when you finish, as the next section shows. The basics of rules and evaluation order are in [UFW firewall on a VPS](https://streethosting.com.br/en/guides/vps/ufw-firewall-ubuntu-vps).

## First test and how to read it[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#primeiro-teste)

On the VPS, start the server with `-1`, which handles a single test and then exits on its own. On the other end, run the client:

`# on the VPS iperf3 -s -1 # on the client: 10 seconds over TCP, client sending to the VPS iperf3 -c IP_DA_VPS`

The output has one line per second and a summary at the end. An illustrative example between two machines with a 1 Gbps link:

`[ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 98.2 MBytes 824 Mbits/sec 0 3.12 MBytes [ 5] 1.00-2.00 sec 108 MBytes 906 Mbits/sec 0 3.12 MBytes ... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.05 GBytes 903 Mbits/sec 12 sender [ 5] 0.00-10.01 sec 1.05 GBytes 900 Mbits/sec receiver`

* **Bitrate:** the rate. Use the receiver line of the summary, which counts what actually arrived.
* **Retr:** retransmitted TCP segments. A few dozen in a 10 second full-speed test is normal; thousands point to loss or congestion along the path.
* **Cwnd:** the congestion window, how much data TCP lets stay in flight without acknowledgment. If it keeps shrinking, there is loss.
* **Lower first second:** that is TCP ramping up. Use `-O 2` to drop the first two seconds from the average.

When the tests are done, close the port: `sudo ufw delete allow from SEU_IP to any port 5201`.

## Reverse, parallel and bidirectional[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#reverso-paralelo)

The default test measures only one direction. For the full picture, run the variations below. Remember to start `iperf3 -s -1` on the VPS again before each one, or use `iperf3 -s` without `-1` and stop it with Ctrl+C at the end.

| Command on the client               | What it measures                         | Running the client at home                           |
| ----------------------------------- | ---------------------------------------- | ---------------------------------------------------- |
| iperf3 -c IP\_DA\_VPS               | Client sends, VPS receives               | Your upload to the VPS                               |
| iperf3 -c IP\_DA\_VPS -R            | VPS sends, client receives               | The download the VPS delivers to you                 |
| iperf3 -c IP\_DA\_VPS -P 4          | Four parallel TCP streams                | Total capacity, without the limit of a single stream |
| iperf3 -c IP\_DA\_VPS -R -P 4 -t 30 | Parallel, opposite direction, 30 seconds | Sustained download, good for catching fluctuation    |
| iperf3 -c IP\_DA\_VPS --bidir       | Both directions at the same time         | How the link behaves when full in both directions    |

If the single-stream test gives much less than the `-P 4` test, the limit is TCP itself, not the link. A single stream has to keep an amount of data in flight equal to the bandwidth times the latency: at 1 Gbit/s with a 20 ms round trip that is about 2.5 MB; at 150 ms, close to 19 MB, more than the default configuration usually allows a connection. That is why long routes show a low single stream and a high total, and why big downloads use several connections.

On a small VPS, iperf3 itself can become the bottleneck. Up to version 3.15 it runs everything in one thread; 3.16, which is the version in Ubuntu 24.04, uses one thread per parallel stream. If a core hits 100% during the test, the number is measuring the CPU and not the network.

## UDP test[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#udp)

For games, voice and VPNs, the UDP test shows something TCP hides: how much is lost and how much the arrival time varies at a fixed rate. Without `-b`, iperf3 sends only 1 Mbit/s over UDP, so set the rate you want:

`# 100 Mbit/s over UDP, client sending to the VPS iperf3 -c IP_DA_VPS -u -b 100M # same rate, VPS sending to the client iperf3 -c IP_DA_VPS -u -b 100M -R`

The summary adds two new columns: `Jitter` and `Lost/Total Datagrams`. Look at the receiver line: loss above 1% or jitter of several milliseconds at a rate the path should handle points to queuing or congestion, and then it is worth tracing the route with [MTR](https://streethosting.com.br/en/guides/infrastructure/how-to-use-mtr).

UDP has no congestion control: iperf3 sends exactly the rate you ask for, whether or not it fits in the path. Start low, with 50M or 100M, and raise it gradually. Firing 1G at a home connection just fills the router queue and knocks the household internet out for the duration of the test.

## Downloads with curl and wget[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#curl-wget)

You cannot always install iperf3 on the other end. A large HTTP download is a simple, realistic test, because it is exactly what your users do. From the VPS outward, download a big file from a well-connected server, such as a Linux distribution ISO image on a Brazilian mirror, discarding the content:

`# curl: prints the average in bytes per second curl -o /dev/null -w 'average: %{speed_download} bytes/s\n' URL_DO_ARQUIVO # wget: shows the live rate and the average at the end wget -O /dev/null URL_DO_ARQUIVO`

curl reports bytes per second. Multiply by 8 and divide by a million to get Mbit/s: 112,000,000 bytes/s equals 896 Mbit/s.

To measure the reverse path, from the VPS to your home, serve a test file from the VPS itself for a few minutes:

`# on the VPS fallocate -l 1G teste.bin sudo ufw allow from SEU_IP to any port 8080 proto tcp python3 -m http.server 8080 # on your computer (on Windows, use curl.exe and swap /dev/null for NUL) curl -o /dev/null -w 'average: %{speed_download} bytes/s\n' http://IP_DA_VPS:8080/teste.bin # back on the VPS: Ctrl+C on the server, then sudo ufw delete allow from SEU_IP to any port 8080 proto tcp rm teste.bin`

## What limits the result[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#interpretar)

A single number is misleading. A routine that separates the capacity of the VPS from your users' experience takes four measurements:

1. From the VPS to another server in a data center, with `-P 4` in both directions. That is the VPS number.
2. From your home to the VPS, over a cable, in normal mode and with `-R`. That is the number a user like you will see.
3. Over UDP, at the rate your application really uses, to see loss and jitter under that load.
4. The same measurements at peak hours, between 8 PM and 11 PM, when residential networks are busiest.

Write down the date, time, origin and command of each test. When a number comes out low, the table links the symptom to the most likely cause.

| What you saw                            | Likely cause                                     | Next step                                     |
| --------------------------------------- | ------------------------------------------------ | --------------------------------------------- |
| Result equal to your internet plan      | Your connection is the bottleneck, not the VPS   | Test against another server in a data center  |
| Much worse on Wi-Fi than on a cable     | Radio, distance or interference                  | Redo everything over a cable                  |
| Low single stream and high -P 4         | High latency limiting the TCP window             | Normal on a long route; look at the total     |
| Retr in the thousands                   | Loss or congestion along the path                | Run MTR in both directions                    |
| CPU at 100% during the test             | iperf3 limited by the small VPS                  | Use -P with version 3.16 or measure with curl |
| Rate drops to zero and does not recover | MTU black hole on the path                       | Test the MTU with ping and the DF bit set     |
| High loss only in the UDP test          | Requested rate is above what the path can handle | Lower the -b value                            |

The case of the rate dropping to zero deserves attention, because it looks like a VPS fault and almost never is: the symptom and the test are in the guide on [MTU and PMTUD](https://streethosting.com.br/en/guides/infrastructure/what-is-mtu). To complete the diagnosis with latency and variation from several cities, follow [how to test VPS latency](https://streethosting.com.br/en/guides/vps/test-vps-latency).

## VPS and dedicated server uplink[](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#onde-rodar)

Every [StreetHosting VPS](https://streethosting.com.br/en/vps) has a 1 Gbps uplink, in a data center in São Paulo, with Anti-DDoS included and root access to run iperf3, curl and any other test tool. As shown above, what you measure also depends on the other end and the route, so test from more than one place before drawing a conclusion.

* **Ryzen 9 9950X VPS:** from R$ 40.00 (1 vCPU, 2 GB DDR5, 20 GB NVMe) to R$ 846.00 (14 vCPU, 64 GB, 640 GB NVMe). More vCPUs help sustain many simultaneous encrypted streams, such as HTTPS and VPN. See the tiers on the [Ryzen VPS page](https://streethosting.com.br/en/vps/ryzen).
* **Xeon VPS:** from R$ 26.00 (2 vCPU, 2 GB) to R$ 553.00 (24 vCPU, 64 GB), with the same 1 Gbps uplink and more cores per real.
* **Above 1 Gbps:** the [dedicated servers](https://streethosting.com.br/en/dedicated) in São Paulo have a dedicated 10 Gbps port, starting at R$ 1,499.00 per month, for those who already saturate the gigabit link on a sustained basis.

In this guide

* [What a network test measures](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#o-que-medir)
* [Install it and open the port](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#instalar)
* [First test and how to read it](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#primeiro-teste)
* [Reverse, parallel and bidirectional](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#reverso-paralelo)
* [UDP test](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#udp)
* [Downloads with curl and wget](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#curl-wget)
* [What limits the result](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#interpretar)
* [VPS and dedicated server uplink](https://streethosting.com.br/en/guides/vps/test-vps-network-speed#onde-rodar)

## Frequently asked questions

How do I test the network speed of a VPS?

Install iperf3 on the VPS and on another machine, run iperf3 -s on the VPS and iperf3 -c VPS\_IP on the other end. Repeat with -R to measure the opposite direction and with -P 4 to use parallel streams. For a number that reflects the VPS and not your home connection, also test against another server in a data center.

Why does iperf3 show less than 1 Gbps?

Because the test measures the narrowest stretch between the two ends. Your internet connection, Wi-Fi, the route and the latency all count. Even under perfect conditions, TCP on a 1 Gbps link with an MTU of 1500 tops out around 940 Mbit/s because of header overhead.

What is the difference between the normal test and the -R test?

In normal mode the client sends and the server receives, so you measure the client to server direction. With -R the server sends and the client receives. If you run the client at home, normal mode measures your upload to the VPS and -R measures the download the VPS delivers to you.

Can I leave iperf3 running on the VPS?

It is not recommended. By default iperf3 has no authentication, and anyone who finds the port can use your bandwidth. Run the server with -1 so it handles one test and exits, open port 5201 only to your own IP, and delete the firewall rule when you are done.

Why does a test from home show less than a test between servers?

Because from home the limit is almost always your own connection: the plan you pay for, the Wi-Fi, the router and your ISP's route. Between two servers in a data center those limits drop out. Both numbers are useful: one shows what your users will see, the other shows what the VPS can do.

Next step

See VPS plans

Root VPS in Brazil with NVMe and Anti-DDoS.

[See VPS plans](https://streethosting.com.br/en/vps)

[See Ryzen VPS Ryzen 9 9950X VPS in São Paulo with root access, NVMe and gamer Anti-DDoS.](https://streethosting.com.br/en/vps/ryzen) [See dedicated servers Exclusive hardware in São Paulo with NVMe and Anti-DDoS.](https://streethosting.com.br/en/dedicated)

## Related guides

[Infrastructure Beginner Throughput vs bandwidth on servers: what the difference means Bandwidth, throughput and latency show up in every server ad, but they are different things. Knowing the difference helps you pick the right plan for what you need. 3 min Read guide](https://streethosting.com.br/en/guides/infrastructure/throughput-vs-bandwidth) [Infrastructure Beginner Bandwidth vs traffic: what your server actually uses Bandwidth is the width of the pipe, traffic is the water that flows through it each month. Mixing them up leads to bad plan choices. Here is how to estimate your server's usage with no guesswork. 3 min Read guide](https://streethosting.com.br/en/guides/infrastructure/bandwidth-vs-traffic) [VPS Beginner UFW on Ubuntu VPS: firewall rules without losing SSH UFW makes the Ubuntu firewall simpler, but one rule in the wrong order locks you out of your VPS. Learn how to enable it without losing SSH, open only what you need, deal with Docker, and get back in through the console if something goes wrong. 10 min Read guide](https://streethosting.com.br/en/guides/vps/ufw-firewall-ubuntu-vps)

[← Back to the Guide Center](https://streethosting.com.br/en/guides)
