Satellites on Google Earth
Live satellite tracking for Google Earth, revived in 2026. Track the ISS, Hubble, Starlink and thousands more objects in orbit — updated every 30 seconds.

This project is live again. After being offline since 2015, the satellite tracker has been rebuilt and is now running at satellites.orbitingfrog.com. Open any of the KML links below in Google Earth and satellite positions will update automatically every 30 seconds.
Download KML Files
- Space Stations — ISS, Tiangong and others
- 100 Brightest Objects — the classic set
- ISS only — International Space Station
- Science Satellites — Hubble, JWST and more
- Starlink — the SpaceX constellation
- GPS — GPS navigation satellites
- Galileo — European navigation constellation
- Cosmos 2251 Debris — debris from the 2009 collision
- Iridium 33 Debris — debris from the 2009 collision
You can also track any satellite by its NORAD catalog ID. For example, /kml?id=20580 tracks the Hubble Space Telescope. The path parameter controls how many hours of orbit path to display (default 2, max 24). Full API documentation is on the satellites homepage.
The Original Project (2008–2015)
Between 2008 and 2015, I created Perl scripts running on a shared web server that generated KML files for Google Earth. They showed real-time positions of satellites ranging from the ISS and Hubble to the Iridium fleet and the debris from the 2009 Iridium/Cosmos collision. The tools were popular with satellite enthusiasts but eventually went offline when the server they ran on was decommissioned.
The original Advanced Satellite Tracker let users input their own TLE data, satellite ID, and parameters like how many hours of flight path to show and whether to display the tether connecting the object to the ground. It was limited to 100 objects to prevent server abuse.
The 2026 Revival
In February 2026, I rebuilt the entire project from scratch in a single session using Claude (Anthropic’s AI assistant) and Cloudflare Workers. The new version is fundamentally different from the original:
- The original was a Perl CGI script running on a shared Linux server, fetching TLEs and propagating orbits using custom code
- The new version is a TypeScript Cloudflare Worker using the satellite.js library for SGP4/SDP4 propagation, running on Cloudflare’s edge network across 300+ cities worldwide
The architecture is simple: on each request, the worker fetches TLE data from Celestrak (cached for 6 hours), propagates the orbits to the current time using the SGP4/SDP4 models, and generates KML with the satellite positions, orbit tracks, and tether lines. Google Earth’s NetworkLink mechanism handles the 30-second auto-refresh.
Claude wrote the entire worker — the TLE parsing, orbit propagation integration, KML generation with antimeridian-crossing handling, the Hono route handlers, the landing page, and the wrangler deployment configuration — in one conversation. The whole thing compiles to about 33KB gzipped and runs in under 50ms per request.
How It Works
All objects in orbit obey the laws of gravity, so their positions can be predicted over time. For every trackable object, there is a set of parameters called a two-line element (TLE) set, publicly available from Celestrak. The SGP4 and SDP4 mathematical models use these TLEs to predict satellite positions, typically accurate to within a few hundred metres. These are the same models used by space agencies and satellite operators worldwide.
The new tracker supports any Celestrak data group — far more satellites than the original ever could. Where the original was limited to 100 objects per request, the new version can handle entire constellations like Starlink (thousands of satellites) in a single KML file.