This browser's clock tick
not read yet
The Verification Venue · your own machine is the apparatus
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.
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.
Nothing left this page. No timing was stored, sent, or written down anywhere; the arithmetic happened here and vanishes when you close the tab.
This browser's clock tick
not read yet
Measured over
—
Refusal floor (3 ticks)
—
Edge that answered
—
Probe target —: not run yet.
—
Fastest probe
—
No further than
—
Mean of the burst
—
Slowest probe
—
Mean over minimum
—
Usable probes
—
Same time, in vacuum
—
Same time, hollow core
—
Furthest anywhere on Earth
—
Timed with —. Wire protocol: —.
Note what just happened. Your bound is larger than half the circumference of the Earth. It therefore excludes nowhere at all: on this measurement the far end could be anywhere on the planet. That is not a failure of the instrument, it is the size of the gap between the internet and light.
This cannot be measured here, and here is why
.
No distance is printed. A page that always produces a figure is a page that will eventually produce a wrong one.
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.
Run the burst above first: this slider divides a number you have not measured yet.
Every position on this slider fits your measurement exactly. That is the finding, not a limitation of the page.
Assumed distance
—
Time spent in glass
—
Everything else
—
Which is
—
Inflation over light
—
The green circle is the whole set of places your measurement allows. The dashed ring is where the slider currently sits. Every grey dot on it is as consistent with your data as every other. This is the picture that latency geolocation gets to work with, and it is why one measurement never locates anybody.
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.
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
—
Your bound, at this index
—
Which is further by
—
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.
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.
— 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.
Great circle
—
Light would take
—
You took
—
Of which not the glass
—
Published median
—
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.
Run the burst above: without a round trip there is no unit to count in.
One round trip on this line = —. Connection: —. Protocol: —.
| phase | took | round trips | note |
|---|
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.
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
—
—
| target | fastest 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.
| engine | clock tick | fastest probe | bound | protocol |
|---|
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.
—
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.
| control | must | did |
|---|
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.
—
—
—
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.
Something above is red. That means this page is wrong, not the check. The reduction, the shipped traces and the published anchors disagree with each other, and the numbers printed above should not be trusted until it is fixed.
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.
—
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.
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.
| read from the typeset PDF | page |
|---|
—
—
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.
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.