You just spun up a VPS — but how do you actually tell whether it’s any good? And when a provider promises “CN2 GIA” routing into China, how do you confirm it’s the real deal and not marketing fluff?

This guide rounds up the most complete, current collection of VPS benchmark scripts for 2026 — from raw performance and return-route tracing to IP reputation and streaming-unlock checks. If you’re deploying services that need to reach users across borders (China included), this is the toolkit that tells you what the spec sheet won’t. One article, everything you need.

Related: My honest comparison after using 8 VPS providers

1. What You’ll Get Out of This

  • Grasp the basics of VPS benchmarking
  • Know how to use the common speed-test scripts
  • Read the results and judge a VPS’s quality for yourself

2. The Plan / How to Think About It

What should you look at when benchmarking a VPS?

Dimension Why it matters Test
Basic performance CPU/RAM/disk decide what services you can run bench.sh, YABS
Network quality The return route decides access speed from China Return-route tracing
IP quality Affects whether you can reach certain services IP quality check
Streaming unlock Some users need Netflix etc. unlocked Streaming check
Three-carrier speed Real-world speed on China Telecom/Unicom/Mobile Three-carrier speed test

Sorting the scripts

I split the common scripts into 5 buckets, from basic to advanced:

1
2
3
4
5
1. Comprehensive performance → learn the hardware basics
2. Return-route tracing → see if it's CN2 or plain BGP
3. IP quality check → see whether the IP is clean
4. Streaming unlock → see which platforms are unlocked
5. Three-carrier speed test → real upload/download speeds

3. Step-by-Step

3.1 Comprehensive Performance Tests

bench.sh (the classic)

The simplest all-in-one test — one line and you’re done:

1
wget -qO- bench.sh | bash

What it tests:

  • System info (CPU model, RAM, disk)
  • I/O speed test
  • Network speed test (multiple nodes)

Reading the results:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2025-05-08
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) CPU E5-2697 v2 @ 2.70GHz
CPU Cores : 1 @ 2699.932 MHz
CPU Cache : 30720 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 14.7 GB (5.3 GB Used)
Total Mem : 960.7 MB (458.2 MB Used)
Total Swap : 1024.0 MB (227.6 MB Used)
System uptime : 334 days, 21 hour 25 min
Load average : 0.00, 0.00, 0.00
OS : Debian GNU/Linux 12
Arch : x86_64 (64 Bit)
Kernel : 6.1.0-30-amd64
TCP CC : bbr
Virtualization : KVM
IPv4/IPv6 : ✓ Online / ✓ Online
Organization : AS35916 MULTACOM CORPORATION
Location : Los Angeles / US
Region : California
----------------------------------------------------------------------
I/O Speed(1st run) : 322 MB/s
I/O Speed(2nd run) : 487 MB/s
I/O Speed(3rd run) : 532 MB/s
I/O Speed(average) : 447.0 MB/s
----------------------------------------------------------------------
Node Name Upload Speed Download Speed Latency
Speedtest.net 699.41 Mbps 461.15 Mbps 36.39 ms
Paris, FR 594.12 Mbps 644.67 Mbps 136.16 ms
Hong Kong, CN 3.85 Mbps 1.42 Mbps 167.20 ms
Singapore, SG 58.95 Mbps 1.60 Mbps 218.86 ms
Tokyo, JP 736.11 Mbps 889.69 Mbps 108.35 ms
----------------------------------------------------------------------
Finished in : 2 min 46 sec
Timestamp : 2026-01-10 13:34:13 UTC
----------------------------------------------------------------------

image.png

Key metric:

Metric Excellent Pass Poor
I/O Speed >500MB/s 200-500MB/s <200MB/s

SuperBench.sh (China speed-test edition)

An improved fork of bench.sh that swaps in domestic (China) speed-test nodes, so it’s better for measuring speeds back to China:

1
2
3
wget -qO- git.io/superbench.sh | bash
# or
curl -Lso- git.io/superbench.sh | bash

SuperBench.sh - ithinker

