cfspeed on Cloudflare's edge
Starting
latency
Download
Upload
Idle latency
Loaded latency
Jitter
Bufferbloat

Report

Throughput over time

Latency during the test

Distribution

Connection

What this connection handles

In real terms

History · this device only

How this test works & why it's accurate

Parallel connections, for real

Bulk transfers fan out across up to 8 shard hostnames (s1–s8.speed…), each served by a dedicated TLS certificate. Because the certificates don't overlap, your browser cannot coalesce them into one HTTP/2/3 connection — so the test genuinely opens many parallel connections, each with its own congestion window. That's how a modern line gets saturated; single-connection tests routinely under-report fast links.

Warm-up is off the record

TLS/QUIC handshakes, CORS preflights and the first second of ramp-up are excluded. Measurement starts at the first payload byte, and the reported number is the median of the best sustained stable window (≥3 s with rate variation < 12%) — what your line holds when it holds, with the peak and consistency figures showing the spread — falling back to a trimmed mean on volatile links.

Latency under load

While the pipes are saturated we keep pinging on a separate connection. The difference between idle and loaded latency is bufferbloat — the thing that makes calls stutter while someone's uploading. Graded A+ (<5 ms added) to F (>400 ms).

Edge-generated payloads + R2

Download payloads are generated at the Cloudflare data center nearest you, so you measure your access link — not a distant origin. A separate single-stream pull of a real file from R2 object storage (pre-warmed into the edge cache server-side, costing you no bandwidth) cross-checks the synthetic numbers against a real CDN download.

Isolated measurement thread

All byte-counting runs in a dedicated Web Worker so UI animation can never skew timing. Timings use high-resolution PerformanceResourceTiming (enabled cross-origin via Timing-Allow-Origin), and server processing time is subtracted using Server-Timing headers.

Privacy

Nothing about your test is stored server-side. Uploads are counted and discarded. History lives only in your browser's local storage.