The Verification Venue · your own machine is the apparatus

The Disk You Are Somewhere Inside

Press one button. Your browser times its own round trip to the nearest edge of the internet, and that time is a hard physical fact: light in glass could not have carried it further than a certain number of kilometres. You now know something true about where you are. You also know, exactly and permanently, how little that is.

A round trip time is a bound, and it points one way only. It says the far end is no further than X. It cannot say the far end is X, it cannot say it is nearly X, and no amount of cleverness turns it into a place. Everything below is built out of that one asymmetry: first the number, then the shape of what the number cannot do, then a published result reproduced on your line, then the same reduction run over real bursts from a machine whose position nobody here knows.

01 · the instrumentOne button, one hard number

Twenty small requests, sent one at a time to this site's own origin, and the fastest one kept. Not the average: queueing only ever adds, so the mean is the floor plus a tax you did not measure. Singla and colleagues, timing real handshakes between Akamai's servers and end users for a day, found the average round trip sits at 1.9× the minimum in the median case. The minimum is the only statistic here with a physical meaning.

The burst

idle

This browser's clock tick

not read yet

Measured over

Refusal floor (3 ticks)

Probe target : not run yet.

02 · the asymmetryThe arrow only points one way

Take your measurement seriously for a moment and ask the obvious next question: so how far away is it? The honest answer is that your own measurement is equally happy with every answer between zero and the bound. Slide the assumed distance and watch: the round trip never changes, because whatever the glass does not spend, the queues and the switches and the server do.

Assume a distance, and see what is left over

Run the burst above first: this slider divides a number you have not measured yet.

03 · the floorThe part that is just glass being glass

Some of your delay is nobody's fault. Light in a silica fibre core travels at about two thirds of its vacuum speed, because that is what a refractive index is, and the entire internet is made of the stuff. Singla and colleagues put it plainly: a 1.5× inflation over the speed of light would happen even on a perfectly straight cable laid along the shortest path on Earth. Below, drag the core material from solid silica to air and watch which part of your own number moves.

Change the material, not the engineering

Right is standard single-mode fibre, the cable actually in the ground. Left is a hollow core, which guides the light through air instead of glass. Nothing between the two ends is a deployed cable; the slider is continuous because the arithmetic is, not because the world is. This slider reaches nothing else on the page. The measurement above, the grade below and the replayed traces are all pinned to real silica, because a control that quietly re-scored a measurement would be exactly the kind of check that cannot fail.

solid silica core, the fibre in the ground

Signal speed

One-way delay

Cut against silica

20,000 km, there and back

The hollow-core end is not a thought experiment. In 2025 a Southampton and Microsoft group reported a fibre with a , and, of the propagation itself, against standard telecom fibre. The cut this slider shows at that end is computed here from the refractive index of air alone and comes out at . Their figure is a rounded one and this is not a reproduction of it: it is the part of their claim that is pure material physics, arriving in the same place.

04 · the reproductionHand it a distance, and it will grade your connection

The page has one bound and no idea where you are. You have the other half. Type the three-letter code of the airport nearest you and it will do the division: how many times slower than light your own line is, against the median that four researchers read off their Figure 3, whose population is roughly a million connections from 400 or more research hosts. (Their six million is the whole-fetch curve two figures earlier, and it is a different number entirely.) If you type somewhere your measurement forbids, it will tell you so and refuse to print a number.

Name a place. Nothing is sent anywhere.

codes are shipped with this page, from OurAirports. You are telling the page where you are; it never worked that out, and the moment you close the tab it is gone.

Run the burst first: there is nothing to divide yet.

05 · the ledgerWhat this page load cost, counted in round trips

Now that you have measured your own round trip, it becomes a unit. The browser recorded how long each phase of fetching this very page took; divide each by your round trip and you get the only honest currency for a handshake. Where a phase reads zero because it did not happen on this request, the table says so rather than dividing zero and calling your network perfect.

Two things this table is not. The encryption line is wall time around the handshake as the browser reports it, so it also holds the certificate checking this machine did locally, which is processor work and not distance; on a busy laptop that part alone can exceed the whole round trip, and a decomposition that files it under "the internet" is measuring the laptop. And if this page arrived over HTTP/3 there is no separate transport handshake to report, because QUIC folds connection set-up into the encrypted exchange: the connection line and the encryption line under it are then two readings of one event rather than two separable costs. The protocol actually negotiated is printed beside the table so you can tell which case you are in.

This page's own arrival

Run the burst above: without a round trip there is no unit to count in.

06 · the golden tracesWhere the answer is known, and where it still is not

A measurement from a stranger's laptop cannot be checked by anybody. So this page also ships real bursts, captured on one machine to twelve targets from Melbourne to Cape Town, and replays them through the reduction you just ran. The interesting constraint is that nobody here knows where that machine was. Its position was deliberately not recorded. Geometry alone still has plenty to say.

Take the tightest bound as an anchor: the machine is within that distance of the edge that answered. For any other target, the triangle inequality then forces a minimum distance, and the finite size of the Earth forces a maximum. Two constraints, no position, and a real bracket on how many times slower than light each of those paths ran.

Replay

Captured , link condition: . One TCP connect is one round trip: SYN out, SYN-ACK back, which is the same quantity the paper's Figure 3 calls the TCP handshake time.