How it differs from bench.sh:

  • bench.sh tests against global nodes
  • SuperBench.sh tests against China Telecom / Unicom / Mobile nodes

Best for: when you need the real-world speed from the VPS back to China.

Merges bench.sh and SuperBench.sh, adds Ping and route tracing, and can generate a web report you can share:

1
2
3
4
5
# Chinese version
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh

# English version (use this if Chinese characters show as garbage)
wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench.sh && bash ZBench.sh

ZBench - itthinker

It hung for me here, so I didn’t go further.

What it tests:

  • System info + I/O test
  • Domestic + international speed tests
  • Ping test
  • Route tracing
  • Generates a web report (shareable)

Rating: ⭐⭐⭐⭐

The standout feature: it spits out a web link, which makes sharing your results easy.

YABS (with GeekBench scores)

A more detailed test that includes GeekBench scores and an fio disk test:

1
curl -sL yabs.sh | bash

YABS

image.png

What it tests:

  • System info
  • fio disk test (4K random R/W)
  • GeekBench 6 score
  • iperf3 network speed test

Note: the GeekBench test takes a while (around 5–10 min) and hogs resources.

Reading the results:

1
2
3
4
Geekbench 6 Benchmark Test:
---------------------------------
Single Core : 1200
Multi Core : 4500

GeekBench 6 reference:

Score Level Typical config
Single-core >1500 Excellent High-frequency CPU
Single-core 1000-1500 Good Mainstream config
Single-core <1000 Mediocre Heavily oversold or old CPU

LemonBench

A comprehensive all-in-one test with a friendly UI, originally built by a Chinese developer:

1
2
3
4
wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --full

# Fast test (skips some time-consuming items)
wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --fast

LemonBench

What it tests:

  • System info
  • Network info
  • Streaming unlock
  • CPU performance test
  • Memory performance test
  • Disk performance test

UnixBench (CPU-only)

A veteran script dedicated to CPU performance; its scores are widely recognized:

1
2
3
wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh
chmod +x unixbench.sh
./unixbench.sh

unixbench

Note: this one runs long (30+ minutes), and it only tests the CPU — no network.

Best for: when you need a detailed read on CPU performance to compare compute across VPS providers.

The Fusion benchmark (spiritLHLS/ecs)

An absurdly complete script (Chinese-built) that bundles in just about every test there is:

1
curl -L https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh -o ecs.sh && chmod +x ecs.sh && bash ecs.sh

Or use the mirror:

1
bash <(wget -qO- bash.spiritlhl.net/ecs)

image.png

image.png

What it tests:

  • Basic system info
  • CPU/RAM/disk tests
  • Streaming-unlock check
  • IP quality check
  • Return-route tracing
  • Three-carrier speed test

Rating: ⭐⭐⭐⭐⭐

It does so much that if you only run one script, run this one.

Menu options: When you launch it you get a menu; the ones you’ll use most:

  • 0 - Full test (takes a while)
  • 1 - Basic system info
  • 4 - Three-carrier speed test + return route
  • 7 - IP quality check
  • 8 - Streaming unlock

3.2 Return-Route Tracing

Return routing decides the network quality from the VPS back to China.

Why the return route matters more than the outbound

  • Outbound: the route from you to the VPS (small amount of data)
  • Return: the route the VPS uses to send data back to you (large amount of data)

When we browse, we download far more than we upload — so the return route is what really counts.

Common routes compared

Route AS number IP signature Notes Latency Price
CN2 GIA AS4809 59.43.x.x (end-to-end) China Telecom’s best route Low Pricey
CN2 GT AS4809 59.43 (intl leg) + 202.97 (domestic leg) Telecom’s runner-up Lower Mid-high
163 backbone AS4134 202.97.x.x Telecom’s ordinary route High Cheap
9929/CUPM AS9929 218.105.x.x Unicom optimized route Low Pricey
4837 AS4837 219.158.x.x Unicom ordinary route Higher Cheap
CMIN2 AS58807 223.120.x.x Mobile optimized route Lower Mid-high
CMI AS58453 223.118/119.x.x Mobile ordinary route Average Cheap

