How the Internet Speed Test Measures Latency, Jitter and Download
AnyTool Internet Speed Test runs entirely in the browser and talks to no third-party server. To measure latency it times a series of small same-origin requests — fetching this site’s own favicon, cache-busted with a query string and cache: ’no-store’ — with performance.now(), discarding a warm-up request and reporting the median round-trip (ping) and the standard deviation across samples (jitter). To estimate download throughput it fetches a few of this site’s own static image assets (also same-origin, cache-busted, no-store), reads the response body as a stream and sums the bytes as chunks arrive, dividing bits by seconds to compute Mbps; the gauge updates live as bytes stream in and the test runs for at least a short minimum window so the figure stabilises. It also reads the browser’s own connection estimate from the Network Information API (navigator.connection) with zero network requests. Upload speed is intentionally omitted because timing an upload requires a server endpoint to receive and time the bytes, which a privacy-first tool deliberately does not provide.
- Latency = median of timed same-origin favicon fetches (cache-busted, no-store)
- Jitter = standard deviation of those latency samples
- Download = streamed bytes of this site’s own assets ÷ seconds → Mbps, live gauge
- Browser estimate read from navigator.connection with no network request
- Upload omitted by design — it would need a server to receive your data