Anchor

Pairs tested

Impossible pairs

Bounds bigger than the planet

targetfastest
ms
no further
than, km
distance must
be in, km
times slower
than light

Rows shaded warm have a bound larger than half the Earth's circumference, so the bound alone excludes nothing; their brackets come from the planet's size, not from the cable. In rows the low end of the bracket is exactly the refractive index, because the upper end of the distance range is the bound itself. Those low ends are the fibre floor restated, not a measurement, and they are marked grey for that reason. Cape Town is the one that pays for the whole exercise: its bracket is , which starts above the published median of 3.2 times, and nobody involved ever learned where the measuring machine was.

The same burst, fired by Chromium, Firefox and WebKit within minutes of each other on the same machine. Browsers deliberately blunt performance.now() to make timing side channels harder, and they do not agree on how much. That policy, not your connection, sets the resolution of everything above.

engineclock tickfastest probeboundprotocol

Widest minus narrowest: . Against a bare TCP socket on the same machine, the finest-grained engine reads . A one-millisecond clock cannot report a value at all, only the interval below it, so the honest test is whether the fine clock's answer lives inside the coarse one's interval. That test only means anything between engines that crossed the same wire, and they do not always: which protocol each one negotiated is in the table, and it moves between captures.

Five traces built to fool it

If the reduction returns a confident number from noise, it is not an instrument, it is a random number generator with a citation. These are run live, in your browser, every time this page loads.

controlmustdid

And the sixth, which nothing in the reduction can catch on its own: a real burst filed under the wrong city. Only the geometry notices.
Filed correctly →
Filed as Cape Town →

And the seventh, which is the instrument's price list rather than a pass or a fail. Take a real burst and answer some of its probes early, as a proxy or a caching box on your own side of the link would. Below the edge-sharpness rule's rank the instrument declines; at it and above, the rule is blind and the bound it prints is too tight, which is worse than too loose because a too-tight bound is a sentence that is false rather than merely unhelpful. Both halves are run live, on the committed Cape Town burst, right now.


The check, run in your browser, now

running…

Every figure above is recomputed from the same module the offline verifier imports. Rows marked RESTATEMENT only prove this page agrees with itself; rows marked CONTROL and PERTURBATION are the ones that could actually go red.

    The apparatus: what is being run, what is assumed, and what this page does not claim

    What is being run

    One reduction, in one file. lightbound.mjs holds the constants, the refusal rules, the bound, the great-circle distance and the geometry, and it is imported without modification by this page, by the offline mirror (research/how-far-away-the-internet-is/06-verify.mjs) and by the headless page check (verify-how-far-away-the-internet-is.mjs). Nothing reimplements it. probe.mjs holds the part that touches the network, and the committed browser traces were produced by executing that exact file inside each engine.

    The bound is min RTT × c / (2n). Nothing subtler is going on: a round trip covers the path twice, and the signal moves at c/n. Any real delay beyond propagation, and there is always some, only makes the bound looser. That is why it is a bound and not an estimate.

    The rule fixed before measuring

    What this page does not claim

    The one thing on this page that is not ours

    This file requests nothing but its own origin, stores nothing, and sends your timings nowhere. It also cannot promise you a clean network tab, because the site's Cloudflare account has Web Analytics enabled and the edge injects a beacon script into every page here after the file leaves the repository. The check above counts what actually loaded on the copy you are reading, whichever copy that is, and prints it whether it is flattering or not.

    Predictions, and how they did

    An error this page made and kept

    The first version of the bracket printed a lower end for every target and treated it as a result. It is not. Where the bound is smaller than the planet, the largest distance the target can be at is the bound itself, so the low end comes out as exactly the index of refraction, every time, for every connection on Earth. It was the refractive index restated as though it were a measurement. The rows where that is true are still shown, still with their 1.47×, and marked grey and named in the caption, because deleting them would hide how easy that mistake was to make.

    Sources

    read from the typeset PDFpage

    The footnote a text extractor destroys. Footnote 5 on page 3 sets two stacked fractions, and pdftotext renders them as bare digits, which is how a plausible wrong number gets into circulation. Read off a rendering of the page, it says:

    The fibre.

    The hollow core.

    The edge code. Cloudflare's own support documentation:

    Places. OurAirports, released into the public domain; the committed rows are the survivors of a filter to airports typed large or medium that carry a three-letter code. Targets. AWS publishes the city each region is in; the regional service endpoints used are not anycast and resolve into the region they name.

    Reproducing

    node research/how-far-away-the-internet-is/01-airports.mjs
    node research/how-far-away-the-internet-is/02-capture-tcp.mjs idle
    node research/how-far-away-the-internet-is/02-capture-tcp.mjs loaded
    node research/how-far-away-the-internet-is/03-capture-browser.mjs
    node research/how-far-away-the-internet-is/04-negative-controls.mjs
    node research/how-far-away-the-internet-is/05-build-page-data.mjs
    node research/how-far-away-the-internet-is/06-verify.mjs
    node verify-how-far-away-the-internet-is.mjs

    Steps 02 and 03 talk to the network and will produce your traces, not these ones. Steps 04 to 06, and the headless check under them, are offline and reproduce every number on this page from the committed files.