How to tell which route you’re on (important)

Look at the IP signatures in the route:

1
2
3
4
5
59.43.x.x  → CN2 line (China Telecom premium)
202.97.x.x → 163 backbone (China Telecom ordinary)
218.105.x.x → Unicom 9929 (Unicom premium)
219.158.x.x → Unicom 4837 (Unicom ordinary)
223.120.x.x → Mobile CMIN2 (Mobile premium)

Telling CN2 GIA apart from CN2 GT:

  • CN2 GIA: 59.43.x.x the whole way, no 202.97
  • CN2 GT: 59.43 on the international leg, switching to 202.97 once inside China
1
curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh

Uploading file...t2u20

Reading the results:

1
2
3
4
Beijing Telecom    219.141.147.210  testing  Telecom CN2 GIA
Beijing Unicom 202.106.50.1 testing Unicom 4837
Beijing Mobile 221.179.155.161 testing Mobile CMI
Shanghai Telecom 202.96.209.133 testing Telecom CN2 GIA

Read the route type in the last column:

  • Telecom CN2 GIA → best
  • Unicom 9929 → Unicom’s best
  • Mobile CMIN2 → Mobile optimized
  • Telecom 163 / Unicom 4837 → ordinary routes

mtr_trace (three-carrier return-route test)

1
curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh | bash

mtr_trace

This script traces the return route to multiple cities across China Telecom, Unicom, and Mobile.

testrace.sh (detailed route tracing)

1
2
wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh
bash testrace.sh

After launching, you can pick which city to trace to.

NextTrace (even more detail)

1
2
3
4
5
# Install
curl nxtrace.org/nt | bash

# Trace to a specific IP
nexttrace 219.141.147.210

Strength: shows latency and AS number for every hop, so you can see the full path.

BestTrace (GUI)

Great for Windows users — it has a GUI and lets you trace the route from your own machine to the VPS.

Download: https://www.ipip.net/product/client.html


3.3 IP Quality Checks

IP quality affects:

  • Whether you can reach services like Google and ChatGPT
  • Whether mail you send gets flagged as spam
  • Whether the IP is flagged as high-risk by security services
1
bash <(curl -Ls IP.Check.Place)

image.png

image.png

Reading the results:

1
2
3
4
5
6
7
8
9
10
11
12
-------------------------------
IP Quality Score
-------------------------------
Scamalytics: Score 15 (Low Risk)
IP2Location: Proxy/Hosting
IP-API: Hosting
-------------------------------
Blacklist Check
-------------------------------
Spamhaus: Not Listed
SORBS: Not Listed
-------------------------------

Key metrics:

Metric Notes
Scamalytics Score <30 excellent, 30-50 average, >50 poor
Blacklist Ideally all “Not Listed”

ipcheck.ing

1
bash <(curl -sL ipcheck.ing)

image.png

Friendlier interface, more intuitive results.


3.4 Streaming-Unlock Checks

Checks whether Netflix, Disney+, ChatGPT and similar services work from your VPS:

1
bash <(curl -L -s check.unlock.media)

image.png

Sample output:

1
2
3
4
5
6
7
============[ Multination ]============
Netflix: Yes (Region: US)
Disney+: Yes (Region: US)
YouTube Premium: Yes (Region: US)
ChatGPT: Yes
Spotify: Yes
=======================================

Common results:

  • Yes (Region: XX) — unlocked, region XX
  • No — locked
  • Originals Only — only original content unlocked

MediaUnlockTest

1
bash <(curl -Ls unlock.moe)

image.png

Same idea, but it checks more platforms.


3.6 Pre-Purchase Testing (no VPS required)

Haven’t bought a VPS yet? Here’s how to test in advance.

Method 1: Ping the test IP

Providers usually publish a test IP — ping it first to check latency and packet loss:

1
2
3
4
5
# Windows
ping -n 100 TEST_IP

# Mac/Linux
ping -c 100 TEST_IP

