Tracker225 objects among recent launchesrecords, last-30-days group225 with six-digit numbers0 with nine-digit numberschecked 2026-10-23 11:47 UTC

The satellite catalog passed 99,999. Does your software know?

On 11 July 2026 the catalog assigned number 100000, and every object catalogued since has a six-digit number. The usable five-digit range had already run out at 69,999 (CelesTrak).

Highest satellite number among recent launchesHighest catalog number, last-30-days group

101,142. In a TLE’s five-character field, Space-Track’s Alpha-5 writes it A1142.

A TLE gives the number five characters, the third to the seventh of each line. Space-Track writes the first two digits, 10, as the letter A, so it fits.

TLE columns 3–7 in Space-Track’s Alpha-5, computed here: 10 becomes A, the last four digits stay. CelesTrak’s TLE format carries nothing above 69999 except the analyst objects in 80000–89999.

The recorded values
first recordedhighest numberfrom
11 Jul 2026100,000the corpus’s record
21 Sep 2026100,789the tracker
11 Oct 2026100,982the tracker
14 Oct 2026101,031the tracker
16 Oct 2026101,074the tracker
20 Oct 2026101,106the tracker
21 Oct 2026101,108the tracker
23 Oct 2026101,142the tracker

checked 2026-10-23 11:47 UTC · the tracker

gpconf™ is a free test kit that tells you whether your satellite software handles catalog numbers above 99,999 — built from real CelesTrak data, with every expected answer traced to its source.

Much older software can quietly lose every satellite catalogued since. gpconf has eighteen cases; below is what it found in eight libraries, each finding reported to the library’s makers.

Eighteen cases cover Alpha-5 TLEs, six- and nine-digit NORAD_CAT_ID, and OMM in CSV, JSON, XML and KVN. Every expected value traces to a recorded URL, retrieval time and SHA-256.

pip install gpconf
gpconf fetch
gpconf run --preset reference

The fetch runs once per corpus version: 46 requests to CelesTrak, about 3.2 MB, cached. Then name your library’s preset (sgp4, pyephem, satellite.js, tle.js) or point the runner at your own parser.

Test your softwareRead the story

Eight pieces of satellite software, in one-off runsOne-off runs

Each was run at one pinned version on the date shown, and every finding was reproduced on that software’s own code before it was reported.

Eight third-party parsers, each run once at a pinned version through a harness of the corpus’s own over the unmodified parser; every finding reproduced on the library’s own code before it was reported.

libraryits cases, by outcomemost serious finding
PyEphem
version 4.2.1
run 2026-09-27
7 of 18 failed
Alpha-5 fields decode to catalog number 0, silently, the elements unaffected (#296); a letter in a numeric field is read up to the letter, with no error (#297).
satellite.js
version 7.1.0
run 2026-09-27
8 of 18 failed
OMM JSON epochs are truncated to milliseconds, and the TLE catalog field is returned as a string and never decoded (#185); a letter in a numeric TLE field is read up to the letter, with no error (#190).
Gpredict
version 2.6
run 2026-09-27
7 of 18 failed
Alpha-5 fields become catalog number 0; the mean motion loses its last digit on every record (#426); a letter in the epoch field passes the set's checks and is read up to the letter (#427).
gods-eye-view
version 0.2.1
run 2026-10-03
7 of 18 failed
Every Alpha-5 satellite collapses onto one catalog entry keyed NaN and the rest are dropped as duplicates (#751); one set with a missing line drops every set after it in its group, with nothing said (#906).
SatDump
version 1.2.2 and master
run 2026-09-24
3 of 17 failed 1.2.2
5 of 17 failed master
The TLE registry silently drops every Alpha-5 set; master's CSV reader rejects CelesTrak SupGP files whole.
libsgp4
version 3.0
run 2026-09-27
9 of 18 failed
Alpha-5 decoding correct in v3.0; CelesTrak's SupGP CSV is still refused whole, and some TLE epochs still come back 8 µs off (#45).
tle.js
version 5.0.3
run 2026-09-27
3 of 18 failed
Alpha-5 fields give NaN with no error, and two-digit epoch years pivot at 50 instead of 57 (#62); a letter in the epoch field is read up to the letter, and isValidTLE() calls the set valid (#63).
astroz
version 0.14.0
run 2026-09-27
10 of 18 failed
Alpha-5 decoding and the epoch field fixed (#97, #98); the parser keeps no object name, so every values item from a named source fails on it.

A count is a result for the version named, on the date named, not a verdict on the project, and the counts do not rank the libraries: one that reads fewer formats has fewer cases it can fail. The reports, the corpus version of each run and whether each can load this month’s launches are on the library page.

Run it on every changeIn CI

In a GitHub Actions workflow, three lines run the test kit against a library on every change, offline and report-only.

Three lines run a preset against your library in a GitHub Actions job, offline and report-only; gpconf presets lists the presets, and the adapter guide covers writing your own.

- uses: hneogy/gp-omm-conformance@v0.7.0
  with:
    preset: sgp4