Method

How the coverage numbers are made.

The whole method behind every speed, tier and sample count on this site, including the parts that make our own figures look worse.

Every figure we publish comes from real customer sessions on real phones, never from a speed test we ran ourselves. Location is blurred to about 1 km before anything is stored, no figure is published below 25 distinct devices, and every number carries its sample count so you can judge how much to trust it.

Who wrote this

Mara Ellison, Head of Measurement

Built the passive measurement pipeline described on the method page and signs off every coverage row before it publishes.

Responsible for

  • The coverage measurement method
  • Country speed rows and sample counts
  • The public coverage dataset

Reviewed by Jonah Reyes

How we measure

Passive measurement, not a speed test

A synthetic speed test opens a connection, floods it and records the peak. It measures the best a network can do for a few seconds while somebody is watching, and it spends your data to do it. We do not run them.

We record what already happened instead. When your phone loads a map tile, opens a page or carries a call, the operating system already knows how many bytes moved and how long they took. We take that and only that: bytes, duration, the network the phone was attached to, the radio it used, and a coarse location. No packet contents, no addresses, no page names.

The consequence is worth saying plainly. Our numbers come out lower than a speed test would give. A speed test on the same network in the same street prints a bigger figure because it is measuring a different thing. We publish the throughput you actually got while using your phone normally, which is the number that decides whether the video call holds.

Real trafficnever a speed test
Coarse locationabout one kilometre
Aggregatednothing under 25 samples
Publishedwith the sample count
A synthetic speed test would spend your data to tell us something we can measure for free.
From a real session on a real phone to a published row, with the coordinate thrown away at step two.

Location is blurred before it is stored

Session location is rounded to a grid of about 1 km on a side on the phone, before anything is written anywhere. The precise coordinate is discarded on the device and never leaves it, so there is no fine trail to leak, to subpoena or to sell.

That is why we publish a country and a city and never a street. A cell of 1 km in central Tokyo holds tens of thousands of people, which is enough to say something useful about a network and not enough to say anything at all about you.

Aggregation sits on top of that. A row needs 25 distinct devices before it exists at all, so one traveller's week in a small town never becomes a public number about that town.

The rules that throw measurements away

Most of the method is deletion. Four rules decide what survives, and each of them exists because keeping the data made the published number wrong.

Every one of these rules lowers our headline figures. That is the test of whether a filter is honest: a filter that only ever raises your own numbers is not a filter, it is a selection.

  • Sessions that moved less than 2 MB are dropped. A transfer that small finishes before the radio has ramped up, so it measures the ramp rather than the network.
  • The first 60 seconds after the phone attaches to a network are dropped. Attach, authentication and the first bearer setup are slow by design and they are not what your afternoon looks like.
  • A row built from fewer than 25 distinct devices is never published. Devices, not sessions, so one heavy user cannot turn into a country.
  • Sessions where the phone is tethering a laptop are kept, because travellers really do that, and tagged, so we can check whether they are pulling a market up or down.

The filters, and the threshold each one uses

RuleThresholdWhy it exists
Minimum session size2 MBSmaller transfers finish before the radio has ramped up
Warm up window60 seconds after attachAttach and authentication are slow by design
Minimum distinct devices25One heavy traveller must never become a country
Location precisionAbout 1 kmCoarse enough to describe a network, not a person
Publication window90 daysLong enough to be stable, short enough to still be true

Recomputed monthly. A row that stops meeting a threshold is withdrawn rather than frozen.

Why the tenth percentile matters more than the median

The median is the middle of your day. Half your sessions were faster and half were slower. It is a fair summary and it is not the number you feel.

What you feel is the bad ten minutes. The call that broke up in the taxi, the boarding pass that would not load at the gate, the map that stalled at the junction. Those live in the bottom tenth of the distribution and a median hides them completely. Two countries can post the same median and feel nothing like each other, because one of them has a long slow tail and the other does not.

So every row publishes both. The tenth percentile is the figure to read when you need the connection to work rather than to be fast: one session in ten was slower than that. When the two numbers sit far apart, the network is unreliable rather than slow, which is a different problem and usually the worse one.

It is also the number that flatters us least, which is the reason to believe we publish it.

75,333

Sessions behind the published rows

145

Destinations with measurements

25

Distinct devices before we publish a row

1 km

Location grid before anything is stored

What a published row contains

