← Back to live globe
UC16 · Space Debris

Space Debris Tracker

Real-time tracking of 5,000+ orbital debris objects using CelesTrak TLE feeds, SGP4 propagation, and WebGL globe rendering — colour-coded by origin event and altitude band.

5,000+

Tracked debris pieces

3

Major origin events

5 s

Position update rate

1 h

TLE cache window

Data Pipeline

📡
01

CelesTrak Multi-Group Feed

Three separate CelesTrak GP element-set groups are fetched in parallel: cosmos-2251-debris, fengyun-1c-debris, and iridium-33-debris. Each group contains NORAD-tracked TLEs for that specific debris cloud.

CelesTrak GP API3 concurrent group fetchesTLE text formatNORAD catalogue
🔁
02

API Proxy & Deduplication

A Next.js Route Handler fetches all three groups, deduplicates by NORAD ID (the Cosmos 2251 / Iridium 33 groups overlap), and returns a single combined TLE text payload with 1-hour edge caching.

Next.js Route HandlerPromise.all parallel fetchNORAD ID deduplication1 h edge cache + SWR
🔬
03

TLE Parsing & Classification

Each 3-line TLE block is parsed: NORAD ID from TLE line 1, inclination from TLE line 2. The satellite name is matched against known debris event keywords to classify origin (Cosmos, FenYun, Iridium, Other).

3-line TLE parserName-based origin classificationInclination extractionsatrec error code validation
🧮
04

SGP4 Orbital Propagation

satellite.js `twoline2satrec()` converts TLE data into a numerical state vector (satrec). `propagate(satrec, now)` then applies the SGP4/SDP4 algorithm to compute ECI cartesian position and velocity at the current UTC time.

satellite.js v5twoline2satrec()SGP4/SDP4 algorithmJ2 + drag + solar pressure
🌐
05

Coordinate Transformation

ECI coordinates are converted to geodetic (latitude, longitude, altitude above WGS-84 ellipsoid) using the Greenwich Mean Sidereal Time (GMST) rotation. Altitude band (LEO/MEO/GEO) is assigned from the computed height.

ECI → ECEF → Geodeticgstime() GMSTdegreesLat / degreesLongHeight above WGS-84
🖥
06

WebGL Globe Rendering

All debris positions are loaded into a single Three.js BufferGeometry particle system (`THREE.Points`) with per-vertex colour coding by origin event. Particles pulse via a requestAnimationFrame opacity animation. Clicking any particle raycasts to show orbital telemetry and draws a full-orbit Three.js Line directly in the globe scene.

globe.gl + Three.jsBufferGeometry particle cloudRaycaster click detectionTHREE.Line orbit track (300 pts)

Major Debris-Generating Events

🇨🇳

FenYun-1C ASAT Test

11 Jan 2007
Trackable pieces: 3,500+Altitude: 850 km

China conducted a direct-ascent kinetic-kill ASAT test against its own ageing FenYun-1C weather satellite. The hypervelocity impact at 850 km generated the largest single debris cloud in history — over 3,500 trackable pieces and an estimated 150,000 fragments larger than 1 cm. The cloud spans altitudes from 200 km to over 4,000 km and will persist for decades.

💥

Cosmos 2251 / Iridium 33 Collision

10 Feb 2009
Trackable pieces: 2,300+Altitude: 789 km

The first accidental hypervelocity collision between two intact satellites occurred over northern Siberia. The defunct Russian military satellite Cosmos 2251 struck the operational Iridium 33 commercial communications satellite at a closing speed of ~11.7 km/s. Both satellites were completely destroyed, producing two distinct debris clouds that together added more than 2,300 trackable objects to the NORAD catalogue.

🚀

Kosmos 1408 ASAT Test

15 Nov 2021
Trackable pieces: 1,500+Altitude: 485 km

Russia conducted a direct-ascent ASAT test against its own defunct Kosmos 1408 satellite, generating over 1,500 immediately trackable fragments. The debris cloud is at lower LEO altitudes (400–600 km) and decays faster than the FenYun cloud, but posed immediate conjunction risks to the ISS crew, who sheltered in their return vehicles for several hours.

Altitude Band Classification

Orbital altitude determines debris lifetime, affected assets, and long-term risk. LEO is by far the most dangerous regime due to high orbital velocity and proximity to operational crewed missions.

BandAltitude RangeDebris DensityAssets at RiskOrbital Decay
LEO200 – 2,000 kmHighestActive satellites, ISS, crewed missionsYears to decades
MEO2,000 – 35,586 kmModerateGPS, GNSS, navigation constellationsCenturies
GEO~35,786 kmLow but permanentCommunications, weather, broadcast satellitesNever — graveyard orbit required
HEO> 36,186 kmVery lowMolniya, scientific missionsCenturies to millennia

⚠️ The Kessler Syndrome

Proposed by NASA scientist Donald Kessler in 1978, the Kessler Syndrome describes a cascade scenario where orbital debris density in LEO becomes high enough that collisions generate more debris than natural decay removes — creating a self-sustaining chain reaction that renders entire orbital bands unusable.

Many researchers believe low LEO (~500–800 km) has already reached a tipping point for some debris populations. Each collision, like the 2009 Cosmos–Iridium event and the 2007 FenYun ASAT test visualised here, meaningfully increases cascade risk for all operators in the affected altitude band.

Tech Stack

📡

Orbital data

CelesTrak GP/TLE (3 groups)

🧮

Propagator

satellite.js v5 (SGP4)

🌐

Globe renderer

globe.gl + Three.js

🌑

Earth texture

NASA Blue Marble Night

Update rate

5 s position refresh

🔁

TLE cache

1 h edge cache

Framework

Next.js 16 App Router

☄️

Debris objects

5,000+ tracked pieces

Data Source

📡

CelesTrak General Perturbations (GP) Catalogue

Maintained by Dr T.S. Kelso (AMSAT), CelesTrak provides free, public access to the US Space Force 18th Space Control Squadron orbital element sets derived from the NORAD/Space Track catalogue. TLE data conforms to CCSDS OMM v2.0 and is refreshed approximately every 2 hours. Three specific debris groups are fetched for this demo: cosmos-2251-debris, fengyun-1c-debris, and iridium-33-debris.

API endpoint: celestrak.org/NORAD/elements/gp.php?GROUP={group}&FORMAT=tle