# How does SGP4 work?

For calculating orbital state vectors of satellites, SGP4 (simplified perturbations model) is often used in conjunction with two-line element sets to calculate future positions of orbiting objects. What are the parameters and steps used in the SGP4 method to make these predictions? I am looking for an in depth source about how the model works.

The canonical references are Spacetrack Report #3 which is the original documentation of the SGP4 algorithm, and Vallado + Kelso's Revisiting Spacetrack Report #3 which has updates, analysis and modern* source code with discussion.

* well, kinda :)

• I also found this AIAA SGP4 Orbit Determination (David A. Vallado, PDF) that "might" be fractionally easier to follow. And here's his (commented) code for C++, FORTRAN, Pascal, and MATLAB (ZIP), link via Wiki on SGP/SDP. Dec 3, 2014 at 21:23
• @TildalWave that is an educational paper too, though it's about turning observations into TLEs rather than turning TLEs into state vectors. Dec 3, 2014 at 21:40
• @TildalWave Did you try to run the Matlab portion of the code? Just tried and it was incomplete. Had to fix a bunch of things to get it to work. Someone should update the Wiki. Update_1: Just found a newer copy of the *.zip file than the one that you have in your link. It comes directly from the website. Link to code download go to the download and you will see the SGP4 code. Hope this helps. Thanks for the paper reference. Update_2: Found a thesis on this topic [Link for thesis](digitalcommons.calpoly.edu/cgi/…
– Moko
Aug 5, 2015 at 3:48
• Some of the links @TildalWave mentioned are dead now, but I think this website has the same content he was referencing: celestrak.com/publications/AIAA/2006-6753 Jun 19, 2018 at 1:46
• In 2014 this was considered a good answer, but these days it would likely be called "link-only". I wonder if it's possible to augment this with a bit of an answer that does not require the readers to go to those links and read the answer there instead of here?
– uhoh
Aug 13, 2019 at 6:02