A row is a country and a carrier over a window of 90 days. It carries both figures, both counts and the radio mix, because a figure without its sample size is an opinion.

What every published row carries

FieldWhat it means
Median MbpsHalf of the measured sessions were faster than this
Tenth percentile MbpsOne session in ten was slower than this
Distinct devicesHow many separate phones the row is built from
SessionsHow many measured transfers survived the filters
CarriersThe upstream networks we attach to in that country
WindowThe period the row covers, currently 90 days

What this method cannot see

Passive measurement inherits the shape of our customers. It sees where they went, when they went and what they did there, and it is blind to everywhere else. The blind spots below are structural, so no amount of extra traffic removes them.

  • Places our customers do not go. Heavy coverage of two cities tells you nothing about the third.
  • Networks we have no agreement with. We only measure the carriers we attach to, so a rival network in the same country may well be better and we would not know.
  • The ceiling of a network. Nobody was downloading hard enough to find it, so our figure is a floor on what the network can do rather than a limit.
  • Indoors against outdoors. We do not know whether you were in a basement, and a basement is most of the reason a number comes out low.
  • Anything before we had customers in a market. A destination that went live last month has a short window and a thin sample, and both are printed on the page.
  • Congestion nobody of ours sat in. If none of our travellers were in the stadium at kick off, the stadium is not in the data.

Where the method is weakest

Three weaknesses change how you should read a row, so they belong here rather than in a footnote.

The first is thin markets. 5 of our 145 destinations run on a single upstream network, and there the number describes one carrier rather than a country. The second is device mix. iOS and Android report timing slightly differently, and our correction for that gap is an estimate rather than a measurement, so a market that leans hard to one platform carries more error than its sample count suggests. The third is time of day. We publish a 90 day window with no adjustment for the hour, so a country whose travellers mostly arrive on weekend evenings looks slower than one whose travellers arrive on Tuesday mornings.

None of these get fixed by a bigger sample. They are limits of the design, and a number that arrives with its limits attached is worth more than one that does not.

The honest limit of all of this. We can tell you what 75,333 measured sessions did across 145 destinations. We cannot tell you what your phone will do in your street on Thursday afternoon. Anybody who says they can is selling you a speed test.

Consent, and how to leave

Measurement is on by default and off in one tap in the app, under privacy. Turning it off changes nothing about your service, your price or your support queue.

A device that has opted out sends nothing, including the coarse location, and we delete what it sent before. We do not sell any of this. The aggregate is free for anybody to use, which is the opposite of a data business and is deliberate: the dataset is worth more to us as a public argument than as a private asset.

How to cite these numbers, and how to challenge them

This page is the citation target. If you are quoting a figure from a coverage page, cite that page and the date you read it, because rows are recomputed monthly and the number will move.

The full dataset is JSON at /api/coverage with no key and no rate limit, and the machine readable summary is at /llms.txt. The attribution we ask for is a link to the page the number came from. That is the whole licence.

If you can show that a figure is wrong, tell us. Corrections go on the truth report with the date and what changed, whether or not the correction makes us look good. That is the only way a published number means anything.

Questions people ask about the method

Do you run speed tests on my phone?
No. We generate no traffic at all. We record the size and duration of the transfers your phone was already making, so measurement costs you nothing and uses none of your data.
Can you see which sites I visited?
No. We record bytes, duration, carrier, radio type and a location rounded to about 1 km. Addresses, packet contents and page names are never collected, so there is nothing of that kind to hand over or lose.
Why is your figure lower than the speed test I just ran?
Because a speed test measures the peak of an idle network for a few seconds. We measure what real sessions actually achieved. Both are true. Ours is the one that predicts whether your call holds.
What does the tenth percentile actually mean?
One session in ten was slower than that figure. It describes the bad ten minutes of your day rather than the middle of it, which is why we print it beside the median rather than instead of it.
Why is a country missing from the coverage pages?
Either we have no customers there yet, or fewer than 25 distinct devices have used it. In both cases we hold the row back rather than publish a number built from one traveller.
Can I turn measurement off?
Yes, in one tap in the app under privacy. Your plan, your price and your support are unchanged, and the device stops sending anything at all.
Can I reuse your data?
Yes. The dataset is public at /api/coverage, free, with no key and no rate limit. We ask for a link back to the page the figure came from and nothing else.

Check a country before you buy it.

Every destination page prints the carriers we use, the median, the tenth percentile and the sample count, including the markets where we come out badly.