Key metrics:

  • Latency: US West <200ms, Japan <100ms, Hong Kong <50ms counts as normal
  • Packet loss: <5% acceptable, >10% a problem

Method 2: Outbound route tracing

Trace the route from your own machine to the VPS (the outbound path):

Windows: download BestTrace — GUI, very intuitive.

Mac/Linux:

1
2
3
4
5
6
# Install mtr
brew install mtr # Mac
apt install mtr # Linux

# Run it
mtr TEST_IP

Method 3: Looking Glass

A lot of VPS providers offer a Looking Glass page where you can:

  • Ping from the VPS to you
  • See the return route
  • Download test files

How to find a Looking Glass:

  1. Look for “Looking Glass” or “Network Test” on the provider’s site
  2. Google “ Looking Glass”

Method 4: Download a test file

Providers usually host test files — just download one in your browser and watch the speed:

1
2
3
Common test-file paths:
http://TEST_IP/100MB.test
http://TEST_IP/1GB.test

Tip: testing during peak hours (8–10 PM) is more telling.


3.5 Three-Carrier Speed Test

Measures real-world speeds across China’s three carriers (Telecom, Unicom, Mobile):

AutoSpeed three-carrier speed test

1
bash <(curl -sL bash.icu/speedtest)

Speedtest CLI (official)

1
2
3
4
5
6
# Install
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt install speedtest

# Run
speedtest

Reading the results:

1
2
3
Download:   940.22 Mbps
Upload: 102.55 Mbps
Latency: 45.12 ms
Metric 1Gbps reference 100Mbps reference
Download >800Mbps >80Mbps
Upload >100Mbps >10Mbps
Latency <50ms excellent <100ms acceptable

4. Wrap-Up

My benchmarking workflow

1
2
3
4
5
6
7
8
9
10
11
12
13
Before you buy:
├── Ping the test IP — check latency and loss
├── Trace the outbound route with BestTrace
└── Find a Looking Glass to test the return route

After you buy:
Step 1: Run the Fusion script (ecs.sh) or ZBench
↓ One script covers most of the testing
Step 2: If the return route is unclear, run backtrace
↓ Confirm which line you're on
Step 3: If you care about IP quality, run IP.Check.Place
↓ Check for risk flags
Step 4: Log the results and compare against the provider's claims

Route quality cheat sheet

Route Telecom Unicom Mobile Price
CN2 GIA ⭐⭐⭐ ⭐⭐ ⭐⭐ $$$
CN2 GT ⭐⭐⭐ $$
9929/CUPM ⭐⭐ ⭐⭐⭐ ⭐⭐ $$$
CMIN2 ⭐⭐ ⭐⭐ ⭐⭐⭐ $$
163/4837/CMI $

Buying advice

  1. Know your use case first: dev environments want low latency, production wants stability
  2. Test during peak hours: 8–10 PM results are more representative
  3. Verify the provider’s claims: if they say CN2 GIA, run a return-route trace and check
  4. Run it more than once: a single run can mislead — average several runs

Benchmark script cheat sheet

Comprehensive performance

Script Strength Command
bench.sh Classic, global speed test wget -qO- bench.sh | bash
SuperBench China-node speed test wget -qO- git.io/superbench.sh | bash
ZBench ⭐ All-in-one, generates a report wget -N --no-check-certificate https://raw.githubusercontent.com/FunctionClub/ZBench/master/ZBench-CN.sh && bash ZBench-CN.sh
YABS GeekBench scores included curl -sL yabs.sh | bash
LemonBench Friendly UI, Chinese-built wget -qO- https://raw.githubusercontent.com/LemonBench/LemonBench/main/LemonBench.sh | bash -s -- --full
Fusion ecs ⭐⭐ Most complete bash <(wget -qO- bash.spiritlhl.net/ecs)
UnixBench CPU-only wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh && bash unixbench.sh

Return-route tracing

