open orbit
ConstellationsLaunch providersWatchlist
Launchesorbital attempts, YTD + trajectoryMass to orbittonnes deliveredFailuresrolling failure rateDeorbitsre-entriesCargo utilizationhow full rockets fly · Beta
ConceptsMethodology
Loginthe workspace
open orbit
ConstellationsLaunch providersWatchlist
Metrics
LaunchesMass to orbitFailuresDeorbitsCargo utilizationConceptsMethodologyLogin · 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. Some content, including the weekly brief, is AI-generated and may contain errors or omissions. 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.

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.
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
Includes
Status code 4 (Launch Failure) and status code 7 (Partial Failure — vehicle launched but mission compromised)
Excludes
Pad explosions before liftoff, suborbital tests, scrubbed launches, status 9 (Payload Failure) where the vehicle reached orbit but the payload misbehaved separately
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 — not program lifetime. They will diverge from program-lifetime counts published elsewhere whenever a vehicle’s early flights pre-date the window. SpaceX Starship is the most prominent example: its program record includes Integrated Flight Test 1 (April 2023) and Integrated Flight Test 2 (November 2023) as failures, but both fall outside the trailing 24 months and are not counted here. Launch Library 2 classifies them as failures; the gap is purely windowing, not a classification disagreement.
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 — roughly 85 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.
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.
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

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.
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 — about 24 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.

Weekly brief

A short narrative summary of the past week in orbit, generated on the first page view of each ISO week and then cached.

Source
The same data that powers the metric cards (CelesTrak, Launch Library 2, GCAT) plus a Launch Library 2 query for launches with a NET timestamp inside the current ISO week
How
I assemble the inputs server-side, send them to Claude via the Vercel AI Gateway, and require the model to return structured JSON with a `citations` array. The first reader of each week triggers generation; everyone after reads the saved row.
Includes
Plain-prose summary of orbital launches in the current ISO week, a headline, up to four short highlights, and a list of citations linking back to the underlying records
Excludes
Forward-looking predictions, motive guesses, news sources (planned but not yet wired), and any fact not present in the input I send to the model
Limitations
The model can still misread, misattribute, or smooth over edge cases in the input — I treat the brief as a summary aid, not a system of record. Citations are model-generated and worth a sanity check on anything you’d quote. The model name and generation date are shown on the card so you know exactly what produced it.
License
The brief text is original content I publish under the same terms as the rest of the site. The cited datasets keep their own licenses (see 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. 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.

/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 Launchesfigure — 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