TLE
What it is
The two-line element set is the compact format cataloged objects are distributed in. It is read, never written.
A TLE is not a state vector. It is a set of mean elements fitted to the SGP4 model, and that pairing is the single most important thing to know about the format.
A complete set
ISS (ZARYA)
1 25544U 98067A 26176.70356236 .00009385 00000+0 17567-3 0 9997
2 25544 51.6325 257.9368 0004376 231.2480 128.8118 15.49425151573072The first line is an optional name. Both the two-line and three-line named forms are accepted.
What the lines carry
| Field | Where | Meaning |
|---|---|---|
| Catalog number | Both lines, 25544 | NORAD identifier |
| International designator | Line 1, 98067A | Launch year, launch number, piece |
| Epoch | Line 1, 26176.70356236 | Two-digit year plus fractional day of year |
| First derivative of mean motion | Line 1, .00009385 | Decay rate |
| B-star | Line 1, 17567-3 | Drag term, in a packed exponent notation meaning 0.17567e-3 |
| Inclination | Line 2, 51.6325 | Degrees |
| RAAN | Line 2, 257.9368 | Degrees |
| Eccentricity | Line 2, 0004376 | Implied leading decimal: 0.0004376 |
| Argument of perigee | Line 2, 231.2480 | Degrees |
| Mean anomaly | Line 2, 128.8118 | Degrees |
| Mean motion | Line 2, 15.49425151 | Revolutions per day |
| Revolution number | Line 2, 57307 | At epoch |
Two fields are written in forms that look like typos and are not. Eccentricity
omits its leading 0., so 0004376 means 0.0004376. B-star packs an exponent
into the last characters, so 17567-3 means 0.17567 times ten to the minus
three.
Both are artifacts of a fixed-column format designed when characters were expensive.
The epoch is the whole story
26176.70356236 is day 176.70356236 of 2026, which is 25 June. Importing this
set reports it back:
Imported 1 satellites (skipped 0) -> iss.json
Reference epoch: 2026-06-25T16:53:07ZTLEs are fitted to observations around their epoch. Propagating far from it extrapolates a fit rather than integrating physics, and the result degrades quickly: to kilometers within days and substantially worse across weeks, faster for low-perigee objects where drag dominates.
Always pass the reported epoch as the analysis start. The default start of
2026-01-01T00:00:00Z against a June epoch propagates nearly six months from
the fit, and nothing in the output indicates the result is worthless.
Only SGP4 is valid
The elements are mean elements in SGP4’s own theory, not osculating elements another propagator can consume. Propagating them with a numerical or J2 model produces a confidently wrong trajectory, because the arithmetic succeeds while the inputs mean something different from what the model assumes.
Use --model sgp4 on every command that consumes a TLE-imported constellation.
What a TLE does not carry
| Carried | Not carried |
|---|---|
| Mean elements at an epoch | Payload or field of view |
| B-star drag term | Mass, area, attitude |
| Catalog and international identifiers | Transmit power or antenna |
| Epoch and revolution number | Any covariance |
The absence of covariance matters more than it looks. There is no uncertainty information in the data at all, so any probability computed downstream, such as a collision probability, rests on covariance you supplied from somewhere else.
--fov-deg exists on the import commands precisely because coverage analysis
needs a sensor and the file has none.
Malformed entries are skipped
The import reports a count rather than aborting:
Imported 24 satellites (skipped 0) -> iss.jsonA non-zero skip count usually means a truncated download or a checksum failure rather than genuinely bad objects. It is worth investigating rather than accepting.
See also
main (pre-release)