7.6% of 19,777 payloads on orbit. A further 1,509 (7.6%) have never been assessed, and are counted separately rather than folded in.
The colours are deliberately neutral — no red, no green. A retired satellite parked in a graveyard orbit at the end of its life is a correctly operated satellite, so colouring it red would assert a judgement this data cannot support.
Where a satellite orbits changes what its status means, so each band is reported on its own terms rather than ranked against the others.
Where almost everything now flies — imaging satellites, broadband constellations, the space station. Atmospheric drag pulls dormant satellites down here on its own.
Mostly navigation constellations: GPS, Galileo (European Union), BeiDou (China) and GLONASS (Russia). Nothing decays at this altitude.
The ring where a satellite holds one spot above the equator — television, weather and fixed communications. Retired satellites are boosted into a graveyard orbit just above it.
A small mixed group: science missions, early-warning satellites, and orbits that swing far out from Earth before returning.
The band holding most of the satellites is not the band holding most of the dormant ones.
Geostationary orbit holds 7.0% of all satellites but 42.6% of all non-operational ones. Low Earth orbit is the mirror image: 88.4% of satellites, 37.4% of the non-operational.
In low Earth orbit the thin upper atmosphere still exerts drag. A satellite that stops working re-enters within years and leaves the catalogue on its own, so the band clears itself. Higher up there is nothing to slow anything down: a retired geostationary satellite is boosted into a graveyard orbit and stays there essentially forever, still counted.
The ages show it plainly. The typical working satellite in low Earth orbit launched in 2024; the typical non-operational satellite in geostationary orbit launched in 1994 — a gap of 30 years.
So a high non-operational share in geostationary orbit is mostly the accumulated record of six decades of satellite retirement, not a sign that something is going wrong today. That is also why this page offers no combined ranking across bands: it would sort satellites by physics rather than by anything anyone controls.
Each row is one band; each column is the decade its dormant satellites went up.
| Band | 60s | 70s | 80s | 90s | 00s | 10s | 20s | Total | Median year |
|---|---|---|---|---|---|---|---|---|---|
| LEO | 28 | 41 | 21 | 188 | 129 | 107 | 48 | 562 | 2000 |
| MEO | 28 | 7 | 53 | 72 | 44 | 19 | 5 | 228 | 1992 |
| GEO | 17 | 69 | 135 | 234 | 156 | 23 | 5 | 639 | 1994 |
| HEO | 3 | 5 | 12 | 4 | 3 | 4 | – | 31 | 1984 |
Read across a row to see how far back a band's dormant population reaches. Decade totals exclude the small number of satellites whose launch date is missing from the catalogue, so they can fall short of the band total.
The non-operational rate is non-operational ÷ (operational + partial + backup/spare + non-operational). Satellites CelesTrak has never assessed are excluded from both sides. Counting them as working would flatter bands with poor coverage; counting them as dormant would invent a fact.
Two further disclosures. The boundary between low and medium orbit is set at 2,500 km rather than the textbook 2,000 km, because operators retire low-orbit satellites by boosting them just above the 2,000 km protected region — a hard cut would file that correct disposal behaviour as a medium-orbit fleet. And 249 payloads (1.3%) carry no orbit data at all in the catalogue; they count in the totals at the top of this page but cannot appear in any band.
A blank code is not a claim that a satellite is dead — it means CelesTrak has never assessed it. The two are never merged.
| Code | CelesTrak meaning | Counted as |
|---|---|---|
+ | Operational | Operational |
X | Extended mission | Operational |
P | Partially operational | Partially operational |
B | Backup / standby | Backup / spare |
S | Spare | Backup / spare |
− | Nonoperational | Non-operational |
? | Unknown | Unknown |
(blank) | Never assessed | Unknown |
Satellites with code D (decayed) have re-entered and are excluded entirely. Any code not on this list is counted as unknown and logged for review — never guessed at.
Every payload currently in Earth orbit, sorted by whether CelesTrak records it as working. A satellite that has stopped working does not disappear — it keeps orbiting, and in most of space it keeps orbiting essentially forever.
The number that is not here is a count of satellites that are definitely dead. Nobody publishes that. What CelesTrak publishes is an assessment, and a large group of old satellites it has never assessed at all. Those two are reported separately throughout, and never added together.
Fleet status is the standing stock of what is up there; Deorbits is the flow of what comes back down. A dormant satellite in low Earth orbit is a future deorbit; one in geostationary orbit is not.
The homepage's active satellite count uses CelesTrak's separate “active” feed, which counts the operational, partial and backup categories below and excludes the rest — so it will not match the total here. See When two metrics disagree.
The operational status of every payload currently in Earth orbit, reported separately for each orbit band.
CelesTrak SATCAT, the bulk catalogue file celestrak.org/pub/satcat.csv, regenerated daily by CelesTrak. I use the bulk file rather than the SATCAT search endpoint because the search requires a name or designator and cannot return the whole catalogue, and because CelesTrak defines its “active” group as status codes +, P, B, S and X — a group that excludes every non-operational satellite, which is the population this metric exists to measure.
Objects CelesTrak types as payloads (OBJECT_TYPE = PAY) with no decay date recorded, i.e. still on orbit.
Rocket bodies, debris, and any object with a decay date. Status code D (decayed) is excluded by the same rule.
CelesTrak’s OPS_STATUS_CODE maps to five buckets: + operational; X extended mission → operational (a working satellite past its planned life); P → partially operational; B backup/standby and S spare → backup/spare; − → non-operational; ? and blank → unknown. Any code not on this list is bucketed as unknown and logged as a warning — never silently dropped or guessed.
This is the distinction the whole metric rests on. A “−” is CelesTrak asserting a satellite is non-operational. A blank code is a record CelesTrak has never assessed — those entries have a median launch year of 1982, are roughly two-thirds Soviet-era, and include nothing launched after 2006. They are very probably dead in reality, but the source does not say so, so I report them as unknown. Merging the two would roughly double the headline figure on the strength of an assumption. I never merge them.
The non-operational rate is non-operational ÷ (operational + partial + backup/spare + non-operational). Unknown is excluded from both sides. Including unknowns as working would flatter bands and operators with poor status coverage; counting them as non-operational would invent a fact.
Band is assigned from the mean of CelesTrak’s perigee and apogee: low Earth orbit (LEO) below 2,500 km, medium Earth orbit (MEO) 2,500–34,000 km, geostationary orbit (GEO) 34,000–37,000 km, and high or elliptical orbits (HEO) above that. The LEO ceiling is deliberately 2,500 km rather than the textbook 2,000 km: LEO operators retire satellites by boosting them just above the 2,000 km protected region, so a hard 2,000 km cut files correct end-of-life disposal as a medium-orbit fleet — in practice it moved eleven retired Globalstar satellites into MEO, where they ranked against GPS and Galileo. The wider ceiling keeps disposal orbits with the constellation they belong to.
Whether a non-operational satellite is still in the catalogue depends mostly on where it orbits. In LEO, atmospheric drag removes dead satellites within years. Above LEO nothing decays, so a retired satellite stays counted indefinitely. Comparing bands against each other would rank operators and orbits by physics rather than by anything anyone controls, so each band is reported on its own terms and the page offers no combined ranking.
On an operator’s own page, that operator’s status mix is compared against all satellites in the same orbit band — never against operators in other bands, and never against a fleet-size peer group. Operators flying in more than one band get one table per band. Satellites are attributed to operators by the same name-prefix patterns used across the site; unattributed satellites still count toward global and per-band totals.
A daily append-only snapshot of every satellite’s status is written to fleet_status_snapshot from the day this shipped. No history exists before that date and none can be reconstructed, because CelesTrak publishes only the current state of the catalogue. Death dates, survival curves and time-to-failure analysis all depend on that series accumulating, so they are deliberately out of scope until there is enough of it. If a day’s pull fails, that date is absent rather than backfilled.
Status is CelesTrak’s assessment, not the operator’s. Assessment quality varies: large commercial fleets are tracked closely, while small and government operators are less reliably maintained, which is why unknown runs much higher in some bands than others. Roughly 1.3% of on-orbit payloads carry no perigee or apogee at all; they count in the site-wide totals but cannot appear in any band. Band is derived from a mean altitude, so an eccentric orbit is placed by its average rather than by where it spends its time.
Attribution required