Orbit Map

What SGP4 actually computes

Behind the dot moving across a satellite tracker there is almost always the same piece of mathematics: SGP4, a model published in 1980 that still underpins public orbit prediction. Understanding what it does - and what it was never meant to do - explains most of what a tracker can and cannot tell you.

SGP4 stands for Simplified General Perturbations, model 4. It takes an orbit described at one moment and works out where the object is at another. That job is called propagation.

Why not just use Kepler?

A perfect two-body orbit - one point mass going round another - follows an ellipse forever. Real satellites do not, because several things keep nudging them:

  • Earth is not a sphere. It bulges at the equator, and that extra mass slowly twists orbits around. This is the largest effect for most satellites.
  • The atmosphere. Low objects are dragged, lose energy and sink.
  • The Moon and the Sun. Their gravity tugs on anything far enough out.

A pure ellipse ignores all of this and goes wrong within hours for a low satellite. SGP4 adds approximations of the most important effects while staying fast enough to run on thousands of objects at once.

What it includes

SGP4 models the long-term and periodic effects of Earth's shape, using the dominant terms of its gravity field, and a simplified atmospheric drag. Drag enters through a single number carried with each element set, B*, which describes how strongly this particular object is slowed.

SGP4 and SDP4

The "4" models come as a pair. SGP4 handles near-Earth objects. For orbits with a period of 225 minutes or more - roughly anything above about 5,900 km - the companion SDP4 takes over, adding the gravitational effects of the Moon and Sun and the resonances that affect orbits with 12-hour and 24-hour periods, such as navigation and geostationary satellites.

Most implementations switch between the two automatically, which is why you will often see them written together as SGP4/SDP4.

An Orbit Map screen about checking the numbers behind an orbit
The numbers a propagator produces are only as good as the elements they start from.

The elements are made for the model

This is the most important and least understood point. The orbital elements distributed in TLE or OMM form are mean elements fitted for SGP4 specifically. They are not the instantaneous orbit, and they are not meant to be fed into any other model.

The catalogue producers fit the elements so that, when run through SGP4, they reproduce the observed track. Take the same numbers and run them through a more sophisticated high-precision propagator and the answer gets worse, not better, because that model expects a different kind of input.

What it deliberately leaves out

  • A live atmosphere. The drag model is static. When solar activity swells the upper atmosphere, the prediction lags until new elements are fitted.
  • Manoeuvres. An engine burn is invisible until a new element set includes it.
  • Fine gravity detail and solar radiation pressure, beyond what the fitted elements implicitly absorb.

None of this is a flaw. It is the trade SGP4 makes to stay fast, simple and usable with public data.

How accurate that makes it

Close to the epoch, positions are typically good to around a kilometre. The error grows with every day of element age, fastest for low orbits where drag varies most. For seeing the Space Station, understanding the shape of a constellation or learning orbital mechanics, that is more than enough.

It is not enough for deciding whether two satellites will collide, steering a spacecraft, or pointing a narrow-beam antenna. Those jobs use precise ephemerides from operators and dedicated tracking. A tracker that says so plainly is being accurate about its accuracy.

Getting it right matters

SGP4 has been implemented many times, not always consistently. In 2006, David Vallado and colleagues published a careful review of the model, corrected long-standing discrepancies between versions, and released reference test cases with expected outputs. A trustworthy implementation today is checked against those vectors.

One last detail for anyone writing code: SGP4's output is expressed in a frame called TEME, tied to Earth's equator and equinox but not rotating with the ground. To place a satellite over a map, the position still has to be turned into Earth-fixed coordinates using the planet's rotation.

Keep reading