open orbit
ConstellationsLaunch providersWatchlist
Launch
Launchesorbital attempts, YTD + trajectoryMass to orbittonnes deliveredFailuresrolling failure rateCargo utilizationhow full rockets fly · BetaLaunching nationswho reaches orbit, since 1957
In orbit
Fleet statusoperational status by orbitDeorbitsre-entriesConstellation buildoutplanned vs deployed · Beta
ConceptsMethodology
Loginthe workspace
open orbit
ConstellationsLaunch providersWatchlist
Metrics · Launch
LaunchesMass to orbitFailuresCargo utilizationLaunching nations
Metrics · In orbit
Fleet statusDeorbitsConstellation buildout
ConceptsMethodologyLogin · the workspace

Disclaimer. OO Insights is an independent, non-commercial project provided for informational and educational purposes only. Data is aggregated from third-party public sources (including GCAT, CelesTrak, and TheSpaceDevs Launch Library 2) and is provided ‘as is,’ without warranty; it may be incomplete, delayed, or inaccurate. Figures are derived per our published methodology, which we recommend reviewing. It is not investment, financial, or professional advice. Any reliance on this content is at your own risk.

MethodologyFull disclaimerPrivacyTerms

Methodology

I built Open Orbit as a transparency-first dashboard. Every number on the home page comes from a public dataset. This page documents what each metric measures, where it comes from, and the choices I made to define it.

Active satellites in orbit

Total count of satellites in Earth orbit, taken from the most recent fetch.

Source
CelesTrak GP catalog, GROUP=active
Includes
Objects CelesTrak classifies as active in any Earth orbit
Excludes
Rocket bodies, debris, satellites flagged as decayed
Limitations
“Active” reflects CelesTrak’s classification, which may lag operator-confirmed status by days. Recently-launched payloads may not appear immediately.
License
Attribution required

Launches YTD

All orbital launch attempts since January 1 of the current year, regardless of outcome.

Source
Launch Library 2 (TheSpaceDevs), /launch/previous/ for history and /launch/upcoming/ for the manifest
Includes
Successful and failed orbital launches
Excludes
Suborbital flights, missile tests, sounding rockets
Country
Launch-site country (ISO 3-letter code from LL2’s pad metadata), i.e., where the rocket lifted off. Not the launch provider’s nationality, which can differ (e.g., Soyuz launches from French Guiana).
Trajectory
Annual totals on the trajectory chart cover the last 10 years. Each prior year is cached separately; values for years still being recorded in LL2 may revise slightly for the first few weeks of the new year.
Upcoming
The next 10 most-imminent launches on LL2’s manifest, sorted by NET ascending. Schedules slip routinely; NETs reflect LL2’s best-current information at fetch time, not commitments.
Limitations
Status codes are community-curated. The most recent launches may not be coded for several hours after liftoff. LL2 has a 15-request/hour free tier, so cold-cache loads may render with a gap on one or two historical years until the cache warms.
License
Attribution required

Mass to orbit YTD

Sum of payload mass on successful orbital launches since January 1 of the current year.

What the mass figure includes
Payload mass only. GCAT's OrbPay column is defined as “payload in tonnes delivered to orbit (perigee above 80 km)”, and that is the number reported here. It counts everything the rocket was carrying as cargo: satellites, crew capsules, cargo freighters bound for the space station, and deep-space probes, because all of them are payload. It does NOT include the rocket: the upper stage that did the final burn, and any propellant left in it, are excluded. GCAT tracks that separately as OrbMass (total mass in orbit at insertion cutoff, including the insertion stage and remaining propellant), and this metric deliberately does not use it. So “tonnes to orbit” here means tonnes of useful cargo, not tonnes of hardware in space.
Source
Jonathan McDowell’s GCAT (launch.tsv)
Includes
Launches with LaunchCode = OS (Orbital Success) and a recorded payload mass
Excludes
Failed launches, suborbital, missile/sounding rockets, deep-space missions
Limitations
GCAT is maintained by hand and typically lags 1–2 weeks on the most recent launches. Some launches list partial-payload mass. GCAT also cautions that recent OrbPay values are autogenerated and may not handle special cases correctly, so the most recent months can shift as entries are reviewed by hand.
License
Creative Commons CC-BY

Failure rate (12 months)

Orbital launch failures over the trailing 365 days, divided by total orbital launch attempts in the same window.

