How does Virgin Media Speed Test measure internet speed?
Virgin Media Speed Test streams a 25 MB file from Cloudflare Anycast infrastructure
via TCP in a dedicated Web Worker thread, calculating throughput every 200ms as
bytes_received × 8 ÷ elapsed_seconds ÷ 1,000,000. Upload is measured identically
using a 10 MB uncompressible random byte payload.
How Virgin Media Speed Test Measures Your Broadband Connection
Our 5-Step Broadband Measurement Protocol
Baseline Idle Latency (Ping & Jitter)
Before any throughput test begins, pingWorker.js sends 15 consecutive
HEAD requests to speed.cloudflare.com/__ping at 100ms intervals.
The median round-trip time is recorded as your idle ping (P₀).
Jitter is calculated as the mean absolute difference between consecutive samples:
J = (1/N) × Σ|Δtᵢ − Δtᵢ₋₁|. This baseline is critical for computing
your Bufferbloat Grade in Step 4.
Download Throughput Measurement
speedWorker.js opens a streaming GET request to
speed.cloudflare.com/__down?bytes=25000000 (25 MB).
The ReadableStream API reads chunks continuously. Every 200ms,
live speed is calculated and emitted to the main thread:
Speed (Mbps) = (bytes_received × 8) ÷ (elapsed_ms ÷ 1000) ÷ 1,000,000.
The final result uses the plateau transfer duration for maximum accuracy.
Upload Throughput Measurement
A 10 MB payload is constructed using crypto.getRandomValues()
on the first 65,536 bytes, then filled with a modulo-251 repeating pattern
to prevent GZIP compression from artificially inflating upload speeds.
The payload is POSTed to speed.cloudflare.com/__up and throughput
is calculated identically to the download formula.
Loaded Latency & Bufferbloat Grade
Simultaneously with the upload test, pingWorker.js measures
loaded ping (P_up) every 100ms. Bufferbloat delta is computed as:
ΔP = max(P_down − P₀, 0) + max(P_up − P₀, 0). This delta
determines your network's Bufferbloat Grade:
A+ < 5ms · A < 15ms · B < 30ms · C < 60ms · D < 100ms · F ≥ 100ms.
Client IP, Geography & ISP Auto-Detection
A single client-side fetch to speed.cloudflare.com/meta returns
the client's public IP address, city, region, country code, and Autonomous
System Number (ASN). This data is displayed as a location badge and used to
contextualize results against regional performance benchmarks. No data is
stored on any server — all results remain client-side only.
Known Limitations & Margin of Error
- Wi-Fi Overhead: Results over Wi-Fi may be 15–40% lower than your modem's actual provisioned speed due to 802.11 protocol overhead and local interference. For the most accurate reading, test via Ethernet cable.
- TCP Window Size: On very high-speed connections (>1 Gbps), TCP receiver window limits may cause the 25MB file to complete too quickly for accurate throughput calculation. Use our fiber test mode for Gigabit connections.
- Single-Server Architecture: Unlike Ookla's multi-server protocol, we test against a single Cloudflare PoP for reproducibility. Local routing conditions between your ISP and Cloudflare's nearest point of presence may affect results by ±5–10%.
Independence & Data Policy
Virgin Media Speed Test is operated independently and has no commercial
relationship with Virgin Media or Liberty Global / Virgin Media O2. All measurements are
conducted programmatically against neutral third-party infrastructure.
No personally identifiable information is collected or transmitted.
Test results are stored locally in your browser's localStorage only.