← All projects

Worldview

Data Viz · 3D Globe

Started with a simple question: where is every tracked satellite right now?

CelesTrak publishes TLE data — Two-Line Element sets — for every tracked object in orbit. GPS satellites, the ISS, weather birds, Starlink, debris, all of it. The data is public. The math to turn those two lines into a real-world position exists. I wanted to see all of it on a globe at once.

I assumed someone had already built this well. I was wrong. There are some academic tools, some outdated Java applets, nothing that felt like it took the visualisation seriously. So I built it.

satellite.js handles the orbital mechanics — it implements SGP4, the same propagation algorithm used by the US Space Surveillance Network. You give it a TLE and a timestamp and it tells you exactly where that object is. Mapbox GL v3 renders the 3D globe.

The moment that made it worth it: the first time I loaded the MEO belt — GPS and navigation satellites sitting at around 20,000 kilometres — and watched them populate into their slots around the globe. They're spread almost perfectly evenly. You can see why the GPS constellation is shaped the way it is. It stops being abstract.

The time scrubber is what I'm most happy with. You can pick any time — past or future — and watch the orbits run.

The wall I keep hitting is performance. Five thousand satellites with trail calculations at 60fps is a lot. That's probably the next version.

Stack

Mapbox GL v3satellite.jsThree.jsCelesTrakViteJavaScript