Source
Launch Library 2, /launch/previous/, backfilled into a Supabase historical_launches table for the trajectory and breakdowns
What counts as a failure
Launch Library 2 status 4 (Launch Failure), in their words, the vehicle either did not reach orbit or the payload(s) failed to separate, and status 7 (Partial Failure), where the vehicle flew but the mission was compromised, typically by delivering its payload to a wrong or unusable orbit. Both count fully; there is no partial weighting, because a satellite in the wrong orbit is a failure for the customer even when the rocket performed.
What counts as an attempt
The denominator is every concluded orbital launch attempt in the window: successes (status 3), failures (4), partial failures (7), and payload-deployed (9). Status 9 is an intermediate SUCCESS state that Launch Library 2 sets after deployment but before payload acquisition-of-signal is confirmed; it is not a failure. Launches that have not concluded (scheduled, held, or in flight) are excluded from both sides entirely. Counting a scheduled launch as an attempt would treat an unknown outcome as a success and understate the rate.
Excludes
Pad explosions before liftoff (no launch attempt occurred), suborbital flights, missile tests, scrubbed and postponed launches, and any launch still in flight at the time of the refresh. A payload that fails in orbit days or months after a clean insertion is not a launch failure and is not counted here; that shows up on fleet status instead. Development test campaigns are excluded from both the numerator and the denominator: currently that means SpaceX Starship and its earlier prototypes, and nothing else. The test is whether a customer’s payload was being delivered, not whether the rocket is new. Starship flies mass simulators, so a loss destroys nothing anyone was paying to put in orbit, and counting it beside rockets carrying real satellites would blend two different questions into one number. Maiden and early flights that failed while carrying real payloads (Tianlong-3, Ceres-2, HANBIT-Nano, New Glenn, KAIROS) remain counted in full, because a customer genuinely lost a satellite. The exclusion is a named list held in code, never a rule based on flight count; drawing it at ‘new rocket’ instead would remove five of the ten failures in the trailing year and roughly halve the published rate.
Trajectory
Rolling 12-month rate computed monthly from January 2015 to the current month. Each point is failures ÷ launches over the trailing 12 calendar months; chosen as a long enough window to smooth single-event noise while still responsive to recent cadence.
Breakdowns
Rate (not count) by launch provider and by vehicle, last 24 months. Sample-size threshold: only entries with ≥5 launches in the window appear. A single failure on a small sample would otherwise dominate the chart. Entries excluded under the threshold are footnoted on each card.
Why rates
Raw failure counts would put the biggest launchers at the top regardless of reliability: SpaceX would lead the table because it launches the most, not because it’s unreliable. Rates with a sample-size threshold answer the actual question (“who fails most per attempt, given enough attempts to mean something”).
Failure modes
Counts come from a separately-curated failure_events table; each event is tagged with one of a small controlled vocabulary (first-stage anomaly, upper-stage anomaly, stage separation, fairing separation, guidance/control, engine ignition, pad anomaly, range safety, payload deployment, unknown). LL2 doesn’t carry this detail; it tells me a launch failed, not what failed. The vocabulary is fixed in code so cross-event totals are comparable.
Recent failures
Editorial table. Each entry has a primary source URL, source name, source date, and a confidence indicator (confirmed / reported / disputed). I do not republish source articles; I summarise and link. When sources disagree on whether something was a failure, partial failure, or success, the entry is flagged ‘disputed’ with a notes line.
Window effects
Counts on this page use rolling windows (12 months for the trajectory, 24 months for the breakdowns) rather than program lifetime. They will diverge from program-lifetime counts published elsewhere whenever a vehicle’s early flights pre-date the window. A rocket that failed twice during a development campaign five years ago reads as clean here once those flights age out, which is the intended behaviour for a question about current reliability but is not the same claim as a lifetime record. Note that Starship, the example that used to sit here, is now excluded outright as a test campaign rather than merely falling outside the window; see Excludes above.
Limitations
“Partial failure” is a subjective designation, curated by the LL2 community. Reasonable people would code some borderline cases differently. The trajectory’s history is only as deep as the LL2 backfill; if backfill is incomplete, the chart starts at the first month with a complete 12-month window.
License
Attribution required

Active satellite operators

Distinct named satellite operators identified by satellite naming patterns in the CelesTrak active catalog. Satellite operators run the fleets in orbit, distinct from launch providers, which fly the rockets.

Source
CelesTrak GP catalog (same fetch as Active satellites)
Includes
Satellite operators with a recognizable name prefix in OBJECT_NAME (e.g., STARLINK, ONEWEB, PLANET)
Excludes
Smaller and government satellite operators whose satellite names don’t follow a consistent prefix pattern
Limitations
This is a coarse undercount. The pattern list is hand-curated and biased toward satellite operators with large, named constellations.
License
Attribution required

Constellations directory

A directory of the constellations currently in orbit (one row each, grouped by operator), joining a hand-curated catalog to live CelesTrak fleet counts and GCAT activity. Satellite operators run the fleets, distinct from launch providers, which fly the rockets.