Script Strength Command
backtrace ⭐ Quick route verdict curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh
mtr_trace Multi-city, three carriers curl https://raw.githubusercontent.com/zhucaidan/mtr_trace/main/mtr_trace.sh | bash
testrace Detailed route tracing wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh && bash testrace.sh
NextTrace Visual route tracing curl nxtrace.org/nt | bash

Other tests

Script Strength Command
IP quality IP risk scoring bash <(curl -Ls IP.Check.Place)
Streaming unlock Netflix / Disney+ etc. bash <(curl -L -s check.unlock.media)
Three-carrier speed test Telecom / Unicom / Mobile bash <(curl -sL bash.icu/speedtest)

Route quality cheat sheet

Route Telecom Unicom Mobile
CN2 GIA ⭐⭐⭐ ⭐⭐ ⭐⭐
CN2 GT ⭐⭐⭐
9929/CUPM ⭐⭐ ⭐⭐⭐ ⭐⭐
CMIN2 ⭐⭐ ⭐⭐ ⭐⭐⭐
Plain BGP

Pre-purchase advice

Most VPS providers offer a Looking Glass or a test IP. Before you buy:

  1. Ping test: ping TEST_IP to check latency
  2. Route test: use BestTrace to trace from your machine to the target IP
  3. Download test: pull a test file from the Looking Glass to gauge speed

5. Troubleshooting Log

Scripts won’t run

Problem: some scripts need root.

Fix:

1
sudo bash <(curl -sL SCRIPT_URL)

Speed-test results vary wildly

Problem: the same VPS gives very different numbers across runs.

Cause:

  • Network fluctuation
  • The VPS is oversold, so resources are unstable
  • The speed-test node is congested

Tip: run it several times and average the results; test at different times of day.

GeekBench won’t run

Problem: on a small-RAM VPS, GeekBench runs out of memory (OOM).

Fix:

1
2
3
4
5
6
7
8
9
10
11
12
# Create swap (temporary)
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# Then run the test again
curl -sL yabs.sh | bash

# Remove swap when done
sudo swapoff /swapfile
sudo rm /swapfile

Return-route test fails

Problem: backtrace or another routing script won’t run.

Fix:

1
2
3
4
5
# Install dependencies
apt update && apt install -y curl wget mtr traceroute

# Re-run
curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh

6. FAQ

Q: Will these benchmark scripts leak my info?

A: These scripts are all open source — you can read the code. They only test VPS performance and don’t upload anything sensitive. Still, I’d recommend:

  • Get them from trusted sources like GitHub
  • If you’re unsure, download and read the code before running

Q: Why are my speed-test results so different from someone else’s?

A: A lot of things affect it:

  • Time of day (peak vs off-peak)
  • Your local network (which carrier you’re on)
  • The VPS’s current load
  • The state of the speed-test node

Test during the evening peak (8–10 PM) for numbers that actually mean something.

Q: The provider claims CN2 GIA — how do I verify it?

A: Run a return-route trace (backtrace) and read the output:

  • Real CN2 GIA: 59.43.x.x the whole way, no 202.97
  • Fake CN2 GIA (actually GT): 59.43 on the international leg, 202.97 on the domestic leg
  • Not CN2 at all: 202.97 the whole way

Q: What I/O speed counts as normal?

A: Reference values:

  • SSD: 500MB/s and up
  • Ordinary cloud disk: 200–500MB/s
  • HDD or heavily oversold: <200MB/s

Q: Do I need to run every single script?

A: Nope. Recommended flow:

  1. Start with the Fusion script (ecs.sh) or ZBench — one script covers most of it
  2. If you want to dig into the route, run backtrace
  3. If you care about IP quality, run IP.Check.Place

Q: How long does testing take?

A: Rough timings:

  • bench.sh: 2–3 minutes
  • SuperBench / ZBench: 5–10 minutes
  • YABS (with GeekBench): 10–15 minutes
  • Fusion full test: 15–30 minutes
  • UnixBench: 30+ minutes

What’s Next

Common VPS traps and how to dodge them — the pitfalls I’ve hit, including bad IPs, fake route labels, hidden fees, and more.


Last updated: January 2026