Located by Light
Located by Light
Your browser estimates where you are from nothing but how long light takes to reach cloud servers and come back.
Nothing is sent to this site. Your browser times tiny requests to Amazon and Google cloud regions, which see your IP address the way any website does. The answer is a region, not an address.
- AWS
- light in glass
- light in vacuum
- estimate and likely region
- simulated
Nothing runs until you press the button. A run takes about 20 seconds and about 0.7 MB.
Result
Result
Measurements
The fastest of five round trips to each region, its jitter (median minus fastest), how far light in vacuum could have gone at most, how far light in glass goes once the fitted shared delay b is taken off ("under b" when the round trip was no longer than b alone; b = 0 until the fit), and how well the fitted model explains it. Click a column heading to sort. This table holds everything the map shows.
The math
Light sets a hard limit. Light in vacuum travels at c = 299,792.458 km/s. A reply that took rtt milliseconds went out and came back, so the server can be at most
di ≤ c × rtti / 2
away. A candidate point that breaks any one of these bounds is impossible. They are the faint dashed circles on the map.
Glass is slower. In optical fibre, light is slowed by the glass's refractive index of 1.468 to vf = c / 1.468, about 204,218 km/s, roughly two thirds of c. If the first hop of your own connection (router, cable, radio, VPN tunnel) and the servers' own time to answer cost b milliseconds each way, light in glass can have covered at most
di ≤ vf × (rtti / 2 − b)
These are the solid circles. While the run is going they are drawn with b = 0, a true limit for light in glass. After the fit they are drawn with the fitted b, and then they are estimates, not limits: the page cannot measure b, it fits it (below), and the fitted b also absorbs how much more the short routes near you zigzag. It can even come out longer than half of your fastest round trip; a region that close gets no solid circle, and the table says "under b". Only the dashed circles are hard limits.
The model. Real routes are longer than great circles, so the page fits a route factor k between 1.0 and 2.5 and one shared delay b ≥ 0 (your first hop, plus the servers' own time to answer):
rtti = 2 × k × gi(x) / vf + 2 × b + noise
where gi(x) is the great-circle distance from a candidate point x to region i (the haversine formula on a sphere of radius 6,371.0088 km). At every candidate point on Earth we ask: what route factor and what first-hop delay would make these timings fit? The place that needs the least excuse wins.
The solver. A 1 degree grid covers the globe: 64,800 candidate points. At each one the model is a straight line in k and b, so a weighted least-squares fit finds both at once; if k falls outside 1.0 to 2.5 or b below 0, that one is clipped and the other is solved again. Only the 16 fastest regions enter this fit, because one route factor only holds over a limited range: short routes near you zigzag much more than the long undersea cables, and when every region is fitted at once the far ones drag the answer away. Every region that answered still rules out the places its hard bound forbids. The misfit is
cost(x) = Σ wi (rtti − modeli)2 / Σ wi (ms2)
with weights wi = provider × 1 / (1 + jitteri / 5) × (20 / max(rtti, 20))2: Amazon counts 1.0 and Google 0.7 (Google's front ends add backbone time), steady regions count more than jittery ones, and near regions count much more than far ones, because they carry the most information and because the error in a route grows with its length. The 20 best points are then searched again on a 0.1 degree grid.
The region. Every point whose cost is at most twice the best (and at least 1 ms2 above it), cost ≤ costmin + max(1, costmin), counts as likely; that is the shaded area. It keeps only land: light alone cannot tell a coast from the open sea, and people rarely browse from a boat, so the best point is the best one on land too (if no land fits at all, the sea is shaded). The radius quoted is the distance from the best point that covers 90 percent of the shaded area. It is never quoted below 50 km, because each cloud region is placed at its city, not its building.
Your connection
After a run, this section reads the shared delay b and the jitter for signs of a cellular link, a satellite or a VPN. Every path adds jitter of its own, but your first hop adds the same jitter to all of them, so the rules use the jitter of the quietest quarter of the regions (the lower quartile). The rules: wired or Wi-Fi when b is under 15 ms and the jitter under 4 ms; cellular when b is between 15 and 90 ms, or the jitter is 8 ms or more with b at least 10 ms; a low-orbit satellite when b is between 20 and 70 ms with jitter between 5 and 25 ms and no round trip under 25 ms; a geostationary satellite when no round trip is under 450 ms; a VPN or relay when your device's clock is more than 3 hours from the time the estimate's longitude implies, or when b is above 25 ms with a jitter under 3 ms (a tunnel adds a steady delay, a radio a jittery one).
What if
Each button below takes the samples you just measured, changes them the way a VPN, a cellular link or a satellite would, and runs the same fit again. The map draws the simulated answer in a second colour over your real one. Every number here is modelled, not measured.
Run the measurement first; the simulations reuse its samples.
Check the answer
Your browser can also tell this page where your device thinks it is, from GPS or nearby Wi-Fi, if you allow it. The position stays in your browser: this page sends it nowhere. (Your browser may ask its own location service to work it out, as it does for any map.)
Notes and limits
- How good is it? Tried on real round trips measured between 33 Amazon regions, each region in turn playing the visitor with its own server left out, the best point landed a median of about 260 km from the truth, and the shaded region held the true place in 27 of the 33 cases. The settings were tuned on these same cases, and links between data centres are cleaner than home ones, so expect it to do somewhat worse for you. Where no cloud region is within a few thousand km, as in South America or southern Africa with only Amazon's regions, it can miss by thousands.
- The answer is a region. Fibre routes zigzag, Safari rounds timers to a millisecond, and cloud regions are metros, not buildings. A millisecond of round trip is about 100 km of fibre each way, so in Safari each light-in-vacuum bound is widened by 1 ms of round trip, about 150 km, to stay a true limit. Each region sits at the city that names or hosts it.
- A VPN relocates the answer to its exit; a cellular or satellite link widens it; a geostationary satellite defeats it.
- The cloud regions pinged see your IP address, as every website does. This site receives nothing: no cookies, no storage, nothing in the address bar, no events beyond the site's ordinary page view.
- Endpoints come and go; an unanswered region is left out, and with fewer than 8 answers the page says so.
- A run sends about six small requests to each of the 76 regions, under 500 requests in all. Setting up each encrypted connection costs about 5 KB, so a run moves about 0.7 MB.
Credits
Map: Natural Earth land polygons (public domain). Endpoints: the public health URLs of Amazon DynamoDB (dynamodb.<region>.amazonaws.com/ping) and the Google Cloud Run ping services listed by gcping.com. The fibre index of 1.468 is the effective group index Corning publishes for its SMF-28 Ultra single-mode fibre (1.4676 at 1310 nm, 1.4682 at 1550 nm). The idea of turning delays into distance constraints comes from Gueye, Ziviani, Crovella and Fdida, "Constraint-Based Geolocation of Internet Hosts", IEEE/ACM Transactions on Networking, 2006; the shared first-hop fit is the same trick GPS uses for a receiver's clock error. The accuracy figures in the notes use the public matrix of round trips between AWS regions published by cloudping.co.