Satvis: 3D satellite tracker and pass predictor
Satvis is a free, open-source satellite tracker that runs in the browser. It draws more than 12,000 satellites on a 3D globe in real time, across fourteen catalog groups: Starlink, GPS and the other GNSS constellations, weather and Earth-observation craft, the ISS and other crewed stations. Tell it where you are and it works out when each one passes overhead. The sky view then trades the globe for a ground-level camera aimed by your phone's compass and gyroscope. You look for the satellite in the sky rather than on a map of it.
What it does
- Visualize more than 12,000 satellites on a 3D globe in real time, propagated in the browser with SGP4 from CelesTrak GP element sets (OMM/TLE)
- Draw points, labels, orbits, orbit tracks, ground tracks, sensor cones and 3D models per satellite, coloured by orbit class (LEO, MEO, GEO, HEO)
- Switch any of the 14 catalog groups on and off (Starlink, GNSS, weather, Earth observation, crewed stations), or search out a single satellite
- Set ground stations from geolocation or a point you pick on the map, then list their upcoming passes and get a local browser notification before one starts
- Show the globe in 3D, flattened to 2D or in Columbus view, over a base map, star field and terrain you choose
- Find a satellite in the sky overhead rather than on a map, in a ground-level sky view aimed by your phone's compass and gyroscope and walked with the movement keys
- Add OpenStreetMap buildings to the globe, or Google's photorealistic tiles under the sky view
- Share the exact view you are looking at as a link: the url carries the satellites, the components, the ground station and the map layers
- Install it as a Progressive Web App and keep using it offline, from a cached element-set snapshot and base map
- Deploy it serverless: static files on a CDN, with an optional Cloudflare Worker serving fresh satellite data
Where the data comes from
Element sets come from CelesTrak as OMM JSON, the format replacing TLE for new objects, and a Cloudflare Worker refreshes them every six hours. Positions are propagated from them in the browser with SGP4, through satellite.js. A snapshot of the same element sets ships inside the app, so everything still works offline.
Built with
CesiumJS draws the globe, Vue and Nuxt UI the interface, and Workbox the service worker. Everything but the data API is static files on a CDN, so there is no server to run. Created by Florian Mauracher and maintained on github.com/Flowm/satvis under the MIT licence. An iOS app wraps the same site and schedules pass notifications with UserNotifications.