Networking 7 min read

How to Run an Objective VPN Speed Test: Methods, Tools, and Timing

Skip the marketing numbers and test it yourself: which tools to use, how many runs to do at peak and off-peak hours, what latency, jitter, packet loss and throughput actually mean, and how to avoid being misled by a single peak.

If you want to know how to test VPN speed properly, start by accepting one premise: a single speed test is a sample, not a conclusion. On the same route, morning and evening peak hours can produce completely different numbers; switch tools or test servers and the results shift again. To judge whether a route suits your use case, you need to fix the variables, repeat across time slots, and look at latency, jitter, packet loss and throughput together. The process below needs no specialist knowledge — built-in commands and a few common tools are enough.

Start With the Four Metrics: Latency, Jitter, Packet Loss, Throughput

The most prominent number on a speed test page is throughput alone, and it cannot answer why video playback stutters. Each of the four metrics has its own job, and leaving one out can lead to a wrong call:

  • Latency (RTT): the time it takes for a packet to travel from your device to the target server and back, measured in milliseconds. With a proxy in place, that round trip covers two legs — device → exit node → target — so it is naturally higher than a direct connection. Compare it only against the same target and the same tool.
  • Jitter: how much latency varies from one packet to the next. Jitter matters more than average latency for whether video stutters or voice calls drop — a low average with high jitter feels worse than a slightly higher but steady latency.
  • Packet loss: the share of sent packets that never arrive. Even a small amount triggers retransmissions and drags throughput down; QUIC-based protocols handle loss differently from TCP, so they behave differently too.
  • Throughput: how much data actually moves per unit of time. Distinguish single-thread from multi-thread: single-thread is closer to downloading one file or watching one stream, while multi-thread is closer to what a speed test site reports.
ms Latency (RTT): time for one round trip; keep the target fixed when comparing
ms Jitter: how much latency varies; video and voice calls are most sensitive to it
% Packet loss: share of packets that never arrive; triggers retransmits that slow throughput
Mbps Throughput: actual data moved per second, measured both single-thread and multi-thread

Fix the Variables First: Device, Protocol and Connection Type

The biggest source of noise in speed tests is not the route — it is your own variables. On the same node, changing device, protocol or switching to Wi-Fi can move the numbers a long way. Before you start, lock down the following:

  • Device and network: same device, same network, wired if possible; on Wi-Fi, keep the same band and the same spot throughout.
  • Background traffic: turn off OS updates, cloud drive sync and cloud backups, and pause heavy transfers on other devices.
  • Protocol: Shadowsocks, VMess, VLESS and Trojan run over TCP; Hysteria2 and TUIC are QUIC-based and run over UDP. Different protocols can perform differently on the same node, and the gap widens when international links see packet loss. When comparing nodes, do not change the node and the protocol at the same time.
  • Multiplexing (mux): bundles several connections into one TCP connection; when packets are lost it is prone to head-of-line blocking, which lowers single-thread throughput. Either leave it off for every test or on for every test — do not mix.
  • Rule mode: in split-tunneling mode, if your test target matches a direct-connection rule, you are actually measuring your direct connection. Confirm the target goes through the proxy before testing.

With a proxy in place, ping measures the full device → node → target round trip, and how a node handles ICMP also affects the result: some servers rate-limit or deprioritize ICMP, so a high ping does not necessarily mean slow transfers. It is better for comparing nodes against each other than for drawing absolute conclusions about a route.

Common Tools and What Each One Measures Best

It is not about how many tools you use, but about having a way to measure each metric. The options below cover everything from latency to throughput — picking two or three and combining them is enough:

ToolWhat it measuresPlatformTips
ping Latency, jitter and packet loss Windows / macOS / Linux Send a fixed number of packets (100, say) and read the min / avg / max latency and loss rate in the summary — do not stop at 4 packets
mtr / tracert Per-hop latency and loss, to pinpoint which segment is at fault All platforms Watch for sustained loss on the international segment; occasional loss on a single hop may just mean that router deprioritizes ICMP
Speed test sites (Ookla, etc.) Multi-thread throughput Browser / app Always use the same test server; check whether it sits in the same city and data center as the node, or the numbers will look better than reality
fast.com Streaming-oriented throughput reference Browser Testing against the streaming provider's own servers gets closer to the bandwidth you actually get while watching
iperf3 End-to-end TCP / UDP throughput Requires your own server Run it once with -P 4 for multi-thread and once with -P 1 for single-thread, then compare the gap
curl Time and download speed for a single request All platforms Repeat the request to the same URL several times and take the median — more reliable than a single run

Which Hours to Test: Runs at Peak vs. Off-Peak

