Note: This site is NOT affiliated with SpaceX or Starlink in any way. It is a fan-made project built out of curiosity and love for space.
Enter your city or coordinates to see when Starlink satellite trains are expected to pass over your location. You can also explore all ~6 000 active Starlink satellites in real time on the Live Tracker.
All pass predictions and live positions are computed entirely in your browser - no location data is ever sent to any server.
If you found this useful, please consider buying me a coffee on Ko-fi to help keep the site running and ad-free. Thanks, and enjoy the night sky!
Core Libraries & Frameworks
Node.js + Express - backend API server that authenticates with Space-Track, caches TLE data, and serves the frontend. expressjs.com
satellite.js - SGP4/SDP4 orbital mechanics library used in both browser Web Workers (pass predictions + live positions) and on the server. github.com/shashwatak/satellite-js
Leaflet.js - interactive map rendering for the Passes and Live Tracker views, with a custom WebGL overlay for smooth satellite dot animation. leafletjs.com
Web Workers + WebGL - pass computation and live position propagation run in dedicated browser workers off the main thread; satellite dots are rendered via a custom WebGL shader for performance at ~6 000 simultaneous objects.
Orbitron + Share Tech Mono - typefaces from Google Fonts chosen for their space / HUD aesthetic. fonts.google.com
Data Sources
Space-Track.org - the official source for Two-Line Element (TLE) sets. The server authenticates with a registered account, fetches all active Starlink satellites (up to 25 000 records), caches the result, and refreshes it every 60 minutes. space-track.org
OpenStreetMap / Nominatim - used for forward geocoding (city name to coordinates) and reverse geocoding (coordinates to place name) when you search for a location. nominatim.org
Common Questions
Do I need to convert the times to my timezone?
No. All times are always shown in your local timezone - daylight saving and the 12h / 24h clock format are handled automatically by your browser.
Why are there only satellites from recent launches by default?
Starlink satellites are launched in batches of ~20-60. Right after launch they travel together in a tight "train" chain. This app focuses on recent groups because those are the ones still visible as a train. Older groups have drifted apart into individual orbits. Toggle Show all Starlink satellites in the Passes view to include every satellite.
How can they be visible again less than 2 hours later?
Each satellite completes a full orbit roughly every 90 minutes, so it returns close to the same point in the sky shortly after the first pass - though shifted a little further west each time due to Earth's rotation.
Why was the satellite far from me on the Live Map during a pass?
Starlink satellites travel at ~7.5 km/s - about 450 km every minute. Even a few seconds of timing offset can place them far away on the map. The Passes page is the authoritative source for visibility; the Live Tracker is best for exploring all satellites in real time.
What do the elevation colours mean (green / blue / yellow)?
Green >= 60° - excellent, high in the sky and easy to spot. Blue >= 30° - good visibility. Yellow >= 20° - fair, low on the horizon and may be partially blocked by buildings or trees.
Are predictions 100% accurate?
Predictions are based on TLE data from Space-Track.org (refreshed every hour) and SGP4 orbital propagation. They are generally accurate to within a minute or so, but TLE age, atmospheric drag, and manoeuvres can cause small drifts. Always check shortly before the expected pass time.