What it measures, and what it refuses to claim.
Helix’s measurement engine is a separate crate with no I/O in it, so the statistical rules live in one place and the interface cannot quietly overstate them. Here is what it collects, what it concludes, and where it stops.
Continuous measurement, by a service — not by the window being open.
A privileged Windows service does all the probing and storage. The desktop app is a viewer that connects to it over a local named pipe and starts nothing. That is why the 2 a.m. outage is in your history: nobody was looking at the screen.
Loss, told as counts and runs
Per window Helix stores the loss count, the longest consecutive loss run, the leading and trailing run lengths and a run-open flag — so a burst spanning two windows stitches back together exactly instead of being smeared across both.
Loss is bursty. Ten singles and one ten-packet gap are the same percentage and completely different experiences; only one of them drops your call.
The 300-probe rule
Claiming loss under 1 % honestly needs roughly 300 clean probes, so the canonical loss window is five minutes at one packet per second. The one-minute window is shown, and labelled coarse — it has a floor of about 1.7 % and cannot resolve below it.
Insufficient data renders as its own state, hatched and named. It is never shown as a quiet pass.
Latency, jitter and percentiles
Min, median, p95, p99, max and mean per window, plus a histogram sketch — because percentiles survive downsampling and cannot be recovered from averages after the fact.
Stability is headlined as the p95 − p50 spread, not a bare standard deviation, and jitter uses the RFC 3550 smoothed estimator that feeds the voice-quality score.
DNS as a first-class signal
Every 60 seconds: a cached popular name to time your resolver, and a random subdomain that forces full recursion. DNS broken while ICMP is clean is a distinctive signature — resolver outage, captive portal or hijack — and it gets diagnosed as such rather than reported as “internet down”.
An outage is a specific thing, not a bad moment.
The definition
Three or more consecutive losses on all internet targets at once — and the targets deliberately span three different operators. It clears after about five consecutive successes, so a single flap does not open and close an incident.
One dirty target while the others are clean is recorded as a target incident. It is not your internet going down and Helix will not tell you it was.
Whose fault, and how sure
Gateway unreachable points at your LAN, Wi-Fi or router. Gateway clean while the internet is dead points at the ISP access network. Both clean with one destination dirty points at the destination.
Gateway latency is treated as a hint only — routers deprioritise pings aimed at themselves when busy. Gateway loss is the stronger evidence, and Wi-Fi signal strength is captured alongside for corroboration.
Twelve stages from your network adapter to the far end.
Run it on demand, and it is offered automatically after an outage clears. Each stage returns pass, warn, fail or skipped-with-a-reason — a stage that cannot run is never silently dropped, because a missing stage that looks like a passing stage is how a report lies.
| Stage | What it checks |
|---|---|
| Adapter & local stack | Link state, speed and duplex, driver age, IP configuration sanity (a 169.254 address means DHCP failed), interface error counters |
| Wi-Fi radio | Signal strength, PHY rate, band and channel, against weak-signal and low-rate thresholds. Skipped on wired connections, and says so |
| Gateway & LAN | ARP resolution, a 15-probe series to your router with loss and latency percentiles, gateway MAC stability |
| Addressing & NAT | Default route, DHCP lease sanity, and carrier-grade NAT detection — which changes what your ISP can even do for you |
| DNS health | Resolver reachability, cached versus full-recursion timing, a known-answer check for hijacking, and a comparison against public resolvers |
| Captive portal | Whether something is intercepting your traffic, and where it redirects to |
| Identity | Public IP, ASN and ISP name, connection re-key context, and VPN detection — with a VPN up, verdicts are scoped accordingly rather than blamed on your ISP |
| Internet reachability | Multi-target ICMP across three operators, cross-checked against TCP on port 443 so an ICMP-filtering path is not read as loss |
| Path analysis | MTR to two targets with the final-hop-only loss rule applied, awareness of load-balanced paths, and every hop annotated with its network and country |
| MTU & fragmentation | A don’t-fragment sweep around the usual sizes to find the path MTU that actually works |
| Throughput & bufferbloat | A speed test that doubles as the bufferbloat test, with the idle-versus-loaded latency delta and a grade. Consent-gated, because it uses real data |
| Historical context | The last 24 hours of windows, loss runs, outages and IP-change events pulled from the local store into the report |
The verdict, and its counter-evidence
A deterministic rule tree walks device → Wi-Fi/LAN → router → ISP access → ISP upstream → destination and returns a fault domain with a confidence. It cites the stages that support the conclusion and the stages that argue against it; the confidence is the balance between them.
“Inconclusive” is a real answer the engine is allowed to give.
The report
Plain-language summary first, technician appendix after, and the version of the rule tree printed on it so a verdict can be re-read against the methodology that produced it.
Save it as HTML, publish it at an unguessable link you can revoke, or attach it to a ticket. Publishing itemises what is in it first, and you can mask your public IP and hide hostnames before anything is uploaded.
The number your ISP sells you is not the number that ruins your call.
Bufferbloat, graded A–F
The speed test keeps probing while it saturates the link, so you get the idle-versus-loaded latency delta — the reason a 500 Mbps connection can make a video call unusable the moment someone starts an upload.
A responsiveness figure is computed from HTTP-layer loaded timings, which capture transport-stack queuing that ICMP walks straight past. The parallel ICMP figure is shown as an approximation and is never labelled as the standard measure, because it is not one.
Scores you can read at a glance
A 0–100 score per connection with sub-scores for responsiveness, reliability, speed and bufferbloat. Stars are a rendering of the same number, never a second opinion.
Activity ratings for gaming, streaming and video calls are the minimum of their component scores, not the average — an average lets one catastrophic metric hide behind four good ones, which is exactly the case you needed to see.
Usage and quotas
Per-connection bandwidth accounting with quota tracking and alerts, in decimal GB with a binary toggle, on your local timezone for the billing period and UTC in storage.
The workbench
Ping, traceroute and MTR in their own tabs, automated and manual, with per-hop timelines and network annotation. Export to JSON, CSV or WinMTR format for anyone who wants the raw thing.
A connection is a chain, and one number hides which link is weak.
A single score is easy to print and useless to act on. These surfaces answer the question underneath it — which part of the chain, and how sure are we.
The Link Matrix
Five levels, ordered by blast radius: how much of your experience each one can ruin if it degrades. Your own network first, then the path out, then the far ends. Each is scored from its own measurements, so a weak level is named rather than averaged away.
A level below its evidence floor is stated as absent, and the overall score reweights around it. One perfectly measured level with three unmeasured reads as a score for what was measured, not that score diluted by invented zeros. Absence is reported in words, on the surface, where a reader can see which levels the verdict actually rests on.
Live Path
The route to a host, hop by hop, updating as it measures, with every individual probe listed beside it as it happens. A lost probe appears as itself — loss is an event with a time, not only a rate at the end of a minute.
It classifies each hop rather than printing raw percentages, which is the difference between a diagnosis and a table a support desk can dismiss. It captures no packets and inspects no traffic: it measures the path, never what you send over it.
Sweeps, by pack
Grouped destinations — video conferencing, gaming, the major CDNs, your DNS resolvers — walked together so a complaint like “Teams is bad but everything else is fine” becomes a comparison instead of an argument. Sweeps run in parallel with the wire rate held constant, because two uncontrolled sweeps measure each other and blame the result on the subscriber’s own ISP.
Two runs never walk the same host at once. Concurrent walks do not produce two readings; they produce two corrupted ones, each measuring the other’s queueing.
Per-application and per-address usage
Which programs used the network, how much, and which addresses they talked to — measured locally, kept locally, and never part of what an ISP can see. It answers the question that ends most disputes before they start: what was actually saturating the line when the call broke up. Kept for a month, so the card answers for the last six hours, a day, a week or a month rather than only for right now.
As many paths and pings as you want, side by side
Every trace and every ping is its own session with its own stop, so you can walk two hosts at once, or the same host at two frame sizes, and compare. Nothing queues behind anything else: a shared pacer spaces the probes leaving the machine, so the wire sees the same rate however many sessions are open. Hop tables fill hop by hop as each probe lands rather than after the round.
Every hop named, and every router that answered
Hops show what they are called, with the address one hover away. Where several routers answer at the same distance — normal on an equal-cost path — all of them are listed rather than the first with a count of the rest. Two addresses at one hop are often different line cards and occasionally different cities, and a reader can only see that if they are shown.
The Web Checker, for hosts that ignore pings
Large services routinely answer no ping at all, which makes a path walk end in silence and says nothing about whether the service is up. Tick the Web Checker on a trace and every round also asks the destination over HTTPS and HTTP, reporting what it answered with its response time, average, best and worst — on a line under the hop table, in the same columns.
It is deliberately not a TCP traceroute. Windows makes per-hop TCP attribution impossible without bundling a driver that may not be redistributed, and a hop column that cannot say which hop stopped a connection would be a number with nothing behind it. This reports the service, and says so.
What is on your network, discovered without scanning it
The devices on your own network, read from your machine’s neighbour table — nothing sweeps a subnet, sends an ARP request or touches a port, because an unrequested scan of somebody’s network is what a security product flags. Addresses, names and hardware identifiers never leave the machine; the manufacturer prefix may, because it names a product rather than a person, and where a model is guessed it is labelled as a guess.
Your line, in context — and kept current without asking you.
How your line compares
Your median latency to common destinations beside the median for your country and for every Helix agent, each figure carrying the number of subscribers behind it. Below a minimum number of distinct contributors a cell is absent rather than shown thin or anonymised — a rating built from two people is not a rating of a network — and withheld cells are counted rather than hidden, so nobody can mistake “no data” for “no problem”.
Quantiles merge from histograms rather than by averaging other quantiles, and where that is impossible the field is named so on the wire. A median of medians is not a median, and calling it one would be a quiet lie in the one place this product cannot afford it.
Signed, silent updates
The service checks for its own updates and applies them, verified against a signature whose private half never touches the server. An attacker holding the entire cloud tier can serve any manifest they like and every agent refuses it.
Silent because the alternative is worse: an app-driven update means a permission prompt per release, and on an unsigned installer that prompt names an unknown publisher — which trains people to click through the one dialog protecting them. The installer’s own signing status is stated plainly on the download page rather than hidden.
Internet Metrics: how far away the internet is
A live board of the services most people actually use — resolvers, search, AI assistants, meetings, social, news, vendors — each with its round trip from your line, as a bar you can compare across the whole board at a glance, lowest first. Hovering one gives the current, average, lowest and highest reading and the number of probes behind them.
Beside each bar sits the same host’s figure from Helix’s own probe boxes, and that is the point of the board: slow in both places means the service is slow; slow only from here means the path is. It is the one figure on the row that is not also a fact about your connection, which is exactly what makes it useful.
Live support sessions
When a provider needs to watch a line while the fault is happening, the agent can grant a temporary observe-only session. Only the agent grants it — the cloud never dials your machine — and the samples live in a capped, expiring buffer rather than a recording. What is kept afterwards is an audit row saying a session happened, to whom and when, and nothing about the person watched.
Published on purpose.
When the FCC ended its consumer broadband measurement partnership in 2023, the neutral reference panel went with it. A measurement product asking to be believed should show its work, so the rules above are documented rather than described, and the ones that constrain what Helix may claim are the ones stated hardest.
Rules that cost us claims
- No loss rate is quoted below 300 probes — it is labelled coarse instead.
- No verdict ships without its contradicting evidence rendered beside it.
- Per-hop loss that does not persist to the final hop is not blamed on that hop.
- A maintenance window only suppresses fault attribution if it was declared at least 15 minutes before the fault — otherwise it would be a retroactive amnesty.
Where it stops today
- Windows 10/11 on x64 only. macOS, Linux and ARM64 are not built yet.
- The v1.13.0 installer is not code-signed.
- Per-application traffic monitoring is not in this release.
- No Wi-Fi roaming telemetry, and no PDF export without a rendering service configured.