Cross-border links carry a clear daily load pattern. On weekdays, 20:00–23:00 is usually the evening peak, when international gateways are busiest and higher latency and packet loss are more likely; 9:00–11:00 and 14:00–16:00 are comparatively quiet, and the numbers sit closer to what the route can actually do. Run at least 3 rounds per time slot, a few minutes apart, and take the median; spread the tests over at least two days — one weekday and one weekend. A single good result proves nothing.

Time slotWhat you typically seeWhat it tells you
Off-peak (morning / afternoon) Low link load; numbers approach the route's ceiling Use it as the node's reference ceiling, and to confirm your device and settings are fine
Evening peak (20:00–23:00) International gateways congested; latency and jitter rise, packet loss may appear Sets the floor for everyday experience — watch jitter and packet loss
Late night Load drops back; metrics recover Confirms the evening-peak swings are time-of-day effects, not a problem with the node itself

A Repeatable Speed Test Routine

Go through the pre-test checklist first, then work through the steps in order. Keep the whole run under 15 minutes so it does not spill over a time-slot boundary:

  • ✅ Use an Ethernet cable, or stay on the 5GHz band — same spot, same network for the whole test.
  • ✅ Turn off OS updates, cloud drive sync, cloud backups and any downloads in progress.
  • ✅ Use one node, one protocol and one mux setting for the entire run.
  • ✅ Check your rule mode and test target so direct connections do not sneak into proxy results.
  • ❌ Do not run comparisons on public Wi-Fi or a phone hotspot — those links carry their own extra limits.
  • ❌ Do not treat a single best result as the route's real level.
  1. Measure a baseline: with no proxy, run one round against the same test server and note latency and throughput.
  2. Connect to the node and ping 100 packets in a row, recording the latency range and any loss.
  3. Run mtr (or tracert) once and watch for sustained loss on the international segment.
  4. Run multi-thread throughput against the same test server, then a single-thread download, and write down both numbers.
  5. Back to real-world use: open your usual video service or cloud drive, transfer for 1–2 minutes and watch for bitrate drops.
  6. Repeat steps 2–5 during the evening peak and compare the two sets of results side by side.
  7. Log results for 3 days in a row and use the median, not the best number, as the node's representative figure.
# Windows: send 100 packets in a row
ping -n 100 1.1.1.1

# macOS / Linux: same packet count
ping -c 100 1.1.1.1

# Time and download speed for one request; repeat and take the median
curl -o /dev/null -s -w "%{time_total} %{speed_download}\n" https://example.com/file

Reading the Results: Do Not Be Fooled by a Single Peak

A few common sources of inflated numbers — note them in your log rather than taking them at face value:

  • TCP slow start and burst credit: speed is still climbing right after a connection opens, so a very short test may capture the ramp-up or a brief burst instead of steady state.
  • Cache hits: testing the same URL over and over can hit a CDN cache — the numbers look great but do not reflect your exit bandwidth.
  • Test server location: when the test server sits in the same city and data center as the node, you are closer to measuring intra-datacenter speed than the speed you get reaching real websites.
  • The single-thread vs. multi-thread gap: if multi-thread saturates but single-thread crawls, the bottleneck is per-connection scheduling — most noticeable when downloading large files.

Treat the median as your conclusion and the peak as noise. Run 3 rounds on the same node during the evening peak and use the median latency and throughput as the representative values; a wide spread between the best and worst runs means the node is not stable, not that it is fast on average.

Common Mistakes and When to Switch Nodes

One more point that often gets overlooked: if your speed test numbers look fine but the first step of loading a page is painfully slow, check DNS first. Some clients offer a remote resolution / local resolution option; local resolution sends DNS lookups over your local network, which can both slow down the first visit and leave those lookups outside the tunnel (what people call a DNS leak). This kind of problem never shows up in throughput numbers, so verify it separately.

QUIC-based protocols such as Hysteria2 and TUIC can be affected by carrier UDP policies on some networks, and jitter may be noticeably higher. If that happens, switch back to a TCP-based protocol such as VLESS or Trojan, run another round, and compare before deciding which to use long term.

Consider switching nodes when you see the following — not on the strength of a single test:

  • Packet loss during the evening peak on several days in a row, reproducible in both ping and mtr;
  • Single-thread throughput stays below what your use case needs while multi-thread throughput is fine;
  • Jitter is obvious, video keeps dropping bitrate and voice calls break up.

Change only one variable at a time when switching nodes. Keep the protocol fixed, switch the node, then re-test with the same routine so the results are comparable. The route list labels each route type (IEPL dedicated / direct / relay), so you can narrow the field by type first and then verify with the method above.

VPNDT: 110+ countries / 150+ routes

No limit on simultaneous devices, no email address required to sign up, and a 60-day no-questions-asked refund; the route list labels IEPL dedicated, direct and relay routes so you can filter by type and verify each one with the method above.

Try Free