Skip to main content

Speed Test Benchmark

Network tests are easiest to misuse: public endpoints, routing changes, and time-of-day can dominate results. This page documents two quick tools (network-speed.xyz and speedtest-cli) and how to interpret results without over-claiming.

Quick Summary
  • Use these tools for a quick throughput snapshot ("is the network obviously broken?").
  • Do not treat results as SLA evidence.
  • For controlled testing, use iperf3 between two hosts you control; use mtr for path/packet loss investigation.
warning

Avoid piping untrusted remote scripts into bash. Download first, inspect, then run.

Option A: network-speed.xyz​

network-speed.xyz is a lightweight script that focuses on download throughput across multiple regions.

Safer way to run​

run-network-speed-xyz-safely.sh
mkdir -p ~/nettest
cd ~/nettest

wget -O network-speed.xyz https://network-speed.xyz
sed -n '1,200p' network-speed.xyz

bash network-speed.xyz | tee network-speed.$(date +%F_%H%M%S).log

Decision-oriented summary​

Use caseVerdictWhy
Quick network sanity checkBest fitFast and focused on throughput
Comparing VPS bandwidthBest fitMultiple regions/endpoints
Disk or CPU evaluationNot suitableNot a system benchmark
Network SLA validationAcceptablePublic endpoints only
Production performance validationNot suitableNo controlled iperf3 methodology
Client/audit reportsAcceptableSupporting signal only

Strengths​

  • Focused purely on throughput
  • Tests multiple locations
  • Fast execution

Limitations​

  • Public mirrors with variable routing
  • Typically no latency/jitter focus
  • Not inherently repeatable
  • Output not machine-friendly

Option B: speedtest-cli​

speedtest-cli runs a speed test against public servers. It can be useful as an extra signal, especially for upload throughput.

Install and run:

install-and-run-speedtest-cli-apt.sh
sudo apt update
sudo apt install -y speedtest-cli

speedtest-cli

Example output:

speedtest-cli

Interpreting results safely​

  • Run tests at least 3 times and compare medians.
  • Record timestamp, VPS region, provider, and the target server/mirror.
  • If results vary wildly, investigate routing/packet loss with mtr.

Audit-grade alternatives​

  • Throughput: iperf3 (server + client you control)
  • Path/loss: mtr, ping, traceroute
  • Application-level: real HTTP download/upload to your own storage/CDN endpoint

Controlled throughput test with iperf3​

If you need repeatable numbers, run iperf3 between two hosts you control (example: your VPS to a second VPS in another region).

On the server (receiver):

iperf3-server.sh
sudo apt update
sudo apt install -y iperf3

iperf3 -s

On the client (sender):

iperf3-client-download.sh
sudo apt update
sudo apt install -y iperf3

iperf3 -c <SERVER_IP> -P 4 -t 20

Test the reverse direction (upload relative to the client):

iperf3-client-upload-reverse.sh
iperf3 -c <SERVER_IP> -P 4 -t 20 -R
warning

iperf3 -s opens a listening port. If this is on a public server, restrict the firewall to your source IP or run it briefly and stop it after testing.

Investigate routing and packet loss with mtr​

When throughput is inconsistent, measure the path.

mtr-basic-report.sh
sudo apt update
sudo apt install -y mtr-tiny

mtr -rwzbc 100 <TARGET_HOST>

Interpretation tips:

  • Loss on intermediate hops can be misleading (some routers rate-limit ICMP).
  • Focus on loss and latency at the final hop and overall trend.

Result capture template​

Keep a small record so you can compare later:

network-test-record-template.txt
date:
vps_host:
provider:
region:
tool:
target:
download_mbps:
upload_mbps:
notes:

Common pitfalls​

  • Testing during provider maintenance or peak hours
  • Comparing two VPS providers from different regions (routing dominates)
  • Assuming CDN download speed equals your site's real user experience
  • Forgetting to record the selected speedtest server/mirror