Two lines, sixty-nine characters each
A two-line element set (TLE) is a compact, fixed-width text record describing one Earth-orbiting object. It was designed in the 1960s for punched cards and teleprinters, and the format has not changed since — which is why it is so rigid, and why it is still everywhere.
Each set has two mandatory lines of exactly 69 characters. Most distributions add an optional third line above them carrying the object's name, so you will see both the “2-line” and “3-line” forms in the wild.
The numbers come from the US Space Force's radar and optical tracking network. Observations are fitted to the SGP4 orbit model, and the fitted parameters are what the TLE stores. They are published through CelesTrak and Space-Track.
The single most important thing to understand
A TLE does not contain a position and a velocity. It contains mean elements — parameters that only mean what they are supposed to mean when fed to the SGP4 model that produced them. They are averaged in a way that deliberately removes short-period wobbles, so that the model can put them back. Treating them as ordinary Keplerian elements is an approximation, and we will be precise later on the page about how much that costs you.
The whole journey, end to end
A satellite is up there. A red line crosses a map on your screen. Everything between those two facts is the chain below — and the whole middle of it fits in 138 characters.
-
start
Step 1
The real orbit
Radar and telescopes watch it pass. Nobody can read its orbit off directly.
the real thing
-
fit + pack
Step 2
The TLE
Those observations are fitted to the SGP4 model, and the fit is packed into two lines of 69 characters.
SGP4 mean elements
-
read by column
Step 3
Six numbers and a time
Size, shape, tilt, orientation and starting position — plus the instant they were true.
a, e, i, Ω, ω, M₀
-
Kepler + rotate
Step 4
A point in space
Kepler's equation says where on the ellipse at time t. Three rotations tilt that ellipse into place.
PQW → ECI
-
θ = ωE·t
Step 5
A point on the map
The Earth turns underneath. The position in space becomes a latitude and a longitude — the ground track.
ECEF → lat, lon
Two places where reality leaks out
Between steps 1 and 2, a real orbit — perturbed by a lumpy Earth, the atmosphere, the Sun and the Moon — is compressed into a handful of averaged numbers. They only mean what they are supposed to mean when SGP4 reads them back.
Between steps 3 and 4, our visualizer propagates plain two-body Kepler motion instead of SGP4. Near the epoch the shape is right and the lesson holds; a day or two later the real satellite is somewhere else.
Steps 2 and 3 are what the decoder below does. Steps 4 and 5 are what the Orbit Visualizer does.
Decode one
Pick a sample or paste your own. Hover or focus a row in the table to highlight the exact characters it comes from.
These samples are constructed teaching examples. The checksums are valid and the orbits are realistic, but they are not live orbital data and must not be used for real tracking. For current elements, fetch them from CelesTrak or Space-Track and paste them below — the decoder works on any well-formed set.
Raw record with column numbers
Columns are 1-based. Notice that fields are separated by position, not by spaces — several of them touch each other.
Field by field
| Ln | Cols | Field | Raw characters | Decoded |
|---|
What that orbit actually is
The six numbers the Orbit Visualizer needs
Six things that break naive parsers
Every one of these has produced a confidently wrong satellite track in somebody's student project. They are worth reading before you write a line of parsing code.
-
It is a fixed-column format, not a delimited one
Splitting on whitespace works on most lines and then silently fails on the rest. On line 2 the mean motion ends at column 63 and the revolution number starts at column 64, with nothing in between. Split
… 15.50377579478213on spaces and you get one token that is neither value. Read by column, or not at all. -
The eccentricity has an invisible “0.” in front of it
The field holds seven digits and no decimal point.
0006703means 0.0006703, and7200000means 0.72.A consequence worth noticing: because the leading
0.is assumed, the format cannot represent e ≥ 1. A TLE can only ever describe a closed orbit — never a parabolic or hyperbolic trajectory. The largest eccentricity expressible is 0.9999999. -
B* and the second derivative use an assumed-decimal exponent
10270-3is not “10270 minus 3”. It is 0.10270 × 10−3: five mantissa digits with an assumed leading0., then a signed single-digit exponent. So-11606-4is −0.11606 × 10−4. -
The epoch year is two digits, windowed at 57
57–99 means 1957–1999; 00–56 means 2000–2056. The pivot is Sputnik. The format will need attention again in 2057.
The day field is a day of year with a fractional day, in UTC, where
001.00000000is midnight on 1 January — not 2 January. Off-by-one here shifts your whole ground track. -
The checksum counts a minus sign as 1
Column 69 is the sum of every digit in columns 1–68, with each
−counting as 1 and every other character as 0, taken modulo 10. Plus signs, letters, spaces and decimal points contribute nothing. It catches typos and truncation, not much else — it is a transmission check, not a signature. -
Catalog numbers ran out, and now some start with a letter
The catalog field is five characters, so it capped at 99 999. The Alpha-5 extension puts a letter in the first column: A = 10, B = 11, … Z = 33, skipping I and O because they read as 1 and 0. So
T5544is object 295 544. Parsers that assume five digits returnNaNand usually carry on regardless.
Column reference
The authoritative layout, for when you are writing your own parser. Columns are 1-based and inclusive.
Line 1 — identity, epoch, drag
| Columns | Field | Notes |
|---|---|---|
| 01 | Line number | Always 1. |
| 03–07 | Satellite catalog number | NORAD ID. May be Alpha-5 encoded. |
| 08 | Classification | U unclassified, C classified, S secret. Public sets are always U. |
| 10–11 | International designator: launch year | Last two digits, same 57 window. |
| 12–14 | International designator: launch number | Which launch of that year. |
| 15–17 | International designator: piece | A is normally the primary payload; later letters are other objects and debris. |
| 19–20 | Epoch year | Two digits, windowed at 57. |
| 21–32 | Epoch day of year | Fractional day, UTC. Day 1.0 is 1 January 00:00. |
| 34–43 | First derivative of mean motion ÷ 2 | rev/day². Positive means the orbit is decaying. Unused by SGP4 itself. |
| 45–52 | Second derivative of mean motion ÷ 6 | rev/day³, assumed-decimal exponent. Almost always zero. |
| 54–61 | B* drag term | Inverse earth radii, assumed-decimal exponent. This is the one SGP4 actually uses. |
| 63 | Ephemeris type | 0 in every public set, meaning “propagate with SGP4/SDP4”. |
| 65–68 | Element set number | Increments with each new set issued for the object. |
| 69 | Checksum | Modulo 10, minus signs count as 1. |
Line 2 — the orbit
| Columns | Field | Notes |
|---|---|---|
| 01 | Line number | Always 2. |
| 03–07 | Satellite catalog number | Must match line 1. If it does not, you have two different objects. |
| 09–16 | Inclination i | Degrees, 0–180. Above 90° the orbit is retrograde. |
| 18–25 | RAAN Ω | Degrees. Where the orbit plane crosses the equator heading north, measured from the vernal equinox. |
| 27–33 | Eccentricity e | Assumed leading 0. |
| 35–42 | Argument of perigee ω | Degrees, from the ascending node to perigee. |
| 44–51 | Mean anomaly M | Degrees at the epoch. This is the “where is it now” field. |
| 53–63 | Mean motion n | Revolutions per day. Sets the orbit size. |
| 64–68 | Revolution number | Completed revolutions at the epoch. Rolls over past 99 999. |
| 69 | Checksum | Same rule as line 1. |
From a TLE to an orbit you can draw
Five of the six elements the Orbit Visualizer needs are read straight off line 2. Only the orbit size needs converting, because a TLE stores the mean motion rather than the semi-major axis:
n [rev/day] -> n [rad/s] = n · 2π / 86400 a = ( μ / n² )^(1/3) with μ = 398 600.4418 km³ s⁻²
| TLE field | Visualizer control | Conversion |
|---|---|---|
| Mean motion n | Semi-major-axis altitude | Kepler's third law, then subtract RE |
| Eccentricity e | Eccentricity | Insert the assumed 0. |
| Inclination i | Inclination | Direct |
| RAAN Ω | RAAN | Direct |
| Argument of perigee ω | Argument of perigee | Direct |
| Mean anomaly M | Initial mean anomaly M0 | Direct, valid at the epoch |
What this conversion costs you
The visualizer propagates two-body Keplerian motion. A TLE's elements are SGP4 mean elements. Feeding one to the other is a legitimate teaching approximation, and it is also wrong in ways you should be able to name:
- The semi-major axis is approximate. The stored mean motion is a Brouwer–Kozai mean value, so Kepler's third law returns an a that is typically a few kilometres off the osculating value in LEO.
- RAAN will drift and our model will not. Earth's oblateness (J2) regresses the node of a 500 km, 51.6° orbit by roughly −5° per day. A two-body model holds Ω fixed, so the ground track slides sideways from the truth within a day or two.
- Drag is ignored entirely. B* is right there in line 1 and our model has nowhere to put it.
For a single orbit near the epoch this is fine and the shape is instructive. For predicting when a satellite will actually pass over a ground station a day later, it is not — that needs SGP4.
A TLE goes stale
The elements describe a fit centred on the epoch. Accuracy is typically around a kilometre near the epoch and degrades by roughly one to three kilometres per day, faster for low, draggy orbits and much faster around a solar storm. Operational tracking refreshes element sets every few days or more often.
The decoder above reports the age of whatever you paste, measured against your computer's clock. Treat a set more than a week or two old as an illustration rather than a prediction.
What comes next
The planned next step is to let you hand a TLE straight to the Orbit Visualizer and watch its ground track, with the simulation clock anchored to the element set's epoch rather than to zero.
Predicting when a satellite passes over a specific place needs three things this page does not yet cover: an observer position (latitude, longitude, altitude), a minimum elevation angle to count as visible, and a propagator good enough to still be right hours or days after the epoch. The parser on this page is already shaped to feed all three.