Definition
Each row is one constellation; an operator can run several (e.g. Eutelsat fields OneWeb in low orbit and a separate GEO fleet), and each is shown as its own row so its counts and deployment math are honest. I curate the operator’s identity (name, country, ownership) and each constellation’s activity tags, status and planned fleet size, then join at request time to live active counts and to deploys/deorbits so far this year.
Source: active counts
CelesTrak GP catalog, GROUP=active (the same fetch as the Active satellites metric). A satellite is attributed to a specific constellation by matching its OBJECT_NAME against a hand-curated set of name-prefix patterns, each tagged with its operator and constellation.
Source: deploys / deorbits this year
Jonathan McDowell’s GCAT (satcat.tsv). Deploys this year = payloads with a launch date in the current calendar year matching the constellation; deorbits this year = payloads with a decay date this year. Net YTD is deploys − deorbits.
Source: catalog fields
Operator identity, activity tags, status, one-line context, primary/secondary rocket and planned fleet size are hand-curated in src/lib/operator-catalog.ts. Every planned-size figure carries a source URL (source-URL-per-claim); where there is no clean, citable single target the planned size is left blank rather than estimated.
Operator attribution
Name-prefix matching, cross-referenced against the GCAT owner field when a constellation’s CelesTrak names don’t reveal the operator. The clearest case is China SatNet’s Guowang: its satellites are catalogued as ‘Hulianwang Jishu Shiyan’ (satellite-internet technology test) / ‘HJS’, not ‘Guowang’, so I attribute them by owner. They are officially designated test satellites widely assessed as Guowang pathfinders; folding them in is a judgment call, flagged here. For the GCAT-derived deployment and fleet-age series specifically, where GCAT lists a satellite under a nickname (GHGSat flies ‘Iris’ and ‘Hugo’, not ‘GHGSat-C1’), attribution falls back to GCAT’s formal program designation (PLName); the primary name is tried first, so hosted payloads stay with their host operator.
Coverage
The catalog is curated, not exhaustive: 91 operators covering every constellation whose CelesTrak names can be reliably attributed, plus pre-launch operators with a publicly stated plan. A long tail of cryptically-named one-off payloads, rideshare deployment tags, and classified satellites (e.g. NRO USA-###) cannot be attributed from names and remains in the Unmatched bucket, surfaced on the page with its top name prefixes.
Operators running several constellations
17 operators run more than one constellation, and the profile page is one page per operator. Every FIGURE on it is scoped to a single constellation, selected at the top; only identity, name, owner, country, description, describes the company. Adding an operator's constellations together produced numbers that described none of them: Eutelsat reported 679 active satellites against OneWeb's 648-satellite target, one average fleet age for a 4.6-year-old low-orbit fleet and an 8.5-year-old geostationary one, and a deployment curve starting in 2000, two decades before OneWeb existed. The all-fleets overview therefore carries only figures that survive being added, total active, net change, the orbit bands in use, plus a table comparing the fleets; a planned target, an average age, an operational rate, a launch-concentration score and a deployment curve all sit behind the selector. Where the curated primary/secondary rocket (an operator-level field) would describe the wrong fleet, the vehicles that actually carried that fleet are shown from the GCAT launch record instead.
Status & planned size
Status is per constellation, operational (active fleet, still deploying), mature (steady-state / replenishment only), building (deploying toward a target), or pre-launch (no active satellites yet, but a stated plan). Deployment % is the constellation’s active count ÷ its own planned size, so multi-constellation operators no longer mix orbits in one bar (Telesat’s mature GEO fleet and its pre-launch Lightspeed constellation are separate rows). For a mature constellation a planned figure may still sit below the active count (replenishment).
Fleet age & last launch
Average age and last-launch date are computed from GCAT launch dates over each operator’s GCAT-active set, payloads matched to the operator that have a launch date and no recorded decay date. This GCAT-defined active set differs slightly from the CelesTrak active count shown in the Active column (different catalogues, different update cadence), so average age is a fleet-level approximation, not a figure derived from the exact satellites counted as active. GCAT catalogues new payloads days-to-weeks after they fly, which would leave last-launch showing the previous flight; so where Launch Library 2 records a successful launch this year that is newer than GCAT’s date, matched to the constellation by mission name, the same best-effort rule as Next launch; that later date is shown instead. Failed launches don’t count: they deploy nothing, which is also what GCAT’s payload-derived date means. Average age still uses GCAT alone, so immediately after a launch the last-launch date can be fresher than the fleet the age is computed over.
Primary orbit
The representative orbit is the median altitude across the operator’s active satellites, derived from each satellite’s CelesTrak mean motion via Kepler’s third law (semi-major-axis altitude; for eccentric orbits this is the average altitude). Binned as LEO (<2,000 km), MEO, GEO (~35,786 km) or HEO.
Next launch
Best-effort, from the Launch Library 2 upcoming manifest. An upcoming launch is attributed to an operator only when its mission name carries the constellation prefix (e.g. ‘Starlink Group …’), so it appears mainly for the major named-mission constellations and is hidden elsewhere. NETs slip routinely; this is the operator’s current target date, not a commitment.
Filtering & sorting
Filters apply in the browser over the loaded rows (no refetch); selections are encoded in the URL so a filtered view is shareable. Region is derived from the operator’s country: US, China, EU/ESA (the 22 ESA member states, broader than the EU; includes the UK, Norway, Switzerland), or Other (everything else, including Russia). Orbit class (LEO / MEO / GEO) is the constellation’s median-altitude regime. Launch provider is parsed from the curated primary and secondary rocket fields, so it reflects the operator’s usual launchers and is approximate for multi-constellation operators. Within a category, selections are OR; across categories, AND.
Limitations
Active counts reflect CelesTrak’s ‘active’ classification, which can lag operator-confirmed status. Attribution is only as good as the name patterns and the GCAT owner data; mis-prefixed satellites are undercounted. Planned sizes are point-in-time figures from the cited source and drift as operators re-file. Average age uses the GCAT-active set (see above). Next-launch coverage is limited to constellations whose mission names carry a recognizable prefix. Values are computed live at fetch time; the directory does not yet show captured history, so step-changes from later methodology updates aren’t yet visualized.
License
CelesTrak: attribution required. GCAT: Creative Commons CC-BY (J. McDowell, planet4589.org/space/gcat). Launch Library 2 (TheSpaceDevs): attribution required. Operator planned-size figures are attributed per claim to their original source.

Deorbits (12 months)

Payload re-entries to Earth’s atmosphere over the trailing 365 days.

Source
Jonathan McDowell’s GCAT (satcat.tsv)
Includes
Objects classified as payloads (Type starts with P, excluding PD payload-debris fragments) with a decay date in the last 365 days
Excludes
Rocket bodies, debris fragments, components
Trajectory
Annual count of payload re-entries from 2015 to the current year. Each bar is one calendar year of decays from the same GCAT satcat dataset. Pre-2015 entries are excluded so the chart focuses on the modern (mega-constellation era) cadence, earlier history exists in GCAT but the bars would be small enough to read as noise next to recent years.
Breakdowns
Three cuts over the trailing 365 days: by operator (name-prefix matching against the GCAT object name, same patterns as the homepage operators chart), by country (state of registration per GCAT, ISO-3166-like codes mapped to readable names for the most common entries), and by age at decay (binned: <1 year, 1–3, 3–5, 5–10, 10+). Age at decay is computed from GCAT launch date minus decay date. GCAT preserves original state of registration; pre-1991 USSR satellites are not reassigned to Russia even if they decay decades later; that line in the country breakdown is Cold War orbital leftovers being cleaned up by atmospheric drag.
Limitations
I don’t distinguish intentional deorbit from natural decay or end-of-life passivation; GCAT doesn’t encode cause. The number bundles all three. Operator coverage is limited to the named-pattern set; smaller fleets and most government satellites fall through and show only in the country breakdown. Age at decay excludes any decay whose launch date is missing or unparseable in GCAT (rare in modern entries, more common in pre-1960s history).
License
Creative Commons CC-BY

Launching nations

Annual orbital launch activity since 1957, credited to the nation whose organisation operated each launch.

Source
Jonathan McDowell’s GCAT: launch.tsv for the launches, satcat.tsv for the payloads they carried, and orgs.tsv to resolve each launch’s operating agency to a state.
Includes
Every orbital launch attempt, successful or not. Mass and payload counts are taken from successful launches only, since a failure delivers nothing.
Excludes
Suborbital flights, missile tests and sounding rockets. Payload-debris fragments are excluded from payload counts.
Attribution
A launch is credited to the nation where its operating organisation is registered, not the country it lifted off from, and not the owner of the cargo. A Soyuz from Baikonur is a Russian launch rather than a Kazakh one. Where a provider runs national subsidiaries, GCAT assigns them separate agency codes and they are counted separately: Rocket Lab’s flights from Māhia are New Zealand, its flights from Wallops are American.
Soviet Union and Russia
Reported as two separate series and never merged. GCAT records them as distinct states, so the 1991 break comes from the source data rather than a cut-off date applied on top of it. Soviet-era launches are never reassigned to Russia.
Europe
Launches operated by ESA, its predecessor ELDO, and European national programmes. Arianespace is French-registered, so France carries most of the volume. Russia is excluded. This measures European launch activity, not European satellites; Ariane carries a great deal of non-European cargo, and European operators fly a great deal on American rockets.
Megaconstellation filter
Payload counts can optionally exclude Starlink, OneWeb, Kuiper, Qianfan and Guowang. This is a named, curated list rather than a size threshold: a threshold would silently change which constellations qualify from one year to the next and make an older chart impossible to reproduce. It applies to payload counts only; launches and mass are undistorted, because a stack of sixty satellites is still one launch. Roughly half of every satellite ever launched belongs to those five constellations, so a national comparison of payload counts is close to meaningless without it.
Smoothing and partial years
An optional three-year centred average is available on the per-year view only; it is meaningless on a running total, so it is disabled there. The current year is a partial year: it is shaded on every chart, excluded from every smoothing window, and can be removed entirely with a toggle. A running total always accumulates from 1957 even when the visible range starts later, so narrowing the range never restarts the count.
Limitations
Attribution depends on GCAT’s agency-to-state mapping; a small number of launches carry an agency code with no state recorded and fall into “rest of world”. A few catalogued payloads cannot be traced back to a successful orbital launch and are excluded from payload counts. Multinational launches are credited to the primary operating agency only. GCAT is hand-maintained, so the most recent weeks can lag.
License
Creative Commons CC-BY

Fleet status

The operational status of every payload currently in Earth orbit, reported separately for each orbit band.

Source
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.
Includes
Objects CelesTrak types as payloads (OBJECT_TYPE = PAY) with no decay date recorded, i.e. still on orbit.
Excludes
Rocket bodies, debris, and any object with a decay date. Status code D (decayed) is excluded by the same rule.
Status codes
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.
Blank is not dead
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.
Denominator
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.
Orbit bands
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.
Why bands are never combined
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.
Per-constellation comparison
On a profile page, the status mix shown is that of the CONSTELLATION selected, compared against all satellites in the same orbit band, never against fleets in other bands, and never against a fleet-size peer group. Scoping to the constellation rather than the operator matters wherever an operator runs more than one: Eutelsat's OneWeb fleet is 99.1% operational while its geostationary fleet is 52.5% non-operational, and the merged figure reported the first as if it described both. A fleet occupying more than one band gets one table per band, largest first, a satellite stranded in a transfer orbit or moved to a graveyard genuinely sits elsewhere, and folding it into the main table would hide it. Satellites are attributed by the same name-prefix patterns used across the site, which resolve to an operator AND one of its constellations; unattributed satellites still count toward global and per-band totals.
History
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.
Limitations
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.
License
Attribution required

Constellation buildout

How far the world’s flying satellite operators are toward their announced fleets, planned vs in orbit, plus the launches, years and third-party launch-market cost still ahead. Buildout only: the one-time launches to reach the targets, not the recurring launches that replace satellites at end of life.

Definition
Buildout = active ÷ planned, summed across the constellations whose operator is actually flying, status operational, mature or building AND at least one satellite in orbit. That gate excludes paper filings (E-Space, Reflect) and pre-launch constellations (Telesat Lightspeed) until they start deploying. Planned fleet sizes are hand-curated with a source per figure; active counts come from CelesTrak.
Which target we count
Planned = the operator’s announced / licensed operational target, NOT its maximal speculative ITU spectrum filing. For US operators that’s the FCC-authorised system: Starlink 15,000 (its Gen-2 licence as of Jan 2026, not the ~42,000 it has filed at the ITU); Amazon Leo 3,236 (the Gen-1 licence it’s deploying). For others it’s the declared full-system size: Guowang 12,992 as filed with the ITU, which is China SatNet’s stated system with no separate lower licence. Using the licensed figure keeps the buildout gap tied to what’s actually being built, not to spectrum placeholders.
Launches needed
Remaining satellites (planned − active, floored at zero) ÷ each constellation’s dedicated-launch batch size, summed across the biggest dedicated-launch constellations only. Batch sizes are hand-curated from demonstrated flights with a source, NOT read from the GCAT join; the join reports ~1 satellite per launch for Guowang (messy naming) and ~3 for rideshare operators, which would invent tens of thousands of phantom launches. Rideshare and small operators, which don’t buy dedicated launches, are excluded from the launch count entirely.
Third-party launch market
For the dedicated-launch constellations that BUY launches on the open commercial market, launches-needed × the list price of the rocket they use (launcher catalog). Excludes vertically-integrated launches (SpaceX flies its own Starlink) and state launches (China’s national megaconstellations on state rockets), which aren’t market transactions. Shown at list prices as an order-of-magnitude figure; real contracts are negotiated below list. The single biggest uncertainty is fairing-limited batch sizes (AST SpaceMobile).
Years at today’s pace
Remaining ÷ the most recent full calendar year’s net fleet growth (year-end active minus the prior year-end, across the flying operators). A rough runway, not a forecast; it assumes today’s deployment rate holds.
Buildout, not replenishment
These count only launches that GROW a fleet to its announced target, a finite, one-time buildout. They exclude replenishment: the recurring launches that REPLACE satellites at end of life (~5 years in low orbit). A mature constellation like OneWeb reads ‘complete’ here even though it keeps launching to stay alive; Eutelsat’s 440 next-gen OneWeb satellites are replenishment (they keep the fleet at ~648, not grow it) and don’t count. For the same reason the “Biggest gaps to close” bars rank by how many satellites are still to deploy, not by fleet size; a constellation that has reached its target has no gap and drops out of that list even though it is still launching. Replenishment is a separate, larger, recurring market we may track later.
Year-by-year chart
Satellites in orbit at each year-end for the flying operators, reconstructed from GCAT launch and decay dates (real back-history, available now). The announced target is today’s figure, shown flat; planned sizes are curated as-of-now with no history. The current year is a partial (YTD) bar. A finer captured-historical series accrues forward from daily snapshots (data_snapshots) and layers in over the coming months.
Limitations
Everything is computed at today’s capabilities: current rockets, batch sizes and list prices; heavier lift (Starship, New Glenn) would compress launches, years and cost. Announced fleet sizes are operator aspirations, not commitments, and many will change. The totals tend to RISE over time as more constellations reach operational status and operators announce new targets, even as today’s are filled in, so a step up isn’t necessarily real-world growth. Batch sizes and the third-party market classification are curated judgment calls, documented in the code.
License
Computed by Open Orbit. Underlying data: CelesTrak (attribution) + GCAT (CC-BY).

Cargo utilization (12 months)

For each rocket family, how close its LEO flights come to that family’s own demonstrated best payload, a measure of how consistently it flies near-full, not a cross-rocket efficiency ranking.

Source
Jonathan McDowell’s GCAT. Payload mass and launch vehicle from launch.tsv; each launch’s orbit is classified by joining to its catalogued payloads in satcat.tsv via Launch_Tag and reading OpOrbit.
Definition
For each LEO launch, fill = payload mass ÷ the family’s peak. A family’s score is the mean fill across its launches in the trailing 12 months; the global figure is the mean across every scored launch.
Peak
A family’s “demonstrated best” is the 95th-percentile payload mass it has carried to LEO over the trailing 24 months, not the single heaviest flight (one freak overloaded launch could set an unreachable ceiling) and not an all-time figure (which would hold a retired vehicle’s record against current flights).
Why self-referential
Comparing actual mass to a rocket’s published maximum-to-LEO capacity would punish vehicles that fly high-inclination or high-altitude orbits, because published capacity is quoted to a low reference orbit. Scoring each family against its own demonstrated ceiling removes that orbit-mix bias.
Reading the leaderboard
Each family is measured against its own ceiling, so the leaderboard is a consistency measure, how reliably a family flies near-full, not a claim that one rocket is more efficient than another. A higher % is not “better”; it means a family’s flights cluster more tightly near its own demonstrated best.
Internal vs commercial
I show two figures. “Commercial-only” excludes internal logistics, launches where the launch provider also operates the payload. In v1 this is a curated rule covering the only material case, SpaceX flying Starlink. The split matters: Starlink flights fly near-full by design and dominate launch volume, so the all-launches figure would otherwise mostly describe Starlink.
Includes
Successful orbital launches (GCAT LaunchCode = OS) classified as LEO, in the trailing 12 months, for families with at least 5 such launches.
Excludes
Non-LEO launches (GTO, MEO, GEO, deep-space), families below the 5-launch threshold, and very recent launches whose payloads are not yet catalogued with an orbit.
Limitations
GCAT records small payload masses coarsely (rounded to roughly 100 kg), so small-launcher peaks may read low and their fill rates correspondingly high; Electron is the main case. The rolling 24-month peak moves over time, so a family’s % is not directly comparable year-over-year. The internal/commercial split is a curated v1 approximation, not a general operator-vs-provider computation.
License
Creative Commons CC-BY

Watchlist

A hand-picked list of early-stage space players: filed constellations, pre-orbital / R&D rockets, and new satellite platforms, that are real enough to track but too early to catalogue as a live operator or launch provider. Each entry joins the live catalogs the moment it clears the bar.

Definition
An entry is on the watchlist if it is an announcement, filing, or tech demo with no established flying operation and no concrete near-term deployment. Three kinds: a filed constellation (a spectrum filing / stated plan, no active satellites yet); a pre-orbital or R&D rocket effort (a hop test, a reusable-booster prototype, a failed maiden flight); and an early satellite-platform or other company that fits neither the operator nor the launch-provider catalog.
Source
Entirely editorial and hand-curated in src/lib/watchlist-catalog.ts. Every entry carries a primary source link; the “latest”, “next” and funding figures are the companies’ own stated numbers, summarised, not independent estimates. The only live input is the CelesTrak active count for a filed constellation, used to detect when it joins the catalog (see below).
Joining the catalogs
A filed-constellation entry is also held in the operator catalog and hidden from the Constellations directory while its active satellite count is zero. The moment CelesTrak reports satellites matching it, its count rises above zero and it moves to Constellations automatically; dropping off the watchlist in the same step. The display location is decided live by the data; the catalog entry never changes. Rocket and platform entries join the catalogs by editorial judgement (an orbital flight, a concrete constellation) into Launch providers or Constellations.
Includes
Companies and programs with public, sourceable activity but no orbital track record yet, deliberately kept off the live catalogs so those stay a record of what is actually flying or concretely deploying.
Excludes
Anything already flying or concretely deploying (that lives in Constellations or Launch providers), and speculative efforts with no sourceable activity. Some pre-launch names that do clear the bar: Reflect Orbital and Open Cosmos (concrete constellations), Skyroot (a company-level launch provider); sit in the live catalogs, not here.
Limitations
The list is intentionally small and selective, not exhaustive; it reflects editorial judgement about who is worth watching, and dates / figures can lag fast-moving early-stage companies. The automatic move to Constellations only fires if a filed constellation’s eventual satellite names match its pre-registered pattern; the first launch may need a one-time pattern tweak if the real object names differ.
License
Editorial: sources cited per entry

Launch providers directory

A directory of the companies and agencies flying rockets to orbit (one row each, click to expand to the rockets in their fleet), joining a hand-curated catalog of providers and rockets to live launch counts, success rates, mass to orbit and cargo economics. Launch providers fly the rockets, distinct from satellite operators, who run the fleets in orbit.

Definition
Each row is one launch provider; expanding it shows the rockets in its fleet. I curate the provider’s identity (name, parent company, country, ownership) and each rocket’s specs (lift class, reusability, status, orbit reach, payload to LEO, published list price), then join at request time to live launch activity.
Source: launches
Launch Library 2 (TheSpaceDevs), /launch/previous/ for the current year, the same fetch the homepage and /launches use, so the totals reconcile. Launches YTD is a provider’s share of that count; share of global launches is the provider’s count ÷ all orbital launches this year.
Source: success rate
My historical launch record (Launch Library 2, backfilled into Supabase); the same data behind /failures. Success rate is 1 − the failure rate over the trailing 24 months. Providers with fewer than 5 launches in the window are flagged as a small sample (asterisk), because a single failure would otherwise swing the rate wildly. Development test campaigns are excluded here too, inheriting the same named list /failures uses: SpaceX’s rate reflects its operational fleet and leaves Starship’s test flights out of both the numerator and the denominator.
Source: mass to orbit
Jonathan McDowell’s GCAT (launch.tsv), the same dataset behind /mass-to-orbit. Mass YTD is the payload mass a provider has delivered to orbit this year; share of global mass is that ÷ the year’s total.
Source: catalog
Provider identity, ownership, one-line context, notable customers and every rocket’s specs are hand-curated in src/lib/launcher-catalog.ts. Western vehicles cite manufacturer spec pages; non-Western and commercial figures are often public estimates with no official spec sheet; those are flagged with an asterisk pending a source-by-source verification pass.
List price per kg
Sticker price at full capacity, a rocket’s published list price ÷ its advertised maximum LEO payload. This is NOT what any single customer pays: real missions rarely fill the rocket to its LEO maximum, and rideshare or marginal pricing differs. A row shows its cheapest rocket’s figure. Coverage is partial by design; most state providers don’t publish a price, so their $/kg reads ‘not published’ rather than a guess.
Orbit reach
Each rocket is tagged with the orbit regimes it can deliver to: LEO, MEO, GEO, or Beyond (lunar / interplanetary / escape), from demonstrated capability, or design intent for in-development vehicles. Curated.
All orbits vs LEO
Read the denominators carefully. Launches, share of launches, success rate and mass to orbit count ALL orbits, a GEO comsat or an interplanetary probe counts the same as a LEO Starlink batch. $/kg, payload-to-LEO and cargo utilization are LEO-specific, because LEO is the standard reference orbit for comparing capability and cost. So a row’s all-orbit ‘Mass’ and its LEO-only ‘$/kg’ are not the same denominator; the orbit-reach tags on each rocket show where it actually flies.
Provider attribution
Launch data arrives keyed by provider, but the three sources name the same provider differently, so I normalize each to one catalog key. The biggest correction is CASC: GCAT splits China’s Long March family across its academies and subsidiaries (CALT, SAST, CGWIC, Changzheng, China Rocket Co.), which I fold back into CASC so its launch and mass totals aren’t undercounted; the launch-provider analog of the Guowang attribution on /constellations. Roscosmos similarly absorbs its VKS, Khrunichev and RKK Energiya designations; JAXA folds in Mitsubishi Heavy (the H3 operator); ISRO folds in its commercial arm NSIL.
Coverage
The catalog covers every provider with an orbital launch since 2023: 26 providers, roughly 97% of this year’s launches. Launches by an uncatalogued provider show in the page’s ‘Not yet catalogued’ row so the coverage figure stays honest.
Notable customers
A curated, marquee list per provider, cross-linked to /constellations where the customer is a satellite operator I track. It’s editorial, not a complete manifest; a live ‘top customers this year’ derivation is planned but not yet wired.
Filtering & sorting
Filters apply in the browser over the loaded rows (no refetch) and are encoded in the URL so a filtered view is shareable. Lift class, reusability and rocket status match a provider when ANY of its rockets qualifies; ownership and region are provider-level. Region is derived from the provider’s country: US, China, EU/ESA (the 22 ESA member states) or Other (everything else, including Russia). Within a category, selections are OR; across categories, AND.
Limitations
Many payload and price figures are public estimates, not official specs (flagged with an asterisk). List price ÷ max-LEO is a capability-normalized sticker price, not a transaction price. Lift class is curated from demonstrated payload and can sit on a boundary. Success rate uses a rolling 24-month window, so it diverges from program-lifetime figures elsewhere. The scheduled-ahead count is best-effort from LL2’s near-term manifest, not a full backlog. Values are computed live at fetch time; the directory doesn’t yet show captured history.
License
Launch Library 2 (TheSpaceDevs): attribution required. GCAT: Creative Commons CC-BY (J. McDowell, planet4589.org/space/gcat). Rocket specs, list prices and customer lists are curated and attributed per claim to their original source.

Active launch providers

Distinct launch providers that have successfully reached orbit at least once in the trailing 12 months. Launch providers fly the rockets, distinct from satellite operators, who run the fleets in orbit.

Source
My historical launch record (Launch Library 2, backfilled into Supabase historical_launches); the same data behind /failures, so this hero adds no new API calls.
Definition
A provider counts if it has at least one launch in the trailing 365 days with a successful outcome. Test failures and partial failures don’t make a provider ‘active’.
Includes
Successful orbital launches only.
Excludes
Failed and partial-failed launches, and suborbital flights (Blue Origin’s New Shepard tourism hops, Virgin Galactic, and similar); a provider must actually reach orbit to count.
Folding
Provider names are normalized to the same launcher catalog /launch-providers uses, so one agency isn’t counted several times: Roscosmos absorbs its VKS, Khrunichev and RKK Energiya designations; CASC absorbs China Rocket Co.; JAXA absorbs Mitsubishi Heavy. A provider not in the catalog (e.g. a one-off NASA SLS flight) is not counted here.
Comparison
The change is this 12-month count minus the same count for the prior 12 months (365–730 days ago), shown as ‘+N vs same date last year’, ‘−N vs same date last year’, or ‘no change’. Both windows are anchored to today, so it’s a like-for-like trailing-year comparison.
Reconciliation
This is intentionally smaller than the ‘providers tracked’ figure on /launch-providers. That page counts the full curated catalog, including in-development and test-campaign providers that haven’t had a successful orbital flight in the last year; this hero counts only the subset that actually reached orbit in the trailing 12 months.
Limitations
Coverage is only as complete as the launcher catalog (which covers every provider with an orbital launch since 2023); a brand-new provider’s first success wouldn’t count until it’s added to the catalog. The suborbital exclusion is a curated vehicle list and could miss an obscure suborbital vehicle. The count shifts through the year as launches happen and as the trailing window slides.
License
Attribution required

Recently launched (homepage feed)

A live feed of the latest orbital launches on the homepage: who flew, on what, and whose satellites went up. It reuses data already on the site rather than adding a new source.

Source
Launch Library 2 (TheSpaceDevs) for the freshest launches; the same /launch/previous/ fetch /launches uses, merged with GCAT (J. McDowell) for the satellite count and orbital payload mass. No new external fetch: the feed composes caches the rest of the site already maintains.
How
GCAT’s launch catalog is the spine (date, provider, vehicle, mission, mass). The satellite count comes from joining GCAT’s satellite catalog on each launch’s Launch_Tag. Launches GCAT hasn’t catalogued yet, typically the last few days; are filled in from Launch Library 2 and shown in a ‘pending’ state until GCAT’s count and mass arrive.
Operator attribution
The satellite operator is a best-effort match of the mission name against the same operator patterns /constellations uses. It resolves recognizable constellations (Starlink, Qianfan, Kuiper, Galileo, Yaogan…) reliably; a generic or government mission shows its mission name instead of an operator.
Includes
Successful orbital launches in roughly the last two months, newest first. The ‘Distinct’ toggle collapses to one launch per provider; ‘Everything’ shows each launch.
Excludes
Suborbital flights, and, for the count and mass only, launches GCAT hasn’t catalogued yet (shown as pending, not dropped).
Limitations
Operator matching is best-effort and can miss a launch whose mission name doesn’t reveal its operator. Provider and vehicle names are normalized for readability (CASC subsidiaries shown as ‘CASC (China)’; ‘Chang Zheng’ shown as ‘Long March’). The length of the pending window depends on GCAT’s cataloguing cadence.
Reconciliation
This feed presents data already published elsewhere; launch counts reconcile with /launches (same Launch Library 2 source) and operator names with /constellations (same operator catalog). It introduces no new headline metric.
License
Launch Library 2 and GCAT (CC-BY): attribution required; see the sources below.

Launch concentration (HHI)

How dependent a constellation is on a single launch provider, on a 0–1 scale: 1.0 means every satellite flew on one provider (total lock-in); lower means the operator spreads its launches across more providers.

Definition
The Herfindahl-Hirschman Index, borrowed from market-concentration analysis: the sum of the squared launch-share of each provider. If a provider carried a fraction s of the operator’s satellites, the index is Σ(s²) across providers.
Source
Computed by Open Orbit from GCAT: a join of the satellite catalogue (which satellites, by Launch_Tag) to the launch catalogue (which rocket and provider flew each Launch_Tag). No new external fetch; both files are already ingested for other metrics.
Includes
Every catalogued satellite of the operator that we can attribute to a launch since 2014 (covers every constellation we track). Providers are folded to their parent (e.g. ULA’s Atlas V and Vulcan both count as ULA) so the index measures reliance on a company, not a vehicle.
Excludes
Satellites whose launch falls outside the indexed window or can’t be matched to a catalogued launch. The rocket-mix bar shown alongside groups by vehicle family; the index itself groups by provider.
Limitations
This is a descriptive supply-chain measure, not a quality judgement; high concentration is not inherently bad, and a diversified index is not inherently good. It reflects launches flown to date, so it lags an operator’s forward contracts (a provider under contract but not yet flown does not lower the index).
License
Original Open Orbit analysis. Underlying data from GCAT (J. McDowell, planet4589.org/space/gcat), CC-BY.

Deployment trajectory

The net number of an operator’s satellites active in orbit over time, reconstructed month by month, and, where a constellation faces a fixed regulatory deploy-by-date mandate, the straight-line pace it would need to hold to reach that milestone.

Source
Computed by Open Orbit from GCAT satellite launch and decay dates. Each month adds the satellites launched and subtracts those that decayed, accumulated into a running net-active count.
Required-pace line
Drawn only when an operator has a structured “deploy N satellites by date D” milestone in our curated regulatory data, a national-license condition (e.g. an FCC NGSO milestone) or an ITU bring-into-use deadline tied to a spectrum filing. It is a straight line from the series start to the target; the constant rate needed to hit the mandate, not a forecast.
Needed math
“Launches needed” divides the satellites still required by the operator’s own historical average batch size (satellites ÷ attributed launches). It is an order-of-magnitude aid, not a schedule; real batch sizes vary by vehicle.
Excludes
No modelled completion date or projected endpoint is shown; only the reconstructed history and, where applicable, the required-pace reference line and remaining-work arithmetic.
Limitations
Net-active is reconstructed from GCAT’s dated records and may differ slightly from the live CelesTrak active count (different catalogues, update cadence). Regulators have historically granted milestone extensions and waivers; the pace line reflects the license condition as written, not any ruling.
License
Original Open Orbit analysis. Underlying data from GCAT (J. McDowell, planet4589.org/space/gcat), CC-BY.

Launch cadence

How often a launch provider flies, orbital launches per quarter (with failures highlighted) and the average number of days between consecutive launches over the last 12 months, versus the 12 months before.

Source
Computed by Open Orbit from our historical_launches record (Launch Library 2 status codes, stored in Supabase). Providers are folded to their catalogue parent (normalizeProvider), so a company’s subsidiaries count as one.
Includes
Every orbital launch attempt attributed to the provider, successes and failures both. The quarterly bar splits each quarter into successful and failed attempts; the interval counts all attempts, since a failed launch still consumes cadence.
Interval
The mean gap in days between consecutive launches whose dates fall in the trailing 12 months, compared to the same figure for the 12 months before. Requires at least two launches in a window; otherwise the interval is omitted rather than guessed.
Excludes
Suborbital flights are already absent from historical_launches. Scheduled/future launches are not counted; cadence reflects flown history only.
Limitations
For low-volume providers a single launch shifts the interval sharply, so the trend is most meaningful for high-cadence providers. Direction is described plainly (accelerating / slowing / steady); a shorter interval is not framed as inherently good.
License
Original Open Orbit analysis. Launch records via Launch Library 2 (TheSpaceDevs), attribution required.

Customers & exclusive customers

The satellite operators a launch provider has flown, and how many fly exclusively with it, derived from the GCAT launch↔satellite join. A best-effort floor: it sees only operators tracked in the Open Orbit catalogue, not every payload a provider has ever launched.

Source
Computed by Open Orbit by joining GCAT’s satellite catalogue (each payload’s launch tag and owner) to GCAT’s launch catalogue (each launch’s provider). A satellite counts as a provider’s customer when the operator that runs it is one of our ~90 catalogued constellations; the launch that carried it resolves to that provider. Providers are folded to their catalogue parent (normalizeProvider), so subsidiaries count once.
Tracked customers
The count of distinct catalogued operators the provider has launched at least one satellite for, across the GCAT launch record from 2014 on (the window our launch↔satellite index covers). It is descriptive, not a ranking.
Exclusive customers
A tracked operator whose entire flight history in that 2014-on window, across every provider we track, is with this one provider, and which is actually operating. Operators still classified as pre-launch or on the watchlist (“filed, not yet flying”) are excluded: their only flights are demonstrators, and a demonstrator isn’t a customer relationship. They still appear in the launches-by-customer breakdown, which is a factual record of who flew. Vertically integrated pairs (an operator and provider sharing a parent company, e.g. Starlink and SpaceX) are still counted but tagged “in-house”, so self-launch isn’t misread as captive third-party demand.
Excludes
Rideshare smallsats, one-off, university, government and any payload whose operator isn’t in our catalogue. Suborbital flights. Because untracked providers are dropped from the join, an operator that also flew on a provider we don’t track can appear exclusive when it isn’t; this is why the figure is presented as a floor.
Limitations
Coverage is only as complete as the operator catalogue, which is biased toward large named constellations, so the customer count understates a provider’s true book and the exclusive count is an upper bound within the tracked set. Attribution inherits the same name/owner-matching limits as the constellation counts. The window starts in 2014, so a provider a customer used only earlier (e.g. Globalstar’s pre-2014 Soyuz flights) doesn’t count against its exclusivity today.
License
Original Open Orbit analysis. Underlying data from GCAT (J. McDowell, planet4589.org/space/gcat), CC-BY.

Launches by site

Where a launch provider flew from over the last 12 months, counted by launch site, a straight tally from the GCAT launch record.

Source
GCAT launch catalogue (planet4589.org). Each orbital launch is attributed to its provider, folded to the catalogue parent, so CASC’s academies (CALT, SAST…) count as one, and to its launch site, over the trailing 12 months.
Includes
Successful orbital launches in the last 365 days. Sites are folded to a single readable name, Vandenberg’s several pad designations count as one Vandenberg; and the launching provider is credited even for leased or foreign ranges.
Site names
GCAT records sites by terse code (CC, JQ, VSFBS); I map the codes that appear to readable names and countries from GCAT’s sites table. An unmapped code passes through as its raw code rather than being dropped. Sea-launch and mobile platforms are shown as the platform (e.g. a Yellow Sea sea-launch zone).
Excludes
Suborbital flights, and orbital launch failures; the tally follows GCAT’s successful-orbital set, the same basis as this provider’s mass and launch figures. Pad- and ascent-level detail below the site.
Limitations
A rolling 12-month window, so it shifts as launches happen and reads thin for low-cadence providers. Baikonur is shown by its physical country (Kazakhstan) though GCAT lists its operating state as Russia.
License
Data from GCAT (J. McDowell, planet4589.org/space/gcat), CC-BY.

When two metrics disagree

Two metrics on the home page can look related but show different numbers. The clearest example is the launches-YTD card and the mass-to-orbit card; they currently show different totals, and both are correct.

Launches YTD (LL2) counts every orbital launch attempt this year, including failures and deep-space missions. Mass to orbit YTD (GCAT) counts only launches GCAT codes as orbital successes that delivered measurable payload mass.

Reconstructing the gap from GCAT directly: orbital successes plus orbital failures plus deep-space successes accounts for most of it. The remaining handful reflects GCAT’s manual ingestion lag, McDowell typically catches up over the following week or two.

Neither number is more correct. They answer different questions: the launches card answers how often did we try?; the mass card answers how much did we deliver to orbit?. I show both because each is useful, and I keep the source line on each card explicit so you can see which dataset feeds which number.

The same split runs through the deep-dives: /launches uses LL2 end-to-end (header, trajectory, breakdowns, recent and upcoming) so its numbers reconcile with the homepage launches card. /mass-to-orbit uses GCAT end-to-end for the same reason. Comparing “2024 launches” across the two pages will show different totals. That is the methodology gap above, not a bug.

/failures reads the same LL2 record set as /launches but filtered to statuses 4 and 7 and divided by the same denominator, so a specific year’s failure count on /failures will line up with a derivation from /launches, never with /mass-to-orbit. The failure-event log on that page adds editorial detail (mode, outcome, source link) that LL2 doesn’t carry; the trajectory and rate breakdowns above it don’t depend on that editorial layer.

/fleet-status and the homepage active-satellite count both come from CelesTrak and still will not match, because they read different feeds of it. The active count uses CelesTrak’s GP “active” group, which CelesTrak defines as status codes +, P, B, S and X, so it counts working, partially working and standby satellites and excludes non-operational and unassessed ones entirely. Fleet status reads the full SATCAT and counts every on-orbit payload, including the roughly 1,500 CelesTrak marks non-operational and the further ~1,500 it has never assessed. The fleet-status total is therefore the larger figure by about three thousand, and the gap is precisely the two buckets the active feed leaves out. Neither is wrong: the homepage answers how many satellites are working?, fleet status answers how much is up there, and what state is it in?. A third figure, /deorbits, comes from GCAT rather than CelesTrak and counts objects that have left orbit, so it never overlaps either total, and a satellite counted as non-operational on fleet status is only counted on /deorbits once it has actually re-entered.

The homepage panel Last 7 days in space introduces no new dataset either, but one of its figures is easy to misread. Its Left orbit count is the number of payloads that dropped out of the CelesTrak catalogue over the window, whereas /deorbits counts re-entries GCAT has recorded over the trailing 12 months. Different source, different definition, so do not annualise one to compare it against the other: a satellite is removed from CelesTrak when it decays, but also when the catalogue is otherwise tidied, and GCAT records a decay on its own schedule. The panel’s Satellites up figure has the same shape, counting catalogue entries rather than GCAT-confirmed deployments. Treat both as a movement signal for the week, and the deep-dives as the settled record.

/launch-providers doesn’t introduce a new dataset; it re-cuts the same three by provider. Its launch counts come from LL2 (so they reconcile with /launches), its success rates from the same record as /failures, and its mass from GCAT (so it reconciles with /mass-to-orbit). Two things to keep straight there: launches, success rate and mass count all orbits, whereas the price-per-kg and cargo-utilization figures are LEO-only(LEO is the standard reference orbit for capability and cost), so a row’s all-orbit “Mass” and its LEO-only “$/kg” don’t share a denominator. And China’s CASC total folds together the Long March academies GCAT lists separately (CALT, SAST and others), so it will read higher than any single one of those codes. On each provider’s page, the by launch sitebreakdown counts successful orbital launches over the trailing 12 months (from GCAT), so its total deliberately won’t match that provider’s calendar year-to-date Launches figure: a different window, and a different source.

One more pair to keep straight: the homepage Active launch providers hero and the providers tracked figure on /launch-providers are different on purpose. The hero counts only providers that successfully reached orbit in the last 12 months; the directory counts the full curated catalog, including in-development and test-campaign providers that haven’t flown a success this year. The hero is a subset: “how many of the providers we track actually launched in the last year.”

Every metric refreshes once a day. When a refresh fails, the card surfaces that state, either through a stale “Updated” timestamp or a “couldn’t refresh” note, rather than silently showing an old number.

Sources & licenses

CelesTrak
celestrak.org: attribution required
Launch Library 2
thespacedevs.com/llapi: attribution required
GCAT (J. McDowell)
planet4589.org/space/gcat: Creative Commons CC-BY