How we test. No black boxes.

Exactly how every number on this site is collected, measured and reported — including what it can't tell you.

01 — The loop

Five steps. Every server. Forever.

Every speed test follows the same automated sequence, so results stay consistent and fair across servers and providers.

01
ConnectOpen a WireGuard tunnel to the server using the provider's own configuration. 15-second timeout.
02
VerifyConfirm the tunnel is active and that traffic really routes through the VPN, by checking IP connectivity and DNS resolution.
03
MeasureOokla Speedtest CLI selects the optimal test server and measures download throughput, upload throughput, ping latency and jitter.
04
RecordDownload, upload, ping, jitter, the test server used and pass/fail status are logged to our database with a UTC timestamp.
05
Disconnect & rotateTear the tunnel down cleanly and move to the next server. A full round through all servers takes several hours, then starts again immediately.
test-runnersurfshark/pt-lis
08:04:19Zspeedtest down 915.4 up 888.7 ping 37.3
Replaying our latest real results
02 — Why our numbers look high

We measure the tunnel's ceiling. Your line sets your limit.

We test from a datacentre with a multi-gigabit uplink, so the VPN is the only bottleneck. At home, your broadband caps everything. Drag to see.

Your broadband100 Mbps
Surfshark
100 Mbps
NordVPN
100 Mbps

Dashed outline: datacentre ceiling measured in London. Solid: the most your line could deliver through it. Wi-Fi and distance reduce it further. The comparison between providers still holds.

Because we test from a datacentre with a multi-gigabit uplink, our figures show each VPN server's full capability — how fast the tunnel itself can go when nothing else is in the way. They are not a promise of what you'll see at home: your real speed is capped by your own broadband (a 100 Mbps line can never exceed 100 Mbps through any VPN), your Wi-Fi, and your distance to the server.

The value of these numbers is comparative. Both providers are tested identically on the same hardware, so a server that's faster here should also be faster for you, relative to the alternatives.

03 — Test rig

Same box. Same tool. Same rules.

Our speed tests run on a dedicated server with a direct, high-speed internet connection. That keeps the bottleneck in each test on the VPN connection itself, not on our own infrastructure.

Test serverDedicated VPS, multi-gigabit connectivity
Speed testOokla Speedtest CLI (official client)
ProtocolWireGuard (Surfshark configs; NordLynx for NordVPN)
ClientWireGuard in isolated Linux network namespaces
FrequencyContinuous rotation, 24/7. A full round takes several hours.
Coverage142 locations — Surfshark in 142, NordVPN in 127
04 — What we measure

Five numbers per test.

↑ higher is betterDownloadThe rate data can be pulled through the VPN tunnel, in megabits per second. The most important metric for streaming, browsing and downloading files.
↑ higher is betterUploadThe rate data can be pushed through the tunnel. Important for video calls, uploading files and seeding.
↓ lower is betterPingThe round-trip time for a packet to reach the test server and back, in milliseconds. Critical for gaming, video calls and anything real-time.
↓ lower is betterJitterThe variation in ping over time. High jitter means an inconsistent connection, which causes stutter on calls and lag spikes in games.
↑ higher is betterPass rateThe share of test attempts that complete. A test fails if the tunnel doesn't establish, the speed test times out, or the result is invalid.
Reading the pass rate: it reflects automated test conditions, which are stricter than typical use. A server at 70% doesn't fail 30% of the time for regular users — it means 30% of our automated tests, which include rapid connect/disconnect cycles and strict timeouts, didn't complete. A very low rate can also come from a fault in our own test setup, so we say so on the page when most of a provider's tests are failing.
05 — Failures

Failures count against the score.

Not every test succeeds. Failed tests are recorded and count against that server's pass rate — we don't exclude them to make the numbers look better. Speed averages use successful tests only, so zeros don't skew them.

Tunnel didn't establishThe WireGuard tunnel didn't come up within the timeout window. This can happen with server load, network routing issues or temporary outages.
15 s timeout
No connectivityThe tunnel established but couldn't reach the internet because the ping or DNS check failed. This points to a routing issue on the VPN side.
route check
Speed test failedThe tunnel was active, but the Ookla CLI returned an error or timed out.
90 s timeout
Invalid resultThe speed test returned zero or negative bandwidth, which we discard as bogus data.
discarded
06 — Integrity & limits

What the data promises — and what it doesn't.

We promise
No cherry-picking. We publish averages across all successful tests from the last 30 days, not just the best results. Peak speeds are shown separately and clearly labelled. No affiliate influence. Our testing infrastructure runs independently of any VPN provider. We use affiliate links to fund operations, but the test code and data pipeline are fully automated, with no manual intervention. Transparent failures. Provider and country pages show their pass rate. Locations with fewer than 5 successful tests in the last 30 days are left out of rankings and averages, and we say how many. Consistent method. Every server is tested with the same tool, settings and timeouts. No server gets special treatment.
Limitations
One test location. Our tests run from one geographic location. Your speeds will differ based on your distance from the VPN server and your ISP's peering with the provider's network. WireGuard only. We currently test only WireGuard. OpenVPN and IKEv2 speeds may differ, and are typically slower. Two providers, for now. We test Surfshark and NordVPN head-to-head. More providers are planned. Load varies by hour. VPN speeds can change with server load at different times of day. Continuous testing captures this in the averages, but your experience at a specific moment may differ.