Speed Test · continuous monitor — latency, jitter, request loss, throughput, drop detection
Live — last 65s (ping ms bars + stream Mbps line)
downupping
show probe log
copy probe log
Download
— Mbps
Peak sustained download throughput, measured by continuously streaming binary data from the ws-speedtest Worker over WebSocket for each streaming episode.
Upload
— Mbps
Peak sustained upload throughput, measured by continuously streaming binary data to the ws-speedtest Worker over WebSocket for each streaming episode.
Latency
— ms
Median round-trip time of the periodic HTTP probes sent to Cloudflare's trace endpoint, in milliseconds.
Jitter
— ms
Standard deviation of all probe round-trip times this session — how much latency varies probe to probe, not the latency itself.
Request Loss
— %
Share of probes that never got a reply within the timeout, out of all probes sent this session.
Connection
—
Network type reported by the browser's Network Information API (e.g. 4g, wifi) — unsupported in some browsers, shown as "unknown" there.
Stability Score—
Not a standard metric — a transparent composite of uptime, jitter, and loss (weights: 50/30/20). Shown with its inputs so you can judge it yourself, not as an authoritative score.
Connection Drop Events
none detected yet
Download — per-check result (Mbps)
Throughput of each continuous streaming download episode, over the ws-speedtest WebSocket.
Upload — per-check result (Mbps)
Throughput of each continuous streaming upload episode, over the same WebSocket connection.
Request Loss (%)
Share of ping probes that failed since the previous bar — a per-interval rate, not the session-wide average shown on the card above.
Size Sweep · download — green=passed, red=failed
Each column is one sweep, each row a chunk size (small to large, top to bottom). A steady cutoff at one size across many columns points to size-based dropping, not general link badness.
Size Sweep · upload — green=passed, red=failed
Same test, upload direction, over the WebSocket connection.
Session Historyclear historyexport
no completed sessions yet
Advanced settings
A request that doesn't complete within its timeout counts as failed (AbortError) — that's not proof the connection died, just that it didn't finish in time. Raise these on a slow or high-latency link to stop it misreading "slow" as "lost". The Download/Upload cards and Live chart stream continuously, back-to-back rounds, the whole time monitoring runs (not one fixed-size request) — the round stall timeout is a safety net per round, not for a whole phase. Changes apply to the next probe/check and are saved for next time.
Runs between continuous-stream episodes: each size is requested this many times, sequentially, in both directions — small sizes get more trials since they're cheap and noisy, large sizes fewer since they're slow. A size that consistently fails while smaller ones pass is evidence of a size-based cutoff, not just general link badness. Sizes accept K/M suffixes (e.g. "32K x3", "10M x1"), 1KB–20MB, 1–10 trials each. Uncheck above to skip this test.