How It Works
This page documents the test in enough detail to check our work: what we send, what we time, how each number is computed, and where a browser-based test falls short.
Run a stability testProtocol, endpoints and sampling
Protocol
HTTPS requests made with the browser's fetch API on warmed keep-alive connections, so TCP/TLS setup is not counted. Timing uses performance.now() from send until response headers arrive.
Primary endpoint
The public DNS server you pick (Quad9 by default), reached with a tiny HTTPS request to its DNS-over-HTTPS address. You can change it while a test runs. If it cannot be reached from your network, the next provider is used and the report says so.
Secondary endpoints
The other DNS providers (Quad9, Cloudflare, Google and AdGuard) are probed one a second, alternating, so we can tell one slow destination from a general problem.
Sampling
One primary probe every 500 ms (about 60 per 30 seconds), each with a 2-second timeout. Continuous mode runs until stopped.
What is latency?
The time for a small request to get a response. We show minimum, median, average, P95, P99 and maximum. The median is the headline number because a few slow samples distort the average. P95 means 95% of samples were this fast or faster.
What is jitter?
Variation in latency. We compute the absolute difference between consecutive successful samples and report the average, P95 and maximum. This is similar in spirit to RFC 3550 interarrival jitter but unsmoothed, so bursts remain visible.
What is packet loss (and what we call it)?
Packet loss is the share of network packets that never arrive. Browsers cannot send raw packets, and TCP retransmits lost packets invisibly. We therefore measure request loss: probes that fail or time out. It is a real signal of interruption, but it is not the same as the packet loss a tool like ping reports, and we do not call it that.
Earlier versions of this site labelled slow samples as "packet loss". That was inaccurate and has been replaced. Measuring true packet loss would need an unreliable WebRTC data channel and a server-side peer.
What is a micro-disconnect?
Two or more consecutive failed probes, or a failed probe that takes 1.5 seconds or more to recover. Each event records its start time, duration, and the latency before and after. A single failed probe is logged as a lost request. A latency spike is a sample above three times your median and at least 100 ms above it. If the tab or device was suspended (gaps over 6 seconds), that gap is excluded rather than counted as an outage.
What is bufferbloat?
Latency that rises when the connection is busy because queues fill. The advanced test measures median latency for 8 seconds idle, 8 seconds while downloading from speed.cloudflare.com over 3 parallel streams, and 8 seconds while uploading, ignoring the first 1.5 seconds of each load phase as it ramps up. The difference from idle is the increase.
How browsers measure network stability — and why it differs from ping
Ping uses ICMP directly between operating systems. A browser can only make web requests, which include server processing time and HTTP overhead, so browser figures usually read a little higher than ping and cannot see individual packets. Server distance matters too: latency includes the physical path to the endpoint, so compare tests with each other rather than with numbers from other tools.
Wi-Fi vs. Ethernet
We cannot see your radio link. The guided comparison runs the same test on both and reports the differences; if only Wi-Fi is unstable the problem appears isolated to Wi-Fi.
How the stability score works
The overall score is IsMyInternetStable's own methodology, not an industry standard. It starts at 100 and subtracts weighted penalties: jitter 35%, request loss 25%, disconnects 20%, latency 10% and DNS estimate 10%. Per-activity scores (gaming, video calls, streaming, work) reweight jitter, spikes, loss, disconnects, latency and latency under load for what each activity is sensitive to, and name the factors that cost the most points.
Thresholds are practical guidance rather than scientific boundaries: real-world tolerance depends on the application, distance, network type and protocol.
Test limitations
Not a diagnosis
The test cannot see your router, radio conditions or your ISP's network. Findings say "suggests" and "may indicate" for that reason.
Background tabs and sleep
Browsers throttle timers in hidden tabs and freeze them when a device sleeps. We detect and exclude suspended time, but cannot measure during it.
DNS is an estimate
Browsers do not expose DNS timing, so the DNS figure is a rough estimate from cold requests and only failures are treated as meaningful.
Loaded test on very fast lines
Three streams may not saturate a gigabit connection, so bufferbloat can be under-reported.
Blockers
Ad-blockers, VPNs, corporate proxies and DNS filters can block or add latency to the test endpoints.