Changelog
A dated record of what changed on OrbitalWiki: new features, data-source changes, API changes, and fixes. Breaking changes are called out separately with migration notes.
Breaking changes are marked in red and include what you need to do.
- New
- Data
- API
- Fixed
- Breaking
Corrections to the methodology page from the author of one of our sources
- Fixed
The four sources named at the top of the methodology page are now links to those sources. Until now the only way to reach them from that page was a row of numbered credits in the footer, which is a long way to scroll to check where a claim came from.
- Fixed
The link directory at the bottom of every page is laid out more tightly. Nothing was removed or reordered, the groups simply no longer leave a screen-height gap below the shorter ones.
- New
Records now show when a satellite stopped transmitting, where GCAT records it. This is GCAT’s end-of-transmission date, the date after which a spacecraft went silent and unresponsive, and it appears as its own sourced fact rather than being folded into the status. 323 records carry one today. Jonathan McDowell, who maintains GCAT, told us which field holds it.
- Fixed
The methodology page said 506 objects had no assessed status. The real number is 4. The figure was being read from a leftover bucket that also counted partially operational, standby, spare and extended-mission objects, all four of which are statuses a source states explicitly. The page now counts objects nobody has assessed, and nothing else.
- Data
The 479 newest objects in the catalog now carry GCAT data. GCAT splits its catalog in two, and everything issued since catalog numbers went to six digits lives in the second file, which we were not reading. Every six-digit object had launch, classification, operator and country from CelesTrak only, and nothing from GCAT. 457 of them now have both; the remaining 22 are not in GCAT yet. Jonathan McDowell asked whether we had noticed. We had not.
- Data
Our stated limitation on operational status was too broad. It said GCAT records whether an object is still in orbit rather than whether it works, which is true of the GCAT file we ingest but not of GCAT as a whole: its payload catalogue carries an end-of-life date, marked with an asterisk while a payload is still active. The page now says so, and says plainly that we do not read that file yet. Jonathan McDowell, who maintains GCAT, pointed both of these out.
Methodology §01 source names linked from the source manifest; §05 status limitation corrected after review by Jonathan McDowell (GCAT)
The homepage now shows a real record instead of describing one, and daily dataset releases actually run
- New
The homepage opens with a real catalog record beside the search box, and a section below it shows where each field on that record came from, including the cases where two sources disagree and the ones where nothing authoritative exists. All of it is read live from the catalog, so it cannot drift from what a record page actually says. The page previously claimed field-level provenance in a paragraph and then asked you to take that on faith for two more screens.
- New
Three records now sit on the homepage as starting points, so the catalog can be entered by clicking rather than by knowing what to search for.
- Data
Dataset releases are published daily again. The scheduled job that builds them had never been registered, so the downloads page listed a single release from 24 July for six weeks while the live catalog moved on without it. The schedule now exists, and each day with fresh source data produces its own versioned, citable snapshot.
HomepageV2 rebuilt around a live catalog record and a field-level provenance table read from claims; dataset-release-daily workflow registered on the default branch with the app checkout pinned
The API is mentioned where people actually are, and the menu is back on laptops
- New
Every satellite record now ends with the endpoint that returns it, and says plainly that a key is free and covers 1,000 requests a day. Until now the only mention of the API on a record page was a grey line of monospace in the sidebar that read as a code sample, so most people arriving from a search never learned there was an API at all.
- Fixed
The site navigation is visible again on a laptop. It only appeared on screens wider than 1400 pixels, which meant the two most common desktop widths, 1280 and 1366, saw nothing but a menu button. The row is now six items and shows from 1180 pixels up. Today, Articles and Sources moved to the footer to make room, and nothing lost its link.
- Fixed
The homepage hero offered five buttons of identical weight next to the search box, two of which repeated links from the cards directly below them. It now has one primary action and two quiet ones. No destination was removed from the site.
ApiCta added to the satellite record outside the tabs branch; ConsoleNav trimmed to six items and the desktop breakpoint lowered from 1400px; homepage hero chips reduced to one primary and two secondary
A broken operator link on rocket bodies and debris, and a breadcrumb that knows where it is
- Fixed
Records that are not payloads no longer link to an operator page that does not exist. The operator directory is built from payloads only, so a rocket body or debris fragment can carry an operator with no page behind it: SL-4 R/B linked to a Russian Strategic Rocket Forces page that answered 404. Those records now show the rest of their links and simply omit the operator one.
- Fixed
The breadcrumb on a satellite record now runs OrbitalWiki, Operators, the operator, then the object, instead of routing every record through the generic search page. Records with no operator page keep the search trail. The visible trail and the structured data say the same thing.
- New
The operator and country shown in a record's details are now clickable, taking you to that operator's fleet or that country's catalog. Their sources and confidence badges are unchanged.
operator/country/constellation slug rules consolidated into lib/hub-links with the PAYLOAD guard applied; satellite breadcrumb rerouted through the operator hub
The globe draws orbits properly, pans, takes photographs, and a note from the person who runs this
- Fixed
A selected satellite now sits on its own orbit line. The line was drawn for the moment you clicked and never moved again, so the object slid off it as the clock ran on.
- Fixed
The orbit line is a smooth closed curve. It used to be drawn by flying the object round for one lap, and an orbit does not come back to exactly where it started, so the line was left with a straight chord cutting across it: a kink at the satellite close in, and a spike across the screen closer still. It is now drawn as the ellipse the object is actually on, with 720 points.
- Fixed
The satellite and its orbit no longer vanish when you get close to them. The camera decided what was too near to draw from the distance to the ground far below, so flying up to an object put the cut-off in front of the very thing you had flown to.
- Fixed
Holding Ctrl and dragging no longer jumps the view outward before it turns. Swinging around a point on the ground kept the old distance to the centre of the Earth, which threw the camera a whole planet-radius further out on the first move.
- New
Hold Shift and drag to slide the view sideways, up and down, without turning it.
- New
A photo studio: it holds the view still, frames it as a 16:9 picture, and lets you set exposure, brightness, contrast, saturation, hue and sharpness before saving it. Choose 1080p, 4K, 8K, 16K or any width you like, and WebP, JPEG or PNG. Every display control still works while it is open, so you can change what is in the shot. The picture is made on your device and nothing is uploaded.
- New
The globe has its own language picker, in display settings, so the labels can be changed without leaving it.
- New
A short guided tour on a first visit, which flies the real globe around while it explains. You step through it yourself with Next and Back, so there is no rush and nothing moves on before you have read it. You can pick your language on the opening screen, skip it, hide it for good, or start it again from display settings.
- New
Ultra now has depth of field: whatever the view is not focused on goes soft, the way a camera lens does. Focus follows the middle of the screen, so flying up to a satellite softens the Earth behind it, and framing the whole planet leaves everything sharp. It can be switched off in display settings.
- New
The Low setting has a real day and night side with city lights and a horizon, instead of a single evenly lit texture. It costs one small extra image and no extra rendering, so it is still the one that runs on anything. The Sun switch now works there too.
- New
Every column in the footer is now sorted alphabetically, in the alphabet of whichever language you are reading the site in, so you can scan for a page instead of hunting for it. The numbered source credits keep their numbering.
- New
The contact form has "Feedback / suggestion" and "Bug report" topics, so those messages no longer have to be filed under "Something else".
orbit trail aligned to the live Earth rotation and closed as a loop; camera rig rebased on pivot change; capture studio; alphabetical footer; contact topics
Country pages now list their satellites, and every record links to its hubs
- New
A country page now lists the active objects registered to that country, instead of sending you to a separate listing page for it. /satellites/by-country/<code> permanently redirects to the country page, so old links still work and there is one page per country rather than two.
- New
Every satellite record now links to the operator, country, constellation and orbit class it belongs to, so you can move up from one object to everything like it.
- Fixed
The launch index year and page views are now their own pages rather than copies of the first page, so a link to /launches?year=1998 stays on 1998.
search-console crawl audit: one country URL instead of two, catalog context links on satellite pages
A check before you pay for capacity you have not needed yet
- New
If you pick a paid plan while your account has made few or no API requests, we now ask once whether you are sure, and show you how much of the free allowance you have actually used. Continue and nothing changes; the free plan is there in the meantime. Accounts that have used the free limit go straight to checkout as before.
upgrade readiness check in front of the paid checkout links on /pricing
Signing in with Google now says orbitalwiki.com
- Fixed
The Google sign-in screen used to ask you to continue to a long database hostname nobody recognises, because the sign-in round trip went through our database provider. It now runs on orbitalwiki.com, so the screen names the site you are actually signing in to. Existing accounts and passwords are untouched.
own-domain Google OAuth: src/lib/auth/googleOAuth.ts and /auth/google/*
Affiliate applications are read by a person, and the page now says so
- Fixed
The affiliate page promised that applications are approved automatically and that your link arrives the moment you apply. That stopped being true when automatic approval was switched off, so applicants were told to expect a link and then left waiting. The page now says applications are read by a person and to expect a few days.
affiliates.intro and affiliates.termApprovalValue corrected in every language; terms date bumped
Referral links now count the visits they send
- Fixed
Someone who recommends OrbitalWiki has always been paid correctly, but their dashboard showed no visits at all, however many people they sent. Those visits are now counted.
- Fixed
The cookie policy now names the extra cookie our payment provider sets when you arrive on a referral link, and says what it reads. It runs on that one page and nowhere else, and not at all if you decline cookies.
Lemon Squeezy affiliate tracking script mounted on ?aff= landings; cookie policy updated
The developer pages no longer promise a trial that ended
- Fixed
The developer page still advertised "30 days free, no card" on the Builder plan after that trial was withdrawn, in every language. Anyone who read it and went to pay would have been charged straight away with no trial. The claim is gone, and the trial cannot come back on its own if plan settings fail to load.
- Fixed
Two examples in the quickstart did not match what the API returns: a claim showed a source_id field that does not exist, and the error reference listed two fields when every error also carries a code. Both now match a real response.
- Fixed
A new account with no API keys was told "No keys match your search" without having searched for anything. It now says there are no keys yet and to create one.
- Fixed
The nav asked who you are once per page you opened, several times over a short visit, against an endpoint with a per-address limit. It now remembers the answer for half a minute and asks again immediately when you sign in or out.
- Fixed
Every field on a satellite page carried the line "retrieval date unknown", because claims do not record one. Saying nothing a dozen times is not provenance, so the line is gone from the overview. The Sources tab still shows the date each claim was recorded, per source.
developers.builderTierNote copy, PLAN_LIMITS.builder.trialDays, quickstart claim and error examples
Every statistics question is now linked from every page
- Fixed
The eight pages that answer a question with a number, such as how many satellites are in orbit and how many Starlink satellites there are, were reachable only from the statistics index. They now sit in the footer of every page, so they are one click from anywhere on the site instead of two.
SiteFooter gains a Statistics group; slug and question split into src/lib/statistics/questions.ts
The card-free Builder trial has been withdrawn
- Breaking
The 30-day card-free Builder trial is no longer offered. The Free plan is unchanged and still the way to try the API: 1,000 requests a day, no card, no expiry. Anyone already inside a trial keeps it until it ends, on the same limits, with nothing to do.
MigrationNo action required. Existing trials run to their end date on unchanged limits, and no API key changes tier because of this.
plan_tier_settings.builder.trial_days set to 0, plus a guard on the activation route
Affiliate links now work, and a storefront purchase no longer strands the buyer
- Fixed
Affiliate referral links pointed straight at our payment provider's storefront. Anyone who bought there was not signed in to OrbitalWiki, so the payment arrived with no account attached: they were charged and nothing was upgraded. Referral links now point at www.orbitalwiki.com, the referral code travels with the visitor, and it is handed to the payment page at checkout, so the affiliate is still paid and the subscription lands on a real account.
- Fixed
If a payment does still arrive with no account attached, we now match it to the account with the same email address instead of leaving the customer waiting on a manual fix. Where no single account matches, the operator alert works exactly as before.
- New
The affiliate page now tells affiliates to promote the orbitalwiki.com link rather than the payment-provider link, which is the opposite of what it said before and the reason the old advice cost people their commission.
- New
The attribution window went from seven days to thirty. Someone can now find a recommendation, think about it for a few weeks, and the person who recommended us still gets paid. Seven days was short enough that a video or article kept earning clicks long after it stopped earning anything.
Affiliate referral capture (?aff) plus email attribution fallback
Tables no longer jump away from your cursor when you click them
- Fixed
Holding the mouse button down anywhere in a table, on the operators list and every other table on the site, shifted and shrank the whole table under the pointer, so links were hard to hit and the page looked like it was sliding away. Tables now stay still, and the press effect is limited to buttons, where it belongs.
- Fixed
Text boxes, dropdowns and checkboxes also moved when pressed, as though each of them were a button. They stay put now.
Press feedback restricted to actual buttons
An accessibility statement, and a better site with a screen reader
- New
There is now an accessibility page, linked from the footer. It says which standard we aim at, what we measured, what is still not usable with a screen reader, and how to tell us when something blocks you. It names the 3D globe as the part that is not accessible rather than glossing over it, and points to the text routes that carry the same information.
- Fixed
On satellite pages, the "skip to main content" link jumped past the satellite's own name, catalogue number and summary. It now lands at the top of the record.
- Fixed
Section titles across the site looked like headings but were not marked up as headings, so somebody navigating by heading heard only the page title and none of the sections. Nine sections on the developer page, six on pricing, and every article and legal page were affected.
- Fixed
The globe page had no heading at all, so a screen reader announced an untitled document. It now introduces itself and links to the text equivalents.
Accessibility audit of 41 page types, plus the fixes it found
Satellite and operator pages load several times faster
- Fixed
Satellite and operator pages were rebuilt from scratch on every single visit, which made them slow and, when a lot of people arrived at once, made parts of the record fall back to "temporarily unavailable". The public parts of a record are now shared between visitors instead of being fetched again for each one. Measured on a satellite page: 575ms down to 65ms. On the largest operator page: 2.5 seconds down to 0.13.
- Data
Satellite records refresh at least every six hours and operator fleet charts every hour, which is how often the underlying catalog changes. Newly catalogued objects still appear immediately.
- Fixed
A link to a satellite, operator, country, constellation, mission or dataset version that does not exist now answers "not found" properly instead of returning a normal page that happened to say the record was missing. Search engines were being told those URLs were real pages.
Public record reads moved behind a shared cache
The nav no longer forgets you are signed in
- Fixed
Signed-in visitors were sometimes shown Log in and Sign up anyway, and clicking Log in sent them straight back to their account. The nav was treating a check it could not complete as proof nobody was signed in. It now keeps your account controls in place instead.
- Fixed
The site also asked who you are twice on every page instead of once, which was what exhausted the check in the first place. Now it asks once.
Nav session lookup no longer reads a failed check as signed out
Automated traffic gets a door policy
- New
Requests that are obviously not a person reading the site are now turned away at the door instead of being served. Nothing changes for anyone browsing: there is no puzzle to solve, no box to tick, and no checkpoint page.
- New
Search engines and AI assistants are explicitly welcome and unaffected. Being read by them is how people find this site, so they are recognised by name and given far more room than a browser, not challenged.
- API
The public API is unchanged. Command-line tools and scripts calling it work exactly as documented, and the existing per-key limits are still the only quota that applies.
MigrationNo action required. If an automated tool of yours is refused on an ordinary page, give it a descriptive User-Agent, or use the API instead.
Bot gate on every request
Following a satellite, and the corduroy across the planet
- Fixed
Switching the Sun off on Ultra turned the whole view grey and flickering. Lighting everything evenly means pretending sunlight reaches the night side too, and the code still measured how much air that sunlight crossed on the way in. On the night side that path runs straight through the planet, and the number came back as infinity, which then got multiplied by nothing. The glow pass spreads a result like that across every pixel of the screen, which is why it went grey rather than showing one bad speck, and why only Ultra showed it at all.
- Fixed
The whole planet was crossed by fine horizontal stripes. The cloud layer is a real photograph of the day's weather, and it was being blown along by a wind that runs one way at the tropics and the other way at mid-latitudes, which is what the real atmosphere does. Run far enough, that pulls a still photograph into threads. It is now folded back and cross-faded long before it can tear, so the clouds drift and change shape without ever coming apart or jumping.
- Fixed
Pressing F now flies you right up to the satellite and stays with it. It used to stop a long way off, aimed at the middle of the Earth rather than at the thing you picked, and then sit still while the satellite carried on without it. The camera now keeps station about 765 km away and the ground rolls past underneath. Drag, scroll, C or Escape lets go.
- Fixed
The 3D spacecraft models were drawn at a fixed size on screen, so the Space Station looked bigger than a continent when you stood back and appeared to shrink as you flew towards it. They are now a fixed size in the world, exactly as big as the marker dot they replace, and they grow and shrink like real objects.
- Fixed
Zooming all the way in on the Moon made the Moon vanish. Nothing had gone through it: the camera was allowed closer than the point where it starts drawing, so the near side was cut away and the far side with it. How close it can draw now follows whatever it is approaching.
- Fixed
Marker dots stop growing past a readable size. They are sized in real distance so they thin out with the objects they mark, which was fine until you could fly right up to one and have it cover a fifth of the screen.
Playground focus, model scale and cloud advection pass
The globe playground learned how to be looked around
- New
Hold Ctrl and drag, and the view now swings around whatever is under the cursor instead of around the centre of the Earth. That is the difference between spinning a globe and walking around a mountain: you can get low over a coastline and look along it, or circle a satellite and see its orbit from the side.
- New
A controls list now sits in the bottom-left corner. F flies to whatever you have selected and C pulls back out to the whole Earth, and until now there was nothing anywhere on the page that said so.
- New
Move the pointer over the planet and the latitude and longitude of the place under it now appear in the bottom-right corner.
- New
Selecting a satellite now shows how high it is, how fast it is going, the point on Earth it is currently over, and how long one lap takes. The speed is worked out from the orbit itself rather than from how far the dot moved, so it is the real orbital speed and not the speed across the ground.
- New
The Moon can be clicked and focused like anything else on the globe. There is a button for it in the top bar too, because at its true distance it is only a few pixels wide and asking anyone to hit that with a mouse is not reasonable. It has no catalog record, and the card that opens says so rather than offering a link to a page that does not exist.
- New
Five objects now show a real 3D model when you select them: the Space Station, Hubble, Aqua, Terra and Fermi. The models are NASA’s own. They are pointed the way the real ones fly, worked out from the direction the object is actually travelling, and lit by the same Sun that lights the Earth underneath. They are drawn at a fixed size on screen and the card says plainly that this shows the shape and not the size, because at true scale the Space Station next to the Earth is smaller than one pixel. There is no complete library of satellite models anywhere and there is not going to be one, so five real ones is what this ships rather than a generic box standing in for sixteen thousand objects.
- New
The Moon is now drawn from NASA’s own lunar mosaic instead of a small stand-in image, and selecting it loads a much sharper version plus the real surface relief measured by the laser altimeter aboard Lunar Reconnaissance Orbiter. The heavy files are only fetched when somebody actually asks to look at the Moon closely, so nobody pays for them by default.
- Fixed
The search box sat on top of the object counter and the settings button, and the card for a selected satellite sat on top of the buttons in the top-right corner. Both were measuring the height of the toolbar without counting its own padding, so everything anchored below it started 24 pixels too high.
- Fixed
The Sun switch did nothing. Turning it off left the night side exactly as dark as before. It now genuinely lights the whole planet evenly, which is the point: it is how you find a satellite over somewhere that is in darkness right now. On the Low graphics setting there is no Sun to switch off in the first place, so the button is greyed out there and says why.
- Fixed
With satellites switched off you could still click empty space and select one, which put a marker and an information card on screen for an object that was not being drawn. Switched-off objects are now genuinely not there to be clicked.
- Fixed
The marker on a selected satellite was a solid white ball drawn exactly where the satellite is, so it covered the thing it was pointing at. It is now an open ring around the object, held at a constant size on screen so it does not shrink away when you pull back.
- Fixed
On the High graphics setting the Sun was a flat pale blob with faint rings around it. Its bright disc and the glare around it had been given the same brightness, so there was no star in the picture at all, just a smooth mound of light. The Sun is now drawn with a real disc several times brighter than its glare, worked out for every pixel rather than baked into a small image, so the rings and the blob are both gone.
- Fixed
On the Ultra graphics setting, zooming in close is supposed to fetch a sharper photo of whatever you are looking at. Over Europe, Africa, Asia and Australia it was quietly fetching a blank image instead, because the longitude it asked for was outside the range the imagery service accepts. The service answered with an empty picture rather than an error, so nothing ever reported a problem. It works over the whole planet now.
- New
The sea moves on the Ultra setting. The Sun’s reflection off open water now breaks up over a slow swell instead of sitting there as one frozen highlight, and the ripple fades out as you pull back so it never turns into shimmer. Land is untouched.
- New
Zooming in close on the Ultra setting now keeps getting sharper, in five steps, instead of stopping at one. The finest step reaches 250 metres per pixel, which is exactly as fine as the NASA imagery behind it actually goes; asking for more would just be paying to download a blurred picture enlarged. Hold Ctrl and drag to swing down over a coastline and the sharp view follows where you are looking rather than staying under the camera.
- New
The clouds on the Ultra setting now move. Real clouds cross the planet far too slowly to see, so the drift is run faster than life and follows the real pattern of the winds: easterly near the equator, westerly across the middle latitudes, easterly again near the poles, with a calm belt on the equator. The cloud picture itself is a real recent observation. The motion is a model of the circulation, not a weather forecast.
Playground controls, telemetry and selection pass
The cookie notice on the globe site could not be dismissed
- Fixed
On globe.orbitalwiki.com the cookie notice sat at the bottom of the screen and none of its three buttons did anything, so there was no way to get rid of it. The notice was being built before the page reached the browser and then abandoned there, which left the buttons with nothing behind them. It is now only ever built in the browser, so it appears when there is genuinely a choice to make and goes away when the choice is made.
Cookie banner hydration fix
Elliptical orbit lines looked faceted near one side
- Fixed
In the playground, clicking a satellite on a stretched-out orbit (Chandra's, for example) drew its white orbit line as a smooth curve on one side and a jagged polygon on the other. The line was sampled at even time steps, and a satellite crosses the near-Earth side of a stretched orbit far faster than the far side, so those steps landed close together on one side and far apart on the other. It now samples evenly around the shape instead, so every part of the line gets a fair share of the 128 points.
Orbit trail vertex sampling
The language list would not scroll
- Fixed
Scrolling inside the open language list moved the page behind it instead, so the languages below the fold could only be reached by dragging the scrollbar. The list takes the wheel now, and the page stays put until the list runs out.
Language switcher wheel handling
What a walk through the live site found, an hour after publishing it
- Fixed
Several pages said the orbital elements are never more than six hours old. Measured against our own API on 5 August: half of them are over 33 hours past their epoch and 95 per cent are within 48. Six hours is how often we refetch from CelesTrak, which is a different thing entirely. The download page and the playground now say what is actually true.
- Fixed
The operator statistics page counted SpaceX twice under two catalogue names, so it showed 10,765 where the operators page showed 10,766. It also claimed in writing that it merged those two entries, which it did not. It does now.
- Fixed
"How many satellites still work" answered 16,473 in the data Google reads, a figure that quietly included 168 objects that have already re-entered and 22 recorded as non-operational. The answer is now 16,283, counting only objects whose recorded status actually asserts a working spacecraft.
- Fixed
Ninety-four country pages were being submitted to search engines in a form the site never links, and every one of them returned a page saying "Country not found" while reporting success. Both halves are fixed: the sitemap now lists the real addresses, and an address that does not exist returns a genuine 404.
- Fixed
The page explaining what OrbitalWiki is had no link pointing at it from anywhere on the site, and it was the only way a signed-out visitor could reach the service status page. Both are in the footer now.
- Fixed
Pages written only in English were being served inside a wrapper that told screen readers they were Arabic, so an Arabic reader heard English read aloud in an Arabic voice. Those pages now declare their real language.
- Fixed
Status values like PARTIALLY_OPERATIONAL were printed raw on public statistics pages, and the six dataset download links were all called just "CSV" or "JSON", which made them impossible to tell apart with a screen reader.
- API
Two documentation claims were wrong and are corrected rather than quietly left: rate-limit headers ship on the metered endpoints, not on every response, and attribution rides on successful responses rather than on error ones. The Postman collection no longer attaches an API key to the one request that rejects it.
MigrationNo action required. Nothing about the API changed, only what we say about it.
Live production re-audit and corrections
Fourteen pages published, and the corrections found by walking them
- New
A lot of finished work had never actually been published. Launches, orbit events, statistics pages, the bulk dataset download, the embeddable widgets, the affiliate programme, a browsable sitemap, the classroom pack, the notebook gallery and the API stability policy are all reachable now, and all of them are linked from the footer rather than only from a URL you would have had to know.
- API
Four new read-only endpoints: /api/v1/events for catalogue changes, /api/v1/launches, /api/v1/elements for every active object in one response, and /api/v1/dataset/{slice} for the bulk download behind /data.
MigrationNo action required. These are additions; nothing existing changed shape.
- Fixed
The bulk dataset download returned exactly 1,000 rows of 16,476 and said nothing about it. The database caps any single response at a thousand rows, including the one behind this download, so a file that looked complete was missing 94 per cent of the catalogue. It now returns the whole slice.
- Fixed
A failed dataset download used to count against your 20-a-day limit, so twenty polite retries against a broken endpoint ended in a lockout lasting almost a day. Only a download that actually delivers a file is counted now, and the limit itself is stated on the page and returned in the response headers instead of being a surprise.
- Fixed
The embeddable widgets could not be embedded anywhere. Every page under /embed sent a header refusing to be placed in a frame, which is the one thing a widget has to do. They can be framed now, and the cookie banner no longer renders inside them.
- Fixed
Several pages stated things the data does not support. "The oldest satellite still in orbit" gave an answer this catalogue cannot actually back, a launch year printed as "1,964", the country ranking showed raw internal codes instead of country names, and a promise that every figure is computed twice was not true of most of them. Each is either corrected or now says plainly what it does and does not cover.
- Fixed
The developer rescue pages carried wrong technical detail: the note on TLE checksums said minus signs count for nothing when they count as one, the element refresh rate was understated, a cited source pointed at the wrong page, and a "support CelesTrak" link was dead. All corrected against the upstream documentation.
- API
The Postman collection built every request against the site root instead of the API, so not one of its fifteen requests reached an endpoint and six returned a web page with a 200. It is generated from the API server URL now. An unknown ?status= value returns a 400 listing what is allowed, instead of a 500 telling clients to retry forever.
MigrationRe-import the collection from /api/v1/postman.json if you imported it before today. If you were matching errors on message text, match on the new stable code field instead.
- API
X-RateLimit-Remaining on the bulk dataset download reported what was left of the per-second burst, not of the day, so the first download of twenty said nine were left. It reports the daily allowance now. The developer documentation also listed only five of the eight statuses the API returns, and described an error body without the code field it has been sending; both now match what actually ships, and the 500 the dataset download can return is documented in the OpenAPI spec.
MigrationNo action required, but if you sized a job against X-RateLimit-Remaining on the dataset download you were reading a number an order of magnitude too small.
- Fixed
The classroom pack page borrowed a heading from the lesson search and never said who the lessons are for: seven of the seventeen are written for a school class and the other ten assume undergraduate maths or some programming. It says so before you pay now, along with the total teaching time. Every lesson page and every downloaded lesson also states the print licence, so a teacher can see whether they may photocopy it without leaving the page.
- Fixed
Two of the four notebooks advertised the wrong file size.
Unpublished-surface audit and fixes
The globe: a black sky, a black night side, and controls that answer you
- Fixed
Choosing a graphics level gave no sign it had worked. The option you pick now lights up and starts spinning the instant you click it, the other options grey out so a second click cannot land somewhere you did not mean, and a single cover stays over the scene — saying what it is preparing — until everything that level needs has actually arrived.
- Fixed
The unlit half of Earth was purple. It is black now, with city lights, which is what it looks like. The cloud layer was quietly glowing a faint blue everywhere, including over the half of the planet that receives no light at all, and the automatic exposure was amplifying that glow every time you looked at the dark side.
- Fixed
Straight lines ran across the planet and the clouds stopped dead in a hard edge above Antarctica. Both came from the daily satellite photograph: it is stitched from separate passes, which leaves faint seams, and it simply has no coverage over the winter pole. Seams over dark ocean are now removed before anything is measured from them, and cloud cover fades away across the last stretch of each pole instead of ending at a line. Snow and ice near the poles are also no longer counted as permanent cloud.
- New
Clouds cast shadows on the ground on Ultra, offset by the real geometry of their height and the angle of the sun. That is what makes them read as a layer floating above the surface rather than a picture printed on it.
- Fixed
The sky is completely black now, and the Sun is the only thing in it. The scattered star field has been removed.
- Fixed
Dragging past the top or bottom of the globe used to bank up invisible movement, so you had to drag all the way back before the view would turn again. It stops where the view stops. Clicking a dot no longer selects a satellite hidden behind the Earth instead of the one in front of you. And the show-and-hide panel scrolls with the mouse wheel.
- Fixed
Open the full record now opens the real satellite page on orbitalwiki.com in a new tab, leaving the globe where you left it.
Globe: night side, imagery seams, cloud shadows, controls
The Ultra globe looks like a photograph of Earth now
- Fixed
The daylit side was blown out. The sunlit face is no longer pushed past the brightest colour the screen can show, and the sun’s reflection off the sea now spreads the way it does off real water instead of burning a white hole through whatever it lands on. The whole picture is now graded against a real NOAA full-disc photograph of the Pacific: deep water is darker and bluer, and the brightest cloud tops stop where a real camera stops them rather than flattening into featureless white.
- Fixed
Clouds looked like static. The 3D layer was rebuilding the weather out of fine-grained noise and drawing it over the real clouds already in the satellite photograph, so coherent fronts and cloud fields came out as speckle. The photograph now keeps its own clouds, which are the real thing, and the 3D layer above adds their height, their shadows and their sunlit rims instead of covering them up.
- New
Clouds can be switched off from the top bar in one click, on High and Ultra. On Ultra that now takes the clouds out of the satellite photograph too, so you get a genuinely clear view of the surface rather than one of two cloud layers disappearing. Cloud detection no longer mistakes deserts, ice sheets and Antarctica for permanent cloud.
- New
The Moon is brighter and lit the way the Moon actually is, so a full Moon reads as a flat bright disc rather than a shaded ball, and the unlit part glows faintly with light bounced off Earth.
- Fixed
The night side no longer lights the Antarctic ice cap into a pale blob during its own polar night. Unlit ground is now lit by moonlight, and follows the Moon’s phase.
- New
Ultra now renders through a lens, so the sun, city lights and sunlit cloud tops bloom the way they do in real photographs from orbit.
- New
The view now adjusts its exposure to what you are looking at, the way your eyes do walking into a dark room and the way a camera does when you point it somewhere darker. Turn to the night side and it opens up over a couple of seconds until cities, coastlines and cloud tops under moonlight become visible; turn back into daylight and it closes down again quickly. It also refuses to blow out the sunlit half in order to lift the dark half, which is the mistake that makes most automatic exposure look wrong.
- Fixed
Bright areas no longer clip to flat white. The curve that maps the scene to your screen was replaced with one that rolls highlights off gradually instead of cutting them, so cloud tops and city lights keep their shape and edges at the bright end.
- New
The atmosphere is now computed as light scattering through air rather than drawn as a glow around the edge. One consequence is that it finally behaves differently depending on where you are: with the sun behind the planet you get a thin red ring on a dark disc, with the sun behind you the whole planet takes a pale blue wash and a broad halo, and from low down the sky above the horizon fades from black through navy to white while distant ground washes out. None of those were possible before.
- Fixed
The sea is the right colour. It was coming out dark grey because the NASA imagery it is built from has the atmosphere mathematically removed by NASA, so the sky that a real ocean reflects had to be put back. Deep water also now absorbs red the way water actually does.
- Fixed
The unlit side is properly dark now. It was being given an invented floor of light which the automatic exposure then amplified into a glowing hemisphere. The night side is lit by nothing, so it shows cities and almost nothing else. Ice sheets and low-lying land such as the Amazon basin are also no longer mistaken for ocean.
- Data
The globe draws every tracked object. It was showing 1,000 of 16,307 because the database could only return a thousand rows at a time; it now returns the whole set in one piece. The zoomed-out view shows the low-orbit shell and the geostationary ring as real structures for the first time. It reads live, so anything newly tracked appears on its own.
- New
You can zoom out far enough to see the Moon, which now sits at its true distance instead of six times too close, and zooming is proportional so it feels the same close in and far out. The Sun is the right size too: it was drawn twenty times too large as a painted orange blob, and is now a small white disc bright enough to flare on its own.
- New
A loading screen covers the whole scene until it is genuinely finished, instead of letting you watch the planet change from flat artwork to a real photograph while dots appear late.
- Fixed
Space is black. It was the site’s very dark blue showing through behind the globe.
- Fixed
Ultra had lost its smooth edges. Everything drawn in that mode had visible staircase edges, most obvious around the Moon, and the Moon itself was a 48-sided shape rather than a circle. Both fixed.
- New
The sea is drawn as water now, not as part of a flat photograph. It reflects the sky, and it does so more and more toward the edge of the globe the way real water does, so the ocean looks wet instead of painted. Which pixels are sea is settled by real elevation data combined with the photograph's own colour, rather than by guessing from how blue something looks, so lakes, coastlines and the Amazon basin all land on the right side of it.
- New
Zoom in on Ultra and the surface gets sharper instead of blurrier. The area you are approaching is re-requested from NASA at several times the detail of the whole-globe image and faded in over it. It only happens when you actually come in close, and it is the same public NASA imagery the globe already uses.
- Fixed
Terrain relief was being applied to the open ocean, shading flat sea as though it had mountains in it. Relief is now land-only, and it deepens as you get closer rather than staying flat when you are near enough to expect texture.
- Fixed
Spinning the globe no longer coasts halfway around the planet. A flick now carries about a seventh as far and settles where you let go.
Ultra photorealism pass
The 3D globe became a full-screen playground, and it finally draws the whole catalog
- Fixed
The globe claimed to show every active satellite while drawing 1,000 of 16,307: the database transport capped the response and the page never said so. The elements payload now arrives uncapped, the count on screen is always the count actually drawn, and if the capped fallback ever serves again the page says "partial data" instead of pretending.
- New
The globe moved to /play as a full-screen playground (the old /globe address redirects). Search any satellite by name, NORAD or COSPAR id and the camera flies to it; show or hide constellations, orbit classes and countries; adjust dot size, darken satellites inside Earth’s shadow, or hide the clouds; and choose Low, High or Ultra graphics each visit. High adds a sunlit day/night Earth with real terminator, atmosphere, clouds at real altitudes, stars, the Moon at its true direction and phase (marked not to scale), dots colored by orbit class, and the selected object’s orbit path. Ultra downloads the newest complete NASA satellite photograph of the whole planet (the exact date is shown, with a progress note while it loads) plus 3D terrain from real elevation data. It works with keyboard alone and announces selections to screen readers.
- API
GET /api/v1/elements now returns all active objects with usable elements instead of 1,000, plus a new index-aligned "cc" country-code array. Existing fields are unchanged.
MigrationNo action required: the shape is unchanged and "cc" is additive. Consumers that assumed the 1,000-row cap should expect ~16,000 entries.
Globe playground build
Satellite records now explain why their orbital data is old
- New
When a record warns that its orbital data is a few days old, there is now a "Why?" link next to the warning. It explains that the number is the age of the measurement itself rather than of our last check, and it compares that satellite with the others in the same orbit, counted live. If most of its neighbours are equally far behind, it says the orbit is the reason and explains why those orbits get measured less often. If almost none of them are, it says so plainly and that we do not know the reason, rather than reaching for a plausible-sounding one.
Stale-data explanation
The sources page admits we hold SatNOGS data
- Fixed
The data sources page said SatNOGS had never been imported and had never been fetched, while the catalog holds 2,173 amateur-radio transmitter records taken from it on 24 July, shown on the radio tab of satellite records and counted on the coverage page. Of the six sources, SatNOGS is the one with a share-alike licence, so it is the worst one to under-report. It now shows when the data was actually retrieved, and says plainly that the scheduled weekly import is not running yet rather than advertising a cadence that is not happening.
False-claims audit, round 4
The events feed now only publishes things that happened
- Data
Orbit changes are no longer reported when a satellite simply drifts across the line between two orbit classes. Every orbit class is a boundary drawn through a continuous measurement, so an object sitting near one crosses it on ordinary tracking noise with nothing having happened. All 106 orbit changes in the log were this, several reading "moved from VLEO / 91.6 min to LEO / 91.6 min", and two objects crossed back and forth on consecutive days. An orbit change is now reported when the orbital period actually moves, which is what a real manoeuvre does.
- Data
An object is announced as newly catalogued once. One satellite had been announced as new 28 times over seven days, because the announcement is written before the catalog entry it describes and that entry kept failing to save.
- Fixed
Satellite records showed a launch mass and, directly underneath, said launch mass was not available. 16,493 records carry a sourced mass. The record page also said the country came from an unknown source on almost every satellite, while a sourced country claim was sitting on the record; it now shows the source it came from.
False-claims audit, round 3
The privacy and cookie policies now describe what actually runs
- Fixed
Both policies said Vercel Web Analytics counted every visit. It did not: the feature was never switched on for this site, so it recorded nothing at all. The component has been removed and both policies, in all eleven languages, now describe the measurement that does run, a count of what kind of site referred you, kept as one number per category per day. One correction matters: we previously said a tracker blocker stops it. It does not, because the counting happens on our own server rather than in your browser.
- Data
The events feed said "No events recorded yet" while the change log held 16,459 entries. 183 real events were being pushed out of view by rows that recorded nothing more than a status becoming unknown. The feed, its RSS and the events API all show the real history again.
- Fixed
Every satellite record claimed we had no constellation information for it. 13,058 of the 16,476 belong to a constellation this site publishes a page for, and those records now link straight to it.
- Fixed
The roadmap promised sections on what we are building and exploring; both were empty. The data sources page said "every source" in front of a list that left two out, including the only share-alike licence. A lesson that teaches you to quote a filter alongside its number mislabelled its own example.
False-claims audit, round 2
العربية: OrbitalWiki now reads right to left
- New
Arabic joins the language switcher, and the whole site lays itself out right to left for it: the interface, every lesson with its worksheets and answer keys, the notebooks, the article, and the terms, privacy and cookie pages. Eleven languages.
- New
An Arabic typeface is loaded for it, IBM Plex Sans Arabic, and only for readers who choose Arabic. Everyone else downloads exactly what they did before. Numbers stay in the digits used across the rest of the catalogue, so a figure never disagrees with the sentence beside it.
Locale 11, first RTL
Portuguese, Russian and Indonesian, and the layout now works right-to-left
- New
Português, Русский and Bahasa Indonesia join the language switcher, each complete: the whole interface, every lesson with its worksheets and answer keys, the notebooks, the article, and the terms, privacy and cookie pages. Ten languages now.
- Fixed
The site can now lay itself out right-to-left. Around 240 spacing, border and alignment rules were written as left and right, which would have mirrored wrongly in a right-to-left language. They are now written as start and end, so they follow the reading direction. Arabic is not offered yet, because the fonts we load carry no Arabic letters.
- Fixed
While doing that we found the number columns on the country, operator and constellation tables had quietly lost their right alignment. Fixed, in every language.
Locales 8, 9 and 10
OrbitalWiki is now available in Hindi
- New
हिन्दी is in the language switcher. Not a partial translation: the whole interface, all seventeen education lessons with their worksheets and answer keys, the notebook gallery, the article, and the terms, privacy and cookie pages. Nothing silently falls back to English, and a test fails the build if it ever starts to.
- Fixed
The section name beside the logo on the education and playground pages said "Education" and "API Playground" in English no matter which language you had chosen. It is translated now, in all seven.
- Fixed
Watch alerts are part of the Builder plan and were being sent to everyone. They now require Builder, and a trial counts. Nobody loses anything: the feature had never sent a single email before today.
Seventh locale
The 3D globe can now be used with a keyboard, and the dataset is one click from the homepage
- Fixed
The 3D globe could only be used with a mouse. Arrow keys now rotate it, plus and minus zoom, and Enter picks the satellite nearest the centre of the view and cycles outward through the ones behind it. The instructions are on the page. It uses the same picker a mouse click uses, so it is the same feature rather than a lesser version of it.
- Fixed
Twenty-two links and scroll areas across the site were unusable without a mouse or unreadable if you cannot distinguish the link colour. Fixed, and the whole site is now checked automatically against the WCAG 2.2 AA rules on every change, at phone and laptop size, with nothing switched off.
- Fixed
The free dataset download now has a link on the homepage. It had one only in the footer.
- Fixed
Every launch page, every country page, the statistics hub and the rescue guides were missing from the sitemap, so search engines were never told they exist. Around 2,000 pages are now listed.
- API
Both official API clients had a bug: asking for a single satellite returned an empty record, because they read the wrapper instead of the data inside it. Fixed, with tests pinned to a real response so it cannot come back. Neither client is published to PyPI or npm yet.
MigrationNo action required unless you built against an unreleased copy of a client. Nothing about the API itself changed.
Accessibility, SEO and SDK pass
Analytics is no longer downloaded by people who decline it, and the globe respects reduced motion
- Fixed
If you declined analytics cookies, nothing was ever sent about you. But the analytics library itself was still downloaded to your browser on almost every page, which is both a waste of your data and not what declining should mean. It now downloads only after you accept. If you have never accepted, it is never fetched at all.
- Fixed
Every page got lighter. The full text of the terms, privacy and cookie pages was being sent to every visitor of every page, to serve three pages. It now loads only on those three.
- Fixed
The 3D globe used to spin on load even if you have asked your device to reduce motion. It now starts still, with a play button. Small tap targets on the information buttons were enlarged, and a few links that were distinguishable only by colour now carry an underline.
- Fixed
Long text you could only read by scrolling sideways, such as a TLE line or a notebook code cell, can now be scrolled with the keyboard instead of only with a mouse or trackpad.
- New
There are now runnable Jupyter notebooks at /education/notebooks. Every request in them was executed against the live API before publication, so nothing in them is illustrative.
Privacy, performance and accessibility pass
Four more pages were denying features that had already shipped
- Fixed
The comparison table said radio data was "not available yet" and that mission purpose was "not a catalog field yet". Both were wrong: there are 2,173 transmitters across 1,109 satellites, and mission purpose is a sourced claim. Comparing satellites now shows transmitters recorded, how many are marked active, and which bands they use, plus mission purpose with its source. A satellite with nothing recorded reads as unknown in its own column, instead of the whole section denying the data exists.
- Fixed
The citation page listed saved queries and stories as unshipped features that would "light up" later. Both are live. Each now looks up the real thing, so a published story is citable today, and a section with nothing in it says so instead of claiming the feature does not exist.
- Fixed
The History tab on every satellite said the catalog keeps no record of orbit changes. It has been recording them since late July. Any orbit change detected for an object now appears there, dated, with the before and after and the source that reported it.
- Fixed
Every satellite page claimed most catalogued objects share that object’s orbit band. That is only true in low Earth orbit, so it was false on roughly 4,800 pages. The claim is now counted live and only printed where it actually holds.
Compare, cite, satellite record
Watchlist change alerts are actually sent now
- Fixed
The account setting "Email me when a satellite I watch changes" saved your choice but never produced an email, because nothing was scheduled to send one. It now goes out once a day to everyone who turned it on, covering only the satellites on your watchlist and only what changed since your last alert. It stays off unless you switch it on, and the same switch turns it off again.
Change alerts, scheduled send
All 17 lessons in one printable pack, and the education page stops saying they are not assembled
- New
There is now a Satellite Science Unit Pack: all 17 lessons in a single document, with every worksheet, answer key and figure, licensed for one classroom or one family. It opens in Word, Google Docs, Pages or LibreOffice and prints or exports to PDF from any of them. It is a one-time purchase, not a subscription, and nothing renews.
- New
The lessons themselves stay free. Every one is still readable on the site and downloadable on its own at no cost. The pack buys you having them assembled, printable and licensed in one file, nothing more.
- Fixed
The education page told teachers that packaged bundles "are not assembled yet", in all six languages. That sentence was written before the lessons existed in this form and nobody went back to it. It now describes what the pack actually is, and the lesson count in it is counted rather than typed, so it cannot go stale when an eighteenth lesson lands.
Satellite Science Unit Pack
The coverage page was claiming we hold no radio data, while holding 2,173 transmitters
- Fixed
The radio panel on /coverage said transmitter data was "not in the catalog yet". That stopped being true when the SatNOGS import ran, and nobody changed the sentence. It now reports live counts like every other panel: 1,109 satellites carrying radio data, 2,173 transmitters, 2,006 of them marked active. The numbers respond to the country, operator and orbit filters, so they cannot drift away from the rest of the page again.
- Fixed
Two panels quoted internal ticket codes at visitors, in all six languages. Removed.
Coverage radio panel, fixed after review
Every launch now has a page, and every satellite links to the flight that carried it
- New
There are now 1,935 launch pages, one for every flight that put something in this catalog, listing everything that went up together. Each satellite page links to its own launch, so you can go from one object to its whole flight and back out to any of its companions.
- API
A new endpoint at /api/v1/launches lists every launch with how many catalogued objects came from it. No key required, like the rest of the read API.
MigrationNo action required. This is a new endpoint; nothing existing changed.
- Data
Launch pages do not show a vehicle or a launch site, because this catalog does not hold either yet. A row saying "unknown" on all 1,935 pages would be padding rather than information, so the pages say what they know and stop.
Roadmap day 17, launch pages
Orbital events, with an RSS feed, and the noise taken out of it first
- New
A new page at /events lists objects appearing in the catalog for the first time, reentries as they are recorded, and orbits that have moved further than element noise can explain. Every entry links to that object’s record. There is an RSS feed and a JSON version, both free and needing no key.
- Fixed
Before any of that could be published, the event log had to be repaired. It held 586,157 entries, and 585,974 of them said the same thing: "status changed to unknown". The orbital element feed carries no status column, and a placeholder value was being compared against the real one, so every object was reported as changed on every update, about thirty-six times a week each. Those entries have been removed and the cause fixed, leaving 183 real events.
- Data
A status becoming unknown is now treated as a source going quiet rather than news about the satellite, and never appears in the feed. The page says so where you cannot miss it. The feed is also honest about timing: entries arrive within a day of the catalog being updated, and it does not claim to be real time.
Roadmap day 16, events feed
Put the satellite globe on your own site, free
- New
Two widgets you can paste into an article, at /widgets. One is the live 3D globe, optionally filtered to a single constellation. The other is a small badge showing how many satellites are in orbit right now, with the date it was counted. Both are free, need no key and no sign-up, and set nothing in your readers’ browsers.
- New
Clicking a satellite inside an embedded globe opens its record in a new tab rather than replacing your article with our site inside a small box.
- New
The only condition is one line of attribution, which comes with the snippet and sits beside the widget rather than inside it. If you need it without attribution or inside a commercial product, the page tells you to email us, and says plainly that there is no price list yet because nobody has asked.
Roadmap day 15, embeds and funnel
A live 3D globe where every dot is a page you can read
- New
There is a new page at /globe showing every active satellite moving in real time. The positions are worked out in your browser from each object’s current orbital elements, not fetched as pictures, so you can speed time up to 600× and watch a whole constellation sweep round.
- New
Click any dot and you get the thing other satellite maps do not have: the source-backed record for that object, the API call that returns it, and its raw JSON. That is the point of the globe. Every one of those dots is a page you can read.
- Data
What you are looking at is stated on the page: positions are propagated from element sets up to six hours old, so they are approximate and not for operational use; these are active payloads, so the sky here is emptier than the real one; and about two thirds of the dots are Starlink.
- New
Nothing about where you are or what you click leaves your browser, and the 3D code is only downloaded if you open this page. Every other page on the site is unaffected.
Roadmap days 11-14, the 3D globe
Eight statistics pages that refuse to print a number they cannot verify
- New
A new section at /statistics answers eight questions with a number rather than an article: how many satellites are in orbit, how many are Starlink, which countries and operators run the most, how many launch each year, what orbits they use, how many still work, and what the oldest one still up there is. The answer is the first thing on the page and the caveats are the second, because somebody on a deadline should not have to read prose to get a figure.
- Data
Every figure is computed twice, by two routes that would not fail in the same way, and the page publishes the disagreement instead of the number when the two do not match. That is not decoration: switching it on immediately found two Starlink satellites listed as belonging to a Japanese and a Bulgarian company, which have been corrected.
- Data
Each page shows its own working: how the number was computed, how it was checked, what the cross-check came to today, and a ready-made citation carrying the retrieval date, because these numbers change every six hours.
Roadmap day 8, statistics hub
A current satellite dataset, in the column names everyone already uses
- New
The whole catalog is now downloadable at /data as CSV or JSON, with no key and no sign-up. It uses the Union of Concerned Scientists Satellite Database column names wherever we hold the same fact, because that database stopped being updated in May 2023 and a great deal of published work is built against its columns. A script written for the UCS file should run against this one.
- Data
The page says what the file is not, in a box you cannot miss, before it lists what is in it. This is not a debris catalog: 16,470 payloads, 3 debris objects, 2 rocket bodies. A debris download was planned and dropped rather than published with five rows in it. It also lists the UCS columns we do not carry, one by one with the reason, because an empty "Launch Mass" column tells you the mass is unknown when the truth is that nobody researched it.
- New
Ready-made citations in plain text and BibTeX, both carrying the retrieval date, since the file changes. Attribution is a licence condition rather than a courtesy.
Roadmap day 7, the /data flagship
We checked our headline numbers against the source, and published the working
- Data
Our object counts now get checked against CelesTrak automatically, and the check fails rather than warns if any headline number drifts more than 2% from the source. Today: 16,307 active objects against their 16,276, and 10,871 active Starlink against their 10,872. We also check that we hold the same objects and not merely the same number of them, because two catalogs can agree on a total while disagreeing about what is in it.
- Fixed
One satellite, POSIDONIA, was showing up under "unmapped country codes" instead of Spain. Its country code is a regional one for the Balearic Islands that we had no name for. All 94 country codes in the catalog now resolve to a name.
- Data
The full working is published rather than summarised, including the parts that are not flattering: why our total is 31 higher than CelesTrak’s, the one object that is marked decayed while still carrying live orbital elements, and what we did not check and why.
Roadmap day 6, data QA gate
Four pages for when your satellite data pipeline breaks, and a promise about the API
- New
Four new pages explain the four ways this kind of work usually breaks: CelesTrak returning 403, six-digit catalog numbers meeting a TLE parser, Space-Track rate limits and account suspensions, and the N2YO hourly cap. Each one explains the cause first and the fix second, links the other service’s own documentation for every claim it makes about them, and has a section saying plainly when you should use that service rather than this one. Two of them are where our own data comes from, so this is not a competitor teardown.
- New
The six-digit page has a checker you can paste a TLE into. It reads the catalog field out of columns 3 to 7, decodes Alpha-5 if the number starts with a letter, verifies the checksum, and tells you whether both lines agree with each other. It runs entirely in your browser and nothing is uploaded.
- API
There is now a published API stability policy. If we have to break something in v1 you get twelve months of notice, a Deprecation and Sunset header on the affected responses, and an email if your key has been used recently. It also lists what we may change without notice, and the two exceptions where the notice period does not apply.
MigrationNo action required. Nothing about the current API changes; this documents what you can rely on.
- API
A Postman collection is available at /api/v1/postman.json, generated from the same OpenAPI document as the docs so the two cannot drift apart. It arrives with bearer auth already wired and a real satellite id in the path variables, so the first request works before you have configured anything.
MigrationNo action required.
- Data
The status page now shows measured data freshness: how old the newest orbital element set is, when the catalog was last written to, and how many objects it holds. This answers a different question from the incident list. A catalog that quietly stops updating looks exactly like one that is working, and this project has been caught by that before.
Roadmap day 5, rescue pages and trust assets
The whole catalog is now browsable, and operator fleets are no longer cut off at 500
- New
A new page at /sitemap, linked from the footer, lists every launch year since 1978 in chunks of at most 500 objects. From there any of the 16,476 catalogued objects is one more click away, so nothing in the catalog is more than three clicks from the homepage. Before today most of it was not reachable by clicking at all.
- New
Operator pages now show the entire fleet, one hundred rows at a time, with ordinary numbered page links. They used to stop at 500 objects for signed-out visitors, with an invitation to log in for more. That has gone: this is public catalog data, and the SpaceX page in particular was publishing 500 of its 10,878 objects.
- Fixed
SpaceX was split in two. The Starlink fleet sat under "SpaceX (Seattle)", which is how the upstream launch catalog files it, while a separate "SpaceX" page held two Dragon vehicles. Anyone looking for SpaceX found the page with two objects on it. They are now one operator with 10,878.
Roadmap day 4, crawl ladder
Every satellite page now links to five related satellites
- New
Until today a satellite page was a dead end: it linked to no other satellite in the catalog, so there was no way to explore sideways from a record you had landed on. Every one of the 16,476 pages now ends with five neighbours, each labelled with the reason it is there.
- New
The neighbours are picked strongest-reason-first: objects that went up on the same launch, then others run by the same operator, then others in the same orbit class. Objects from the same operator are taken from either side of the catalog number rather than from the top of the fleet, so a Starlink page leads onward through the constellation instead of pointing at the same five satellites as every other Starlink page.
Roadmap day 3, related satellites
What each paid plan lets you do with the data, written out plan by plan
- New
The Terms used to say only that commercial use "requires a paid plan", which left the interesting question unanswered: which paid plan, and how far does it go? Each plan now has its own paragraph. Free stays non-commercial. Builder covers commercial use inside your own product, service or organization, including work you are paid for, and including showing the data to your own users. Business adds the right to pass the data on as data, in a dataset, feed or API you operate, with attribution.
- New
The pricing page and its FAQ now say the same thing in the same words, so the comparison table and the contract cannot drift apart.
- Data
None of this overrides the sources the data comes from. A paid plan is permission from us, and we cannot grant rights we do not hold, so CelesTrak, GCAT and Wikidata terms still apply and still win where they conflict. Nothing here claims ownership of the underlying facts.
- Fixed
Because the Terms changed, you will be asked to accept them the next time you sign in. Nothing about your account, keys or plan changes in the meantime.
Roadmap day 2, pricing correctness pass
An affiliate program, and a visitor count that does not need your permission
- New
There is now an affiliate program. Refer someone who subscribes and you keep 30% of what they pay, every month, for as long as they stay. Applications are approved automatically, and Lemon Squeezy handles the links and the payouts. The page says plainly that nobody is earning from it yet, because nobody is.
- Data
We have started counting visits with a counter that runs whether or not you accepted analytics. It sets no cookie, stores nothing in your browser, cannot recognise you on a return visit and cannot follow you to another site. It exists because our only previous measurement was switched off for everyone who declined, which left us unable to tell whether anybody was reading at all. The Privacy and Cookie policies now describe it. Corrected on 4 August: this entry originally said a tracker blocker stops it. The counting happens on our own server, so it does not.
Roadmap day 1, measurement and housekeeping
A way out of the confirmation screen when you already have an account
- Fixed
Signing up with an email address that already has an account showed the "confirm your email" screen and waited for a code that was never going to arrive. The screen now says so, and offers to take you to the login page or to a password reset instead. If you originally signed up with Google, use Continue with Google there and no password is needed.
- New
We now also email you when someone tries to sign up with an address that already has an account. It tells you the account exists, whether it signs in with a password or with Google, and that nothing was created or changed. Only the inbox that owns the address ever receives it, so the signup form itself still gives nothing away, and it is sent at most once a day.
Signup duplicate-email exit, August 2026
One optional question when you sign up: how did you find us?
- New
The signup form now asks, once and optionally, where you heard about OrbitalWiki. Pick from a short list, add a line of your own if none of them fit, or skip it entirely. Nothing about the account changes either way, and the question is never asked again.
- New
We are asking because most of the ways people actually arrive here are invisible to us. A link from a repository, a mention in a chat, or a recommendation from a colleague all show up as nobody-knows. Your answer is the only way we find out which of those is worth more of our time.
- Data
Answers are stored against your account, counted in aggregate, and never published or shared. Signing up with Google records only the option you chose, never anything you typed. Our Privacy Policy has been updated to describe it.
Signup attribution, August 2026
Ten new lessons, each with a figure you can check the maths on
- New
Ten new classroom-ready lessons, taking the education section from seven to seventeen. They cover why satellites are only visible around dusk and dawn, why low orbits decay, how to read a ground track, Sun-synchronous orbits and the overpass time, the geostationary belt as a finite address space, Doppler shift on a pass, the day the catalog number outgrew the TLE format, paginating and backing off politely against a public API, matching records across two catalogs, and why "how many satellites are there" has no single answer.
- New
Each new lesson carries a figure drawn as code rather than as a picture. Every curve is computed from the relation the lesson teaches, so the drawing cannot drift away from the text, and every label is real text that translates and stays sharp at any zoom.
- New
All ten are available in all six site languages, including the downloadable lesson document. Student worksheets and teacher answer keys are now generated from the lesson itself, so they exist in every language and can never fall out of step with the page they came from.
- Data
No lesson quotes a live count, a current altitude, or a "today" value. Anything that changes is something the student records along with the date they saw it, which is the research habit the lessons are trying to build anyway.
Education batch 2, August 2026
A straight comparison with the other public satellite data sources
- New
New pages comparing this catalog with CelesTrak, Space-Track.org, N2YO and Heavens-Above: which of them need an account, which publish an API you can call, what the free limits really are, and what each one lets you redistribute. Every figure was taken from the provider’s own documentation.
- New
Each comparison also says plainly when the other source is the better tool, and where this catalog is the weaker option. CelesTrak is one of the sources this site is built from, and its page says so.
Provider comparison pages, August 2026
Pages load about twice as fast, and the site passes an accessibility audit
- Fixed
Pages now download roughly half as much as before, so they open faster, especially on a phone or a slow connection. Nothing about what you see has changed.
- New
Search, the catalog listings and the detail pages now show a placeholder layout while they load, instead of leaving the previous page sitting there with no sign anything is happening.
- Fixed
Accessibility: links in the footer were too small to tap reliably on a phone and are now a comfortable size, wide tables and code samples can be scrolled with the keyboard rather than only with a mouse, and some text was too faint to read against its background. The site now passes an automated WCAG 2.2 A and AA check on every public page, at both phone and desktop sizes.
- API
Repeated reads of the same endpoint without an API key are now served from a cache close to you, so they come back faster and do not count against the anonymous allowance. Requests made with an API key are not cached, so your usage figures stay exact. Responses are unchanged either way.
MigrationNo action required.
Performance and accessibility pass, August 2026
Signups are now checked for duplicate accounts, with a way to appeal
- New
Creating an account now runs an automated check for one person opening several accounts to reset the free daily quota. It is deliberately cautious: sharing an office, a university network, or a family laptop is normal and stays allowed.
- New
If the check does stop a signup, it no longer dead-ends. The page explains what happened, points to logging in or resetting a password if the account already exists, and offers a one-field form to ask a person to look at it. Approved requests are allowlisted, so the check never stops that address again. If you were stopped and you should not have been, that form is the fastest way to reach us.
- New
The Cloudflare Turnstile anti-bot check is now wired into sign-up, log-in, and password-reset as well as the newsletter form. It stays switched off: nothing is sent to Cloudflare unless the keys are configured, and turning it on would be announced first, exactly as the privacy policy says.
- API
No change to any /api/v1 endpoint, rate limit, or key. Existing accounts and keys are unaffected.
MigrationNo action required. The check runs only when a new account is created.
Signup duplicate-account check, August 2026
The 30-day Builder trial is now visible on the pricing page
- New
The Builder plan now shows a "Start 30-day free trial" button on the pricing page. The trial needs no card, runs once per account, and gives the full Builder limits (50,000 requests a day, 50 a second, 3 keys) for 30 days. Paying straight away is still one click away underneath it.
- Fixed
The trial line used to read "30 day free trial available" on both the monthly and the annual card, which was misleading: the trial only applies to monthly Builder. It now appears only there, and says plainly that no card is needed and that it is one trial per account.
Surface the existing card-free /api/account/trial offer on /pricing instead of only on the dashboard
Privacy and Cookie policies corrected, and consent is changeable again
- Fixed
Both policies stated that we do not run a public email sign-up form. The weekly "Today in Orbit" digest sign-up has been live, so that was wrong. They now describe it properly: the address you submit, the confirmation email you have to click before anything is stored, the categories you picked, and the one-click unsubscribe in every issue.
- Fixed
They also implied a Cloudflare anti-bot check might already be running. It is not. The form is protected by a hidden honeypot field, and nothing reaches Cloudflare unless we switch that check on, which we would announce first.
- New
You can change your cookie choice at any time on the Cookie Policy page, without signing in. The policy used to tell you to delete a cookie by hand, which made consent easier to give than to withdraw.
Align both policies with the live newsletter form; move the consent chooser onto the public cookie page
Operational status now comes from a source, or says unknown
- Breaking
Almost every object in the catalog used to say it was operational. That came from GCAT’s status column, which records whether an object is still in orbit, not whether it still works, so passive 1964 calibration spheres and even debris fragments were labelled operational. Operational status is now taken only from CelesTrak’s explicit per-object status code, and objects nobody has assessed say unknown instead.
MigrationIf you filter on operational_status=OPERATIONAL, expect a materially smaller and more conservative set, and more objects reporting UNKNOWN. Use is_active if what you actually want is "we hold current orbital elements for this object". No field was renamed or removed.
- Data
Five objects were shown as rocket bodies or debris while carrying a payload’s name, including GREENCUBE (IO-117), a CubeSat listed as a spent Vega upper stage. CelesTrak and GCAT disagree about which object some catalog numbers refer to, and GCAT’s answer was silently overwriting CelesTrak’s. CelesTrak now decides the object type for its own catalog numbers, and the disagreement is kept as a visible conflicting claim.
- Data
The countries list printed raw codes as country names: UY, DJ, HK and about thirty others appeared as if the code were a country. Codes now resolve to real names, the Soviet Union is no longer folded into Russia, and anything still unrecognised is grouped under one clearly labelled "unmapped" row instead of inventing a country.
- Fixed
Published numbers agree across pages. The methodology page quoted hand-typed figures that had drifted from reality; it now reads the same live counts the coverage dashboard shows. Coverage separates "active payloads" from "active objects", which is why the homepage and the dashboard appeared to disagree by ten objects. Search no longer claims "tens of thousands" of tracked objects and states the real total.
- Fixed
The methodology page promised a 0.00–1.00 confidence score. Claims have never carried one; they carry CONFIRMED, HIGH, MEDIUM, LOW or CONFLICTING. The page now documents what is actually stored and which source earns which level.
- Data
Sources pages tell the truth about what has been imported. Each source shows when it was last fetched, a source with nothing imported yet is labelled as such instead of advertising an update frequency, and the two pages link to each other. The UCS Satellite Database, listed in the pipeline but never ingested and licensed non-commercially, has been removed rather than left implying we redistribute it. The duplicate manual-curation source that made one source appear under two different licences is merged into one.
- Fixed
Debris and spent rocket stages are no longer described as being "operated by" an organisation. The stored name is who the parent object belonged to, so it now reads as "attributed to".
Data-quality audit: GCAT phase codes read as health codes, CelesTrak/GCAT catalog-id conflicts, unmapped country codes, contradictory published figures
Record pages are readable without JavaScript again
- Fixed
Satellite, operator, showcase, search and Today pages now arrive complete in the page itself. Their content used to be delivered next to the page and moved into place by a script, so anything that does not run JavaScript, including archive tools and some readers, saw only a loading placeholder on a record that is supposed to be citable.
- Fixed
A satellite id that does not exist now answers "not found" properly instead of reporting success, so search engines stop indexing records that were never there.
- Fixed
Searching a catalog number that matches exactly one object jumps straight to that record as a real redirect, so the link works in tools that do not run JavaScript.
Drop the route-level loading shells that pushed page bodies out of the served HTML
Buying, cancelling and calling the API all got unblocked
- Fixed
The Builder and Business buttons on the pricing page were disabled for anyone who was not already signed in, so nobody could actually start a purchase. They now take you to sign-up and back to pricing.
- Fixed
Cancelling is easier to find and harder to get stuck in. The pricing FAQ now says exactly where the cancel button lives, /account#billing opens the billing section instead of landing on a collapsed page, each paid price states that it renews automatically until you cancel, and if a cancellation or the payment portal fails you now get a support link with the error instead of a dead end.
- API
The API answers browser requests from any origin again. It was restricted to this site, which meant the JavaScript example in the docs could not work in your own app.
MigrationNo action required. If you previously proxied our API through your own server purely to dodge CORS, you can now call it directly from the browser.
- API
Docs and API agree again: the keyless trial allowance is documented, a mistyped /api/v1 path returns the documented JSON error instead of an HTML page, a rate-limited request uses the documented "hint" field, and a revoked key is documented as 401 (which is what it always returned).
MigrationIf you parsed the 429 body, read `hint` instead of `detail`. `error`, `retry_after` and the X-RateLimit-* headers are unchanged.
- Fixed
Saving one account setting no longer resets the others. Changing a single email preference used to clear your display name and organisation and switch the other email categories back on.
- Fixed
The phrase you have to type to delete your account can no longer be filled in with one click, so the confirmation step is a real one again.
- Fixed
Opening the dashboard while signed out sends you straight to the login page instead of leaving you on a loading screen, and /satellites now goes to search instead of a 404.
Live-site audit: pricing CTA, cancellation discoverability, CORS, and doc-vs-API drift
Upgrading now actually raises your key limits
- Fixed
Buying a paid plan raised the account allowance but left an existing API key pinned to the limits it was created with, so a key made on the free plan stayed at 1,000 requests/day and 10/sec even after upgrading. Keys still on their plan default now move up with the plan. A key you deliberately gave a smaller share of your quota keeps that share.
MigrationNo action required. If you upgraded before this fix and your key still shows the old limits, one more plan change or a new key applies the correct values.
Fix reconcile_account_api_keys clamping upgraded keys to their old plan limits
Everyone is asked to accept the terms once
- New
Creating an account now requires ticking a box confirming you have read the Terms of Service and Privacy Policy. The date and version you accepted are stored on your account.
- New
Accounts created before that checkbox existed are asked once, on their next visit to a signed-in page, and continue straight on afterwards. This also covers accounts created through Google, where the tick could previously be skipped. Nothing else about the account changes, and the API keeps working throughout.
MigrationNo action required for API consumers. API keys and /api/v1 are not affected; only the signed-in web pages ask.
Add a required Terms of Service checkbox to signup and gate existing accounts on acceptance
Builder and Business plans are on sale
- New
Builder (€29/mo) and Business (€99/mo) can now be bought from the pricing page and the dashboard billing section, monthly or annually. Checkout is handled by Lemon Squeezy, which is the merchant of record and collects any VAT due. The free tier is unchanged at 1,000 requests/day and stays free.
- Fixed
Removed the "checkout is not live yet" and "paid tiers are planned" notices from the pricing, developers, account, and dashboard pages in all six languages. The refund policy now reads as the policy in force: full refund within 14 days of purchase, no questions asked.
Open Lemon Squeezy checkout on the pricing, developers, and dashboard surfaces
Refresh schedule is published, and the old one was wrong
- API
The developer docs and the dashboard now state how often each source is rebuilt: orbital elements every 6 hours, catalog entries and launch data daily, Wikidata and SatNOGS weekly, with API responses cached 5 minutes at the edge. Requesting the same record more often than it refreshes returns identical data and spends your quota for nothing.
MigrationNo action required. If you poll, cache responses for at least six hours and honour the Retry-After header on a 429 instead of retrying immediately.
- Fixed
Corrected the cadences published on the methodology and sources pages. They claimed CelesTrak was fetched daily at 06:00 UTC and GCAT approximately weekly; the pipeline has been running CelesTrak every 6 hours and GCAT daily. The Wikidata row described a local cache file that never exists in CI, where the Sunday run always performs a fresh query.
Publish the real data refresh cadence in the docs and dashboard
Updated Terms of Service and account abuse scoring
- New
The Terms of Service now spell out what counts as working around a free-tier limit, including extra accounts, alias or disposable email addresses, shared keys, spreading requests across accounts, proxy and IP rotation, and retrying instead of backing off after a 429. They also add account-security, crawler, enforcement, availability, liability, and refund terms that were previously missing.
MigrationNo action required for normal use. If you run more than one account or spread requests across accounts to gain quota, consolidate onto one account and contact us about a higher limit.
- Fixed
Admin account review now shows a per-account abuse risk score built from signals already recorded at key creation, so repeat signups that stack free quota surface without manual log reading.
Score account abuse risk and close the free-tier terms gap
Accepted correction history is available again
- Fixed
Satellite timelines can again show accepted correction history. The read now runs only on the server and returns only the reviewed field, value, source, and date; reporter and moderation data remain private.
Fix public correction history read
Reliability and trust fixes from the product audit
- Fixed
Education and Playground subdomain links now send visitors to the matching main OrbitalWiki page instead of dead-ending on missing subdomain routes.
- API
Public API caching, rate limits, reentry responses, and six-digit catalog-ID handling were tightened so clients get explicit errors or partial-data warnings instead of misleading empty or truncated results.
MigrationNo breaking change. Existing endpoints remain available; clients should keep handling documented error and warning responses.
- Data
Source ingestion, transmitter imports, dataset releases, and public catalog reads now preserve trustworthy data and show unavailable or partial states when an upstream read fails.
- Fixed
Account, billing, email-change, and admin actions now check account and subscription state more consistently before changing access or reporting success.
- Fixed
Satellite share-card downloads now match the visitor’s active light, medium, or dark theme.
- Fixed
Navigation, dialogs, language controls, charts, search, mobile layout, and sitemap failure states received accessibility and recovery improvements.
Harden OrbitalWiki routes and audit findings
Provenance indicators, articles, and analytics foundation
- New
Shared source, confidence, and freshness indicators now appear on displayed data across the site, so every value shows where it came from and how current it is.
- New
New Articles section, opening with a plain-language explainer on what happens to satellites during a solar eclipse.
- New
Added privacy-respecting analytics events. Nothing is tracked until a visitor accepts analytics cookies.
- Fixed
Closed ingestion gaps that had frozen "Recently launched" and reentries on the /today page.
PR #64, PR #66
Daily brief, email digest, and data-quality sweep
- New
New /today daily brief: recent launches, upcoming and recent reentries, and newly cataloged objects.
- New
"Today in Orbit" email digest with double opt-in confirmation.
- New
Plain-language tooltips that explain orbital parameters on satellite pages.
- Data
New catalog objects are now inserted during refresh runs instead of being skipped, and a DECAYED status contradicted by a live orbit was corrected.
- Fixed
Tightened satellite name search to match on word and prefix boundaries, reducing spurious matches.
PR #61
Account lifecycle and ingestion resilience
- New
Account soft-delete with a restore window, so a deletion can be undone before it becomes permanent.
- Fixed
The data pipeline now preserves the last good snapshot during upstream CelesTrak outages instead of blanking data.
- Fixed
Closed a double-billing gap on the dashboard upgrade buttons.
feat(account): soft-delete lifecycle; fix(etl): preserve snapshot
Full-coverage sitemap and dataset metadata
- New
The sitemap index now covers every satellite and operator page, with machine-readable Dataset schema for search engines and dataset search.
feat(seo): sitemap index with full satellite coverage
Google sign-in
- New
You can now sign in with Google in addition to email and password.
feat(auth): add Google sign-in via Supabase OAuth
Public stats and reentries API endpoints
- API
Added two read-only endpoints: GET /api/v1/stats (catalog totals and data freshness) and GET /api/v1/reentries (recent and upcoming reentries).
MigrationAdditive change. Existing endpoints and response shapes are unchanged, so no action is required for current integrations.
feat(api): add GET /api/v1/stats and GET /api/v1/reentries