Ground segment
Ground Track & Pass Predictor
Paste a Two-Line Element set (TLE), drop in your ground station, and get every pass window — when the satellite rises, how high it gets, where to point — with the ground track drawn on a world grid.
// SGP4 propagation (satellite.js) from a NORAD TLE; topocentric look angles against an elevation mask give AOS/LOS/TCA per pass. All in-browser, all times UTC. Accuracy is bounded by TLE freshness — paste a recent element set.
This satellite pass predictor propagates a NORAD TLE with Simplified General Perturbations 4 (SGP4) via satellite.js — a faithful port of the reference implementation from "Revisiting Spacetrack Report #3" (Vallado et al. 2006) — and computes every ground station pass in your window: acquisition and loss of signal (AOS/LOS), time of closest approach, maximum elevation, and the rise/set azimuths to point an antenna, plus the ground track drawn on a world grid. Everything runs in your browser; nothing phones out. Accuracy is bounded by TLE freshness above all — for real scheduling, paste a current element set from CelesTrak or Space-Track.
How this model works & what it omits
Everything here starts from a Two-Line Element set (TLE) — the compact NORAD element format that encodes a satellite's mean orbital elements at a reference epoch. TLEs are mean elements fitted to the SGP4 (Simplified General Perturbations 4) analytical propagator, so they only mean something when propagated with SGP4 — feeding TLE elements into a generic Keplerian propagator gives kilometres of error immediately. This tool runs the genuine article: satellite.js, a faithful port of the reference SGP4/SDP4 implementation from "Revisiting Spacetrack Report #3" (Vallado et al. 2006).
SGP4 outputs position in the TEME (True Equator, Mean Equinox) inertial frame. To place the sub-satellite point on the map, the tool rotates TEME into the Earth-fixed ECEF (Earth-Centered, Earth-Fixed) frame using Greenwich Mean Sidereal Time (GMST) at each sample, then converts to geodetic latitude/longitude on the ellipsoid. Pass geometry uses the standard topocentric transform (Vallado §4): the station's look angles — azimuth and elevation — are computed from the ECEF vector between station and satellite. A pass is a contiguous interval with elevation at or above your elevation mask; AOS (Acquisition of Signal) and LOS (Loss of Signal) are the rising and falling mask crossings, interpolated between samples, and TCA (Time of Closest Approach) — the elevation peak — is refined numerically inside the pass.
What bounds the accuracy: TLE freshness, more than anything else. A fresh element set is good to roughly a kilometre; the error grows about 1–3 km per day away from epoch, so pass predictions from a week-old TLE can drift by tens of seconds, and a month-old one is geometry practice, not a schedule. The tool flags a stale epoch but can't fix it — paste a current TLE from CelesTrak or Space-Track before committing an antenna. Drag is modelled only as far as SGP4's own B* term goes (no density weather, no storms), maneuvers are invisible until they show up in the next published element set, and the bundled example TLEs are deliberately historical — fixed epoch, fixed window — so the examples are reproducible rather than current.
The map is deliberately a grid-only equirectangular plot — a ground track, a station marker, and the station's visibility circle (the locus where the satellite clears the mask, from standard coverage geometry). No basemap tiles: nothing on this page phones out, and a graticule is all a ground track needs to be read correctly. This is the same physics family as the orbit-propagator and ground-station-pass tools ENKI uses server-side.
// pick an example scenario, or paste your own TLE. bundled TLEs are historical (fixed epoch, fixed window) so results are reproducible — for real scheduling, paste a fresh TLE and set the start to now.
Element set (TLE)
// two-line element set — paste from CelesTrak or Space-Track; a name line is ignored.
// epoch 2008-09-20 12:25:40 UTC · incl 51.64° · 349×358 km
Ground station
// geodetic coordinates + the antenna's elevation mask.
Window
// all times UTC. the physics takes the start as an input — nothing is implicit.
First pass in window
AOS 2008-09-21 10:55:04 UTC
17.0° max elev
4m 03s · 169° S → 81° E
3
Passes / 24 h
12.2 min
Total contact time
91.6 min
Orbital period
49.9°
Best max elevation
// solid: ground track, ~2 orbits from window start (dot = start) · dashed: station visibility circle at the elevation mask · cross: ground station. grid-only plot, 30° graticule.
// pass windows, in time order
| # | AOS (UTC) | TCA | LOS | Duration | Max elev | Azimuth |
|---|---|---|---|---|---|---|
| 1 | 2008-09-21 10:55:04 | 10:57:06 | 10:59:07 | 4m 03s | 17.0° | 169° S → 81° E |
| 2 | 2008-09-21 12:31:01 | 12:32:16 | 12:33:32 | 2m 32s | 12.1° | 285° W → 336° NW |
| 3 | 2008-09-21 22:14:17 | 22:17:07 | 22:19:57 | 5m 39s | 49.9° | 311° NW → 157° SE |
// accuracy
SGP4 against a fresh TLE is good to ~1 km at epoch, degrading ~1–3 km/day — pass timing from a week-old element set can drift by tens of seconds. Elevation is sampled every 30 s and mask crossings are interpolated; the peak is refined numerically. No maneuvers, no drag beyond SGP4's own model.
// shareable URL encodes every input, TLE included. no backend.
Common questions
How do I predict when a satellite will pass over my ground station?
Paste the satellite's current TLE, enter the station's latitude, longitude, and elevation mask, and pick a window. The tool propagates with SGP4 and lists each ground station pass — AOS/LOS times, peak elevation, and the azimuths to slew between. The bundled International Space Station (ISS)-over-Bangalore example (a fixed historical element set, so it reproduces exactly) finds three passes above a 10° mask in 24 hours, about 12 minutes of total contact time.
How long does a satellite pass last?
Minutes, in low Earth orbit (LEO). In the bundled example the three passes run roughly 2.5 to 5.5 minutes above a 10° mask, and only the best of them climbs past ~50° elevation — near-overhead passes are rare. A single station typically sees a LEO satellite for tens of minutes per day in total, and that scarce contact time is the hard constraint behind the onboard data budget and the comms link budget.
What elevation mask should I use?
5–10° is typical. Right at the horizon, terrain and buildings block the line of sight and link quality is at its worst, so pass minutes below the mask are rarely usable. Raising the mask trades away contact time for quality: a higher mask shrinks the station's visibility circle, cutting both the number of passes and the length of each one. Set it to what your antenna site can actually see.
Why does the ground track shift west every orbit?
The orbit plane is fixed (to first order) while Earth rotates underneath it. At the ISS example's ~92-minute period, Earth turns about 23° of longitude per revolution, so each successive ground track crosses the equator ~23° further west. A station only gets a ground station pass when the shifted track crosses its visibility circle — which is why passes arrive in clusters of consecutive orbits separated by hours of silence, exactly the pattern the example's pass list shows.
How fresh does my TLE need to be?
SGP4 position error grows roughly 1–3 km per day away from the element epoch, so a week-old TLE can put pass timings off by tens of seconds, and the tool flags any element set older than 14 days. The bundled examples are deliberately historical — fixed epoch, fixed window — so they demonstrate the tool reproducibly; they do not predict where those satellites are today. Before committing an antenna, paste a fresh TLE and set the window start to now.
References
- // Hoots, F. R. & Roehrich, R. L. (1980). Spacetrack Report No. 3: Models for Propagation of NORAD Element Sets.
- // Vallado, D. A., Crawford, P., Hujsak, R., & Kelso, T. S. (2006). Revisiting Spacetrack Report #3, AIAA 2006-6753 — the reference SGP4 and its test cases.
- // Vallado, D. A. (2013). Fundamentals of Astrodynamics and Applications, 4th ed. — topocentric look angles (§4), coverage geometry (§11).
- // Kelso, T. S. CelesTrak, Columns for Satellite Times — TLE format and interpretation notes.
- // satellite.js — the SGP4/SDP4 port this tool runs (github.com/shashwatak/satellite-js).