Project notes
Internet Tester
Internet Tester is a browser-based, multi-round test that goes beyond a single peak-speed figure. It reports on latency, jitter, failed probes, download consistency, responsiveness under load, resolver timing, and overall stability, giving a more complete picture of connection quality than a simple speed number can provide.
What It Measures
- Idle latency. The median round-trip time for small, uncached HTTPS requests sent to the nearest Cloudflare edge location.
- Jitter. The median absolute change between consecutive successful idle-latency probes.
- Loss approximation. The proportion of HTTPS probes that fail or exceed the timeout. This is an approximation only; it does not measure literal IP packet loss.
- Download and consistency. Aggregate throughput measured across concurrent byte streams, alongside the tenth-percentile sample divided by the median throughput as a consistency indicator.
- Responsiveness under load. Latency probes continue to run while downloads are in progress. The load penalty is calculated as loaded median latency minus idle median latency.
- Resolver timing. The Cloudflare Worker times an uncached lookup for a randomly generated invalid hostname. This reflects the performance of the edge resolver rather than the device's local DNS stack.
Methodology
- The test discards an initial warm-up request, which is used only to establish the route before measured rounds begin.
- It runs multiple rounds depending on the selected test depth: Light runs 2 latency and 1 load round; Standard runs 3 latency and 2 load rounds; Thorough runs 5 latency and 3 load rounds.
- Final metrics are calculated as medians across these rounds, so a single unusually fast or slow round has less influence on the result.
- Observed spread is reported as the largest deviation of any individual round from the median; this describes the actual run and is not a laboratory-grade confidence interval.
- During the load phase, multiple simultaneous downloads run while latency probes continue, exposing queueing delay that a single throughput figure would otherwise hide.
- The first 512 KiB of each download stream is excluded from throughput timing, so connection ramp-up and request startup do not unfairly penalise fast connections.
- Before the test starts, the page estimates the maximum amount of data the run will use, and testing never begins automatically.
- A Stop control cancels active fetches. Background-tab use is noted in the results, and stalled downloads are cancelled after two minutes.
- Each result includes a measurement confidence grade and the actual amount of data transferred during the completed run.
Browser And Network Limits
- Browser estimate only. Results may be less precise than those from native applications or dedicated speed-test protocols.
- No ICMP access. Browsers cannot send traditional ping packets, so every latency sample includes HTTPS and browser overhead.
- Cloudflare-edge scope. The test measures the connection to a nearby Cloudflare location only. Other routes may behave differently.
- Server-side DNS. Browser privacy protections, caching, and connection reuse make an isolated local DNS measurement impossible.
- Approximate results. Wi-Fi interference, VPNs, browser scheduling, power-saving modes, other devices, concurrent downloads, and background tabs can affect a run.
- No single score. Real-time responsiveness and bulk throughput are reported separately because a connection can perform well on one and poorly on the other.
Free-Plan Safeguards
- The Worker accepts only small probes, resolver checks, and downloads capped at 32 MiB per request.
- Cloudflare-native edge counters limit each client to 300 total test requests and 18 bandwidth-heavy downloads per minute. These counters run server-side and cannot be bypassed by modifying the public page code.
- Responses disable browser and CDN caching, use identity encoding, and are permitted only from this site's own origin.
- The tester sets no cookies and stores no results in local storage. Cloudflare receives standard connection metadata as part of normal request handling, and the client IP is used only for the short-lived edge rate limit.
- The Worker performs minimal work within the free plan's fixed 10 ms CPU budget; statistical calculations are done in the browser.
- If the endpoint or daily allowance is unavailable, the page stops and shows a clear service message rather than fabricating a result.
Files
internet-quality.htmlInterface, controls, results, and browser-limit warnings.
internet-quality.jsMeasurement lifecycle, statistics, and stability labels.
cloudflare-worker.jsUncached edge probes, capped byte streams, and resolver timing.
wrangler.jsoncCloudflare routes for the existing GitHub-hosted domain.
internet-quality-test.jsRegression checks for calculations, endpoint safeguards, and site integration.