Methodology: how Galaxy computes positions
Data as of 2026-09-17
Reference frames
Every position is a geometric position, with no light-time or aberration correction: where a body is at that instant, not where it appears from Earth. Galaxy works in the J2000 ecliptic frame, the frame of the JPL Horizons files and of the orbital elements. astronomy-engine returns J2000 equatorial vectors (ICRF axes); they are rotated into the ecliptic by the J2000 obliquity, ε = 84381.448″ (23.4392911°), the IAU 1976 value that defines the Horizons ecliptic, so that every source shares one frame.
The Sun is fixed at the origin: positions are heliocentric. The 3D scene maps the ecliptic onto its horizontal plane: scene X = ecliptic x, scene Y = ecliptic z (towards the north ecliptic pole), scene Z = −ecliptic y. This is a proper rotation (determinant +1), not a mirror, so orbits keep their true direction of travel.
Time scale
The date you choose is read as UTC. From 1972 onwards it is converted to Terrestrial Time with the table of leap seconds, held constant after the last one (TT − UTC = 69.184 s since 2017-01-01), which is the convention JPL Horizons applies to dates given in UT. Before 1972 the date is read as UT1 and ΔT = TT − UT1 follows the Espenak and Meeus model. A single module performs this conversion for every source, and installs it into astronomy-engine, so two sources never disagree about which instant is meant.
Where each position comes from
For a planet, a moon or a small body, Galaxy tries the following sources in order and keeps the first that answers:
- A JPL SPK kernel (SAT441, Saturn’s moons), when the site is configured to serve one. It then takes precedence over the Horizons files. It is not enabled on this site.
- Precomputed NASA/JPL Horizons files for 34 natural bodies: exact position and velocity states in the ECLIPTIC_J2000 frame, every 4 days, from 1900-01-01 to 2101-01-01. A value from a file is compared with the body’s catalogue orbit and rejected if its distance is implausibly large or small; the next source then takes over.
- astronomy-engine, an open-source library: VSOP87 for the planets, and analytic models for the Moon and the four Galilean moons.
- Keplerian orbital elements: 18 small bodies, whose osculating elements come from Horizons at a stated epoch and are checked by a test against a Horizons position at that epoch (8 of them are referred to the Solar System barycentre: beyond Neptune, a heliocentric orbit carries the Sun’s own reflex motion); and a fallback for 24 moons, derived by script from their Horizons files, used only when a file is missing, out of range or rejected.
The 11 spacecraft and the 3 interstellar objects follow their own rule. A spacecraft is positioned only by its Horizons file, sampled at a step of 1 or 4 days (1 for: Parker Solar Probe, James Webb Space Telescope, Cassini, Juno, BepiColombo), and is not drawn outside the file’s coverage. An interstellar object is positioned by its hyperbolic elements and drawn only within ±20 years of perihelion, the range over which they were checked against Horizons.
Between two samples: conditional interpolation
A Horizons file holds exact states at a fixed step. Between two of them, a cubic (Hermite) curve is only valid if the body moves smoothly over the interval, which is false as soon as it completes several turns within one step. Galaxy therefore counts how many samples one revolution spans, using the catalogue’s mean period. From 100 samples per orbit upwards it uses the cubic. Below that, it propagates each of the two surrounding states along its own two-body orbit and blends them smoothly, so both ends stay exactly on the data.
Two refinements follow the same rule, keeping the data and linking it with the right curve. When a moon is massive enough to pull its planet around a shared barycentre (Charon and Pluto), that wobble is removed before interpolation and added back at the requested date. For a declared list of moons close to a flattened planet, the conic is travelled at the measured mean rate rather than the instantaneous one.
Keplerian orbits: ellipses and hyperbolas
For a closed orbit (eccentricity below 1), Kepler’s equation M = E − e sin E is solved for the eccentric anomaly. For an open orbit (eccentricity above 1, the interstellar objects), the hyperbolic form M = e sinh F − F is solved instead; the mean anomaly is then not an angle and is never reduced modulo 360°.
A small body orbiting the Sun moves at the rate set by the Sun’s gravitational parameter. A moon’s elements are referred to its planet, and its rate comes from its measured mean sidereal period, not from the Sun, nor from the instantaneous state the elements were taken from. Orbit lines of orbits with an eccentricity of 0.2 or more are sampled evenly in eccentric anomaly rather than in time, so that they reach their true closest point; hyperbolic trajectories are sampled evenly in hyperbolic anomaly.
SPK kernel
SPK is JPL’s binary format for high-precision ephemerides. Galaxy can read the SAT441 kernel for Saturn’s moons in a background worker, by HTTP range requests, composing segments through their common centre when the kernel stores no direct pair. It is not enabled on this site, so Saturn’s moons use the Horizons files; the figures below were measured locally with the kernel.
| Moon | Window | Mean (km) | Max (km) |
|---|---|---|---|
| Enceladus | 1800–2199 | 9.17 | 55.9 |
| Rhea | 1800–2199 | 6.17 | 40.4 |
| Iapetus | 1800–2199 | 2.37 | 16.4 |
| Titan | 1800–2199 | 3.69 | 24.3 |
| Mimas | 1800–2199 | 10.6 | 67.1 |
| Tethys | 1800–2199 | 8.65 | 53.5 |
| Dione | 1800–2199 | 6.85 | 43.6 |
| Hyperion | 1800–2199 | 3.48 | 22.6 |
Educational and Explore scales
Positions are computed in astronomical units (AU), then placed in the scene with a single constant K = 35 scene units, so that the Earth, at 1 AU, sits at 35 units in both modes. Only the display changes between the two modes; the computed position is the same.
- Explore is true scale: distance = AU × 35, and every body has its physical radius. A distant body can be too small to see, exactly as in space; navigation aids are drawn as labels, never by enlarging a body, and the optical zoom changes only the camera’s field of view.
- Educational is not to scale: distances are compressed to √AU × 35 along the true direction, and bodies are drawn at enlarged teaching sizes so that all of them stay visible. Around Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, the moons’ distances are then multiplied by one common factor per planet, the smallest that keeps every moon outside its enlarged planet, so their order of distance is preserved. Eccentric orbits keep their shape.
Measured accuracy
Every source is compared with the NASA/JPL Horizons API (geometric state vectors, J2000 ecliptic, time in UT) at 48 dates per row, spread over the window with a reproducible pseudo-random time of day. The error is the distance between Galaxy’s position and Horizons’ position, in kilometres and in radii of the body. Horizons is the reference here, not absolute truth: its own uncertainty is not included. Measured on 2026-09-17 by scripts/validate-against-horizons.mjs, whose Horizons answers are cached so that the measurement can be replayed.
| Body | Source used | Mean (km) | 95th pct (km) | Max (km) | Mean (body radii) |
|---|---|---|---|---|---|
| Mercury | astronomy-engine | 2,637 | 4,801 | 5,010 | 1.08 |
| Venus | astronomy-engine | 1,428 | 2,543 | 3,129 | 0.24 |
| Earth | astronomy-engine | 4,823 | 5,853 | 6,373 | 0.76 |
| Moon | astronomy-engine | 910 | 1,670 | 2,048 | 0.52 |
| Mars | JPL Horizons file | 3.06 | 15.9 | 31.6 | 0.00090 |
| Phobos | JPL Horizons file | 14.2 | 29.9 | 34.2 | 1.28 |
| Deimos | JPL Horizons file | 7.02 | 18.8 | 31.1 | 1.13 |
| Jupiter | JPL Horizons file | 55.4 | 103 | 123 | 0.00077 |
| Amalthea | JPL Horizons file | 1,046 | 1,522 | 1,596 | 12.5 |
| Io | astronomy-engine | 223 | 433 | 498 | 0.12 |
| Europa | astronomy-engine | 129 | 239 | 245 | 0.08 |
| Ganymede | astronomy-engine | 182 | 251 | 279 | 0.07 |
| Callisto | astronomy-engine | 371 | 579 | 611 | 0.15 |
| Saturn | JPL Horizons file | 3.92 | 10.7 | 13.7 | 0.000065 |
| Enceladus | JPL Horizons file | 641 | 878 | 900 | 2.54 |
| Rhea | JPL Horizons file | 221 | 392 | 396 | 0.29 |
| Iapetus | JPL Horizons file | 42.6 | 82.2 | 85.5 | 0.06 |
| Titan | JPL Horizons file | 20.6 | 38.6 | 40.3 | 0.0080 |
| Mimas | JPL Horizons file | 777 | 1,120 | 1,170 | 3.92 |
| Tethys | JPL Horizons file | 559 | 706 | 709 | 1.05 |
| Dione | JPL Horizons file | 254 | 491 | 516 | 0.45 |
| Hyperion | JPL Horizons file | 81.4 | 466 | 559 | 0.60 |
| Uranus | JPL Horizons file | 5.24 | 14.4 | 15.0 | 0.00020 |
| Miranda | JPL Horizons file | 43.6 | 78.2 | 130 | 0.18 |
| Ariel | JPL Horizons file | 34.2 | 89.6 | 108 | 0.06 |
| Umbriel | JPL Horizons file | 39.0 | 130 | 152 | 0.07 |
| Titania | JPL Horizons file | 19.4 | 62.2 | 80.3 | 0.02 |
| Oberon | JPL Horizons file | 9.12 | 28.8 | 62.6 | 0.01 |
| Neptune | JPL Horizons file | 23.4 | 46.8 | 47.4 | 0.00095 |
| Triton | JPL Horizons file | 55.7 | 107 | 108 | 0.04 |
| Proteus | JPL Horizons file | 63.3 | 86.2 | 91.3 | 0.30 |
| Nereid | JPL Horizons file | 32.6 | 63.8 | 66.4 | 0.19 |
| Ceres | JPL Horizons file | 2.41 | 12.3 | 19.6 | 0.0051 |
| Vesta | Keplerian elements | 2,731,000 | 7,375,000 | 8,441,000 | 10,420 |
| Pallas | Keplerian elements | 1.7 × 10⁷ | 3.6 × 10⁷ | 3.8 × 10⁷ | 65,510 |
| Hygiea | Keplerian elements | 6.0 × 10⁷ | 1.3 × 10⁸ | 1.4 × 10⁸ | 275,600 |
| Pluto | JPL Horizons file | 1.67 | 3.14 | 4.49 | 0.0014 |
| Charon | JPL Horizons file | 0.63 | 3.76 | 5.10 | 0.0010 |
| Styx | JPL Horizons file | 69.2 | 194 | 293 | 13.3 |
| Nix | JPL Horizons file | 47.3 | 127 | 173 | 2.63 |
| Kerberos | JPL Horizons file | 19.6 | 61.3 | 80.8 | 3.27 |
| Hydra | JPL Horizons file | 12.6 | 45.4 | 51.7 | 0.68 |
| Eris | JPL Horizons file | 0.52 | 2.25 | 2.58 | 0.00044 |
| Haumea | JPL Horizons file | 1.48 | 4.35 | 5.69 | 0.0019 |
| Makemake | JPL Horizons file | 0.64 | 4.14 | 6.14 | 0.00089 |
| Orcus | Keplerian elements | 254,800 | 694,300 | 737,200 | 556 |
| Quaoar | Keplerian elements | 422,600 | 2,181,000 | 3,048,000 | 770 |
| Gonggong | Keplerian elements | 26,010 | 71,110 | 80,940 | 42.3 |
| Sedna | Keplerian elements | 14,010 | 58,790 | 79,680 | 28.1 |
| Halley | Keplerian elements | 3.6 × 10⁷ | 1.6 × 10⁸ | 2.2 × 10⁸ | 6,502,000 |
| Bennu | Keplerian elements | 1.7 × 10⁸ | 3.4 × 10⁸ | 3.4 × 10⁸ | 7.0 × 10⁸ |
| Eros | Keplerian elements | 1,263,000 | 3,103,000 | 3,394,000 | 150,000 |
| Itokawa | Keplerian elements | 2.4 × 10⁷ | 6.6 × 10⁷ | 8.2 × 10⁷ | 1.5 × 10⁸ |
| Ryugu | Keplerian elements | 4.6 × 10⁷ | 1.8 × 10⁸ | 2.7 × 10⁸ | 1.0 × 10⁸ |
| Ida | Keplerian elements | 1.4 × 10⁷ | 3.1 × 10⁷ | 3.3 × 10⁷ | 920,100 |
Keplerian elements describe an orbit without the pull of the planets, so their error grows with the distance in time from their epoch. Over two centuries it is large; near the epoch it is much smaller:
| Body | Window | Mean (km) | 95th pct (km) | Max (km) |
|---|---|---|---|---|
| Vesta | epoch ±10 yr (1990–2010) | 555,400 | 1,420,000 | 1,562,000 |
| Pallas | epoch ±10 yr (1990–2010) | 2,106,000 | 5,894,000 | 6,658,000 |
| Hygiea | epoch ±10 yr (1990–2010) | 1,854,000 | 4,998,000 | 5,470,000 |
| Orcus | epoch ±10 yr (1990–2010) | 2,310 | 6,321 | 6,629 |
| Quaoar | epoch ±10 yr (1990–2010) | 1,819 | 4,730 | 6,533 |
| Gonggong | epoch ±10 yr (1990–2010) | 912 | 1,692 | 1,801 |
| Sedna | epoch ±10 yr (1990–2010) | 881 | 1,536 | 1,750 |
| Halley | epoch ±10 yr (1990–2010) | 2,541,000 | 5,491,000 | 5,927,000 |
| Bennu | epoch ±10 yr (2016–2036) | 252,500 | 597,700 | 876,000 |
| Eros | epoch ±10 yr (2016–2036) | 270,000 | 687,100 | 901,000 |
| Itokawa | epoch ±10 yr (2016–2036) | 466,600 | 2,607,000 | 3,125,000 |
| Ryugu | epoch ±10 yr (2016–2036) | 1,089,000 | 4,724,000 | 6,950,000 |
| Ida | epoch ±10 yr (2016–2036) | 2,442,000 | 5,827,000 | 6,581,000 |
| 1I/ʻOumuamua | perihelion ±20 yr (1997–2037) | 6,483,000 | 1.6 × 10⁷ | 1.7 × 10⁷ |
| 2I/Borisov | perihelion ±20 yr (1999–2039) | 3,770,000 | 7,733,000 | 8,535,000 |
| 3I/ATLAS | perihelion ±20 yr (2005–2045) | 1.2 × 10⁷ | 3.3 × 10⁷ | 3.7 × 10⁷ |
For spacecraft the median is the meaningful figure: errors peak briefly around close flybys and perihelia, where the trajectory bends faster than the file’s step can resolve.
| Mission | Coverage | Median (km) | 95th pct (km) | Max (km) |
|---|---|---|---|---|
| Voyager 1 | 1977-09-07 → 2099-12-30 | 0.00063 | 0.0019 | 0.11 |
| Voyager 2 | 1977-08-22 → 2099-12-30 | 0.00070 | 0.0016 | 64.1 |
| Parker Solar Probe | 2018-08-14 → 2029-12-30 | 0.22 | 507 | 90,500 |
| James Webb Space Telescope | 2021-12-27 → 2031-08-22 | 0.02 | 0.04 | 0.46 |
| New Horizons | 2006-01-22 → 2049-12-28 | 0.00066 | 0.13 | 39.1 |
| Cassini | 1997-10-18 → 2017-09-13 | 1.78 | 5,130 | 93,750 |
| Juno | 2011-08-08 → 2028-09-28 | 0.12 | 690 | 47,700 |
| Rosetta | 2004-03-05 → 2016-10-02 | 0.23 | 20.3 | 27.0 |
| BepiColombo | 2018-10-23 → 2027-04-08 | 0.41 | 21.5 | 30,510 |
| OSIRIS-REx | 2016-09-11 → 2030-03-16 | 2.17 | 158 | 487 |
| Hayabusa2 | 2014-12-06 → 2026-11-23 | 3.86 | 1,727 | 2,630 |
Full measurements, by source
Each source measured on its own, over its own windows, including those the app only uses as a fallback. “Dates” is the number of dates at which the source gave a position.
astronomy-engine (VSOP87 and analytic models) (26)
| Body | Frame | Window | Dates | Mean (km) | Median (km) | 95th pct (km) | Max (km) | Mean (body radii) |
|---|---|---|---|---|---|---|---|---|
| Mercury | heliocentric | 1900–2100 | 48 | 2,637 | 2,376 | 4,801 | 5,010 | 1.08 |
| Mercury | heliocentric | 1600–2400 | 48 | 3,814 | 3,382 | 8,486 | 8,823 | 1.56 |
| Venus | heliocentric | 1900–2100 | 48 | 1,428 | 1,341 | 2,543 | 3,129 | 0.24 |
| Venus | heliocentric | 1600–2400 | 48 | 1,882 | 1,695 | 3,055 | 4,741 | 0.31 |
| Earth | heliocentric | 1900–2100 | 48 | 4,823 | 4,723 | 5,853 | 6,373 | 0.76 |
| Earth | heliocentric | 1600–2400 | 48 | 5,081 | 4,934 | 6,477 | 7,064 | 0.80 |
| Moon | relative to planet | 1900–2100 | 48 | 10.8 | 10.8 | 12.7 | 13.2 | 0.0062 |
| Moon | relative to planet | 1800–2199 | 48 | 11.0 | 10.8 | 14.3 | 14.8 | 0.0063 |
| Mars | heliocentric | 1900–2100 | 48 | 2,891 | 2,760 | 5,281 | 6,665 | 0.85 |
| Mars | heliocentric | 1600–2400 | 48 | 3,152 | 2,715 | 5,583 | 7,630 | 0.93 |
| Jupiter | heliocentric | 1900–2100 | 48 | 22,820 | 21,620 | 33,890 | 54,040 | 0.32 |
| Jupiter | heliocentric | 1600–2200 (limited to Horizons coverage) | 48 | 26,500 | 24,160 | 50,130 | 57,380 | 0.37 |
| Io | relative to planet | 1900–2100 | 48 | 218 | 224 | 418 | 439 | 0.12 |
| Io | relative to planet | 1800–2199 | 48 | 412 | 407 | 746 | 814 | 0.23 |
| Europa | relative to planet | 1900–2100 | 48 | 119 | 123 | 202 | 246 | 0.08 |
| Europa | relative to planet | 1800–2199 | 48 | 189 | 193 | 334 | 369 | 0.12 |
| Ganymede | relative to planet | 1900–2100 | 48 | 170 | 176 | 253 | 279 | 0.06 |
| Ganymede | relative to planet | 1800–2199 | 48 | 235 | 204 | 420 | 443 | 0.09 |
| Callisto | relative to planet | 1900–2100 | 48 | 386 | 351 | 643 | 711 | 0.16 |
| Callisto | relative to planet | 1800–2199 | 48 | 382 | 371 | 549 | 654 | 0.16 |
| Saturn | heliocentric | 1900–2100 | 48 | 80,730 | 77,970 | 132,800 | 145,100 | 1.34 |
| Saturn | heliocentric | 1749–2250 (limited to Horizons coverage) | 48 | 80,480 | 74,130 | 126,600 | 143,300 | 1.33 |
| Uranus | heliocentric | 1900–2100 | 48 | 112,200 | 103,900 | 201,400 | 234,800 | 4.39 |
| Uranus | heliocentric | 1600–2400 | 48 | 127,500 | 117,300 | 216,000 | 284,100 | 4.99 |
| Neptune | heliocentric | 1900–2100 | 48 | 262,600 | 278,700 | 428,200 | 432,600 | 10.6 |
| Neptune | heliocentric | 1800–2199 (limited to Horizons coverage) | 48 | 250,500 | 232,100 | 434,000 | 468,000 | 10.1 |
Precomputed JPL Horizons files (34)
| Body | Frame | Window | Dates | Mean (km) | Median (km) | 95th pct (km) | Max (km) | Mean (body radii) |
|---|---|---|---|---|---|---|---|---|
| Mars | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 2.93 | 0.88 | 16.1 | 30.3 | 0.00086 |
| Phobos | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 12.9 | 10.6 | 26.5 | 31.2 | 1.17 |
| Deimos | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 6.23 | 4.75 | 15.8 | 16.3 | 1.00 |
| Jupiter | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 53.5 | 50.8 | 121 | 132 | 0.00075 |
| Amalthea | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 1,089 | 1,288 | 1,481 | 1,504 | 13.0 |
| Saturn | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 3.55 | 3.05 | 8.12 | 10.3 | 0.000059 |
| Enceladus | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 556 | 687 | 865 | 878 | 2.20 |
| Rhea | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 190 | 203 | 355 | 370 | 0.25 |
| Iapetus | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 38.7 | 38.2 | 77.1 | 82.2 | 0.05 |
| Titan | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 19.0 | 18.9 | 37.5 | 39.5 | 0.0074 |
| Mimas | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 798 | 857 | 1,080 | 1,168 | 4.03 |
| Tethys | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 554 | 628 | 708 | 708 | 1.04 |
| Dione | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 255 | 275 | 483 | 498 | 0.45 |
| Hyperion | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 65.1 | 32.8 | 131 | 639 | 0.48 |
| Uranus | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 6.97 | 6.41 | 14.1 | 15.9 | 0.00027 |
| Miranda | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 49.1 | 46.6 | 81.1 | 118 | 0.21 |
| Ariel | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 27.6 | 18.0 | 73.2 | 98.9 | 0.05 |
| Umbriel | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 43.3 | 29.0 | 105 | 166 | 0.07 |
| Titania | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 21.1 | 12.1 | 76.6 | 85.8 | 0.03 |
| Oberon | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 16.9 | 8.24 | 73.7 | 87.7 | 0.02 |
| Neptune | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 28.5 | 30.6 | 46.5 | 47.0 | 0.0012 |
| Triton | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 39.9 | 47.0 | 60.9 | 61.1 | 0.03 |
| Proteus | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 54.0 | 53.0 | 86.8 | 89.8 | 0.26 |
| Nereid | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 12.2 | 14.8 | 19.9 | 22.3 | 0.07 |
| Ceres | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 2.34 | 0.17 | 12.4 | 21.2 | 0.0050 |
| Pluto | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 1.91 | 1.77 | 3.87 | 5.55 | 0.0016 |
| Charon | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 1.45 | 1.47 | 2.46 | 2.46 | 0.0024 |
| Styx | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 89.3 | 85.6 | 202 | 320 | 17.2 |
| Nix | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 42.4 | 33.2 | 131 | 165 | 2.36 |
| Kerberos | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 25.0 | 10.6 | 75.7 | 84.3 | 4.16 |
| Hydra | relative to planet | 1900-01-02 → 2100-12-29 | 48 | 10.5 | 4.13 | 43.9 | 53.1 | 0.57 |
| Eris | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 0.55 | 0.43 | 1.65 | 2.83 | 0.00047 |
| Haumea | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 0.75 | 0.36 | 3.79 | 5.28 | 0.00096 |
| Makemake | heliocentric | 1900-01-02 → 2100-12-29 | 48 | 0.79 | 0.44 | 3.44 | 5.88 | 0.0011 |
Keplerian elements (catalogue, moon fallbacks, interstellar objects) (129)
| Body | Frame | Window | Dates | Mean (km) | Median (km) | 95th pct (km) | Max (km) | Mean (body radii) |
|---|---|---|---|---|---|---|---|---|
| Phobos | relative to planet | epoch ±10 yr (2015–2035) | 48 | 351 | 322 | 647 | 779 | 31.7 |
| Phobos | relative to planet | 1900–2100 | 48 | 680 | 487 | 2,055 | 2,447 | 61.4 |
| Phobos | relative to planet | 1800–2199 | 48 | 2,691 | 1,833 | 7,350 | 8,518 | 243 |
| Deimos | relative to planet | epoch ±10 yr (2015–2035) | 48 | 300 | 214 | 706 | 800 | 48.4 |
| Deimos | relative to planet | 1900–2100 | 48 | 590 | 497 | 1,196 | 1,391 | 95.2 |
| Deimos | relative to planet | 1800–2199 | 48 | 658 | 575 | 1,326 | 1,433 | 106 |
| Amalthea | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,774 | 2,591 | 5,375 | 5,695 | 33.2 |
| Amalthea | relative to planet | 1900–2100 | 48 | 2,836 | 2,706 | 5,374 | 5,485 | 34.0 |
| Amalthea | relative to planet | 1800–2199 | 48 | 2,764 | 2,731 | 4,599 | 5,658 | 33.1 |
| Enceladus | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,760 | 2,426 | 5,531 | 7,653 | 10.9 |
| Enceladus | relative to planet | 1900–2100 | 48 | 3,111 | 2,966 | 5,681 | 7,752 | 12.3 |
| Enceladus | relative to planet | 1800–2199 | 48 | 3,079 | 2,743 | 6,349 | 8,201 | 12.2 |
| Rhea | relative to planet | epoch ±10 yr (2015–2035) | 48 | 1,882 | 1,638 | 4,090 | 4,663 | 2.46 |
| Rhea | relative to planet | 1900–2100 | 48 | 2,652 | 2,494 | 5,762 | 6,157 | 3.47 |
| Rhea | relative to planet | 1800–2199 | 48 | 2,651 | 2,569 | 5,339 | 5,955 | 3.47 |
| Iapetus | relative to planet | epoch ±10 yr (2015–2035) | 48 | 8,961 | 7,825 | 18,650 | 24,510 | 12.2 |
| Iapetus | relative to planet | 1900–2100 | 48 | 68,550 | 54,000 | 161,400 | 176,700 | 93.4 |
| Iapetus | relative to planet | 1800–2199 | 48 | 135,800 | 130,900 | 297,100 | 310,400 | 185 |
| Titan | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,696 | 2,601 | 6,125 | 8,033 | 1.05 |
| Titan | relative to planet | 1900–2100 | 48 | 30,950 | 21,320 | 79,390 | 97,820 | 12.0 |
| Titan | relative to planet | 1800–2199 | 48 | 46,780 | 42,600 | 99,670 | 152,100 | 18.2 |
| Mimas | relative to planet | epoch ±10 yr (2015–2035) | 48 | 18,850 | 11,640 | 51,610 | 59,930 | 95.1 |
| Mimas | relative to planet | 1900–2100 | 48 | 125,500 | 99,930 | 272,000 | 282,200 | 633 |
| Mimas | relative to planet | 1800–2199 | 48 | 150,600 | 146,100 | 309,500 | 362,900 | 760 |
| Tethys | relative to planet | epoch ±10 yr (2015–2035) | 48 | 4,449 | 3,850 | 10,690 | 11,290 | 8.38 |
| Tethys | relative to planet | 1900–2100 | 48 | 10,990 | 9,967 | 22,820 | 24,170 | 20.7 |
| Tethys | relative to planet | 1800–2199 | 48 | 14,700 | 12,930 | 29,490 | 36,780 | 27.7 |
| Dione | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,102 | 2,000 | 3,668 | 4,266 | 3.74 |
| Dione | relative to planet | 1900–2100 | 48 | 1,641 | 1,416 | 3,122 | 4,518 | 2.92 |
| Dione | relative to planet | 1800–2199 | 48 | 2,145 | 2,029 | 3,853 | 4,592 | 3.82 |
| Hyperion | relative to planet | epoch ±10 yr (2015–2035) | 48 | 352,800 | 326,700 | 716,100 | 856,900 | 2,613 |
| Hyperion | relative to planet | 1900–2100 | 48 | 348,100 | 291,500 | 750,300 | 844,800 | 2,579 |
| Hyperion | relative to planet | 1800–2199 | 48 | 336,500 | 313,300 | 821,200 | 980,700 | 2,492 |
| Miranda | relative to planet | epoch ±10 yr (2015–2035) | 48 | 8,603 | 6,558 | 19,150 | 20,020 | 36.5 |
| Miranda | relative to planet | 1900–2100 | 48 | 7,651 | 6,766 | 16,740 | 17,690 | 32.5 |
| Miranda | relative to planet | 1800–2199 | 48 | 8,790 | 7,314 | 19,050 | 19,430 | 37.3 |
| Ariel | relative to planet | epoch ±10 yr (2015–2035) | 48 | 354 | 280 | 731 | 829 | 0.61 |
| Ariel | relative to planet | 1900–2100 | 48 | 486 | 386 | 1,230 | 1,519 | 0.84 |
| Ariel | relative to planet | 1800–2199 | 48 | 1,202 | 778 | 3,671 | 4,570 | 2.08 |
| Umbriel | relative to planet | epoch ±10 yr (2015–2035) | 48 | 595 | 487 | 1,437 | 1,647 | 1.02 |
| Umbriel | relative to planet | 1900–2100 | 48 | 2,325 | 2,251 | 4,393 | 5,155 | 3.98 |
| Umbriel | relative to planet | 1800–2199 | 48 | 2,399 | 2,083 | 5,281 | 7,161 | 4.10 |
| Titania | relative to planet | epoch ±10 yr (2015–2035) | 48 | 740 | 691 | 1,678 | 1,774 | 0.94 |
| Titania | relative to planet | 1900–2100 | 48 | 1,839 | 1,636 | 4,220 | 4,420 | 2.33 |
| Titania | relative to planet | 1800–2199 | 48 | 1,941 | 1,602 | 3,951 | 5,261 | 2.46 |
| Oberon | relative to planet | epoch ±10 yr (2015–2035) | 48 | 1,201 | 1,145 | 2,354 | 2,676 | 1.58 |
| Oberon | relative to planet | 1900–2100 | 48 | 2,172 | 2,069 | 3,822 | 5,007 | 2.85 |
| Oberon | relative to planet | 1800–2199 | 48 | 2,385 | 2,089 | 5,384 | 5,923 | 3.13 |
| Triton | relative to planet | epoch ±10 yr (2015–2035) | 48 | 4,347 | 3,596 | 11,580 | 12,310 | 3.21 |
| Triton | relative to planet | 1900–2100 | 48 | 50,840 | 41,960 | 132,100 | 148,400 | 37.6 |
| Triton | relative to planet | 1800–2199 | 48 | 82,440 | 65,510 | 209,000 | 232,200 | 61.0 |
| Proteus | relative to planet | epoch ±10 yr (2015–2035) | 48 | 537 | 514 | 749 | 755 | 2.58 |
| Proteus | relative to planet | 1900–2100 | 48 | 728 | 636 | 1,563 | 1,984 | 3.50 |
| Proteus | relative to planet | 1800–2199 | 48 | 1,200 | 1,076 | 2,423 | 2,716 | 5.77 |
| Nereid | relative to planet | epoch ±10 yr (2015–2035) | 48 | 94,740 | 79,110 | 297,800 | 510,900 | 557 |
| Nereid | relative to planet | 1900–2100 | 48 | 1,126,000 | 837,900 | 4,169,000 | 4,528,000 | 6,623 |
| Nereid | relative to planet | 1800–2199 | 48 | 2,373,000 | 1,429,000 | 6,679,000 | 7,027,000 | 13,960 |
| Ceres | heliocentric | epoch ±10 yr (1990–2010) | 48 | 1,690,000 | 884,800 | 6,027,000 | 7,515,000 | 3,574 |
| Ceres | heliocentric | 1900–2100 | 48 | 1.4 × 10⁷ | 1.4 × 10⁷ | 2.5 × 10⁷ | 2.9 × 10⁷ | 28,900 |
| Ceres | heliocentric | 1600–2400 | 48 | 5.7 × 10⁷ | 5.7 × 10⁷ | 1.1 × 10⁸ | 1.2 × 10⁸ | 120,100 |
| Vesta | heliocentric | epoch ±10 yr (1990–2010) | 48 | 555,400 | 428,900 | 1,420,000 | 1,562,000 | 2,120 |
| Vesta | heliocentric | 1900–2100 | 48 | 2,731,000 | 2,243,000 | 7,375,000 | 8,441,000 | 10,420 |
| Vesta | heliocentric | 1600–2400 | 48 | 1.0 × 10⁷ | 1.0 × 10⁷ | 2.0 × 10⁷ | 2.3 × 10⁷ | 38,940 |
| Pallas | heliocentric | epoch ±10 yr (1990–2010) | 48 | 2,106,000 | 1,920,000 | 5,894,000 | 6,658,000 | 8,227 |
| Pallas | heliocentric | 1900–2100 | 48 | 1.7 × 10⁷ | 1.9 × 10⁷ | 3.6 × 10⁷ | 3.8 × 10⁷ | 65,510 |
| Pallas | heliocentric | 1600–2400 | 48 | 6.8 × 10⁷ | 6.4 × 10⁷ | 1.3 × 10⁸ | 1.9 × 10⁸ | 264,200 |
| Hygiea | heliocentric | epoch ±10 yr (1990–2010) | 48 | 1,854,000 | 1,276,000 | 4,998,000 | 5,470,000 | 8,544 |
| Hygiea | heliocentric | 1900–2100 | 48 | 6.0 × 10⁷ | 6.0 × 10⁷ | 1.3 × 10⁸ | 1.4 × 10⁸ | 275,600 |
| Hygiea | heliocentric | 1600–2400 | 48 | 2.2 × 10⁸ | 2.1 × 10⁸ | 4.1 × 10⁸ | 4.6 × 10⁸ | 997,800 |
| Pluto | heliocentric | epoch ±10 yr (1990–2010) | 48 | 8,238 | 6,077 | 22,180 | 33,660 | 6.93 |
| Pluto | heliocentric | 1900–2100 | 48 | 475,600 | 457,200 | 1,122,000 | 1,319,000 | 400 |
| Pluto | heliocentric | 1800–2199 (limited to Horizons coverage) | 48 | 1,683,000 | 1,080,000 | 6,593,000 | 8,303,000 | 1,417 |
| Charon | relative to planet | epoch ±10 yr (2015–2035) | 48 | 15.0 | 14.3 | 18.5 | 18.9 | 0.02 |
| Charon | relative to planet | 1900–2100 | 48 | 12.4 | 12.8 | 18.3 | 18.9 | 0.02 |
| Charon | relative to planet | 1800–2199 | 48 | 10.8 | 11.0 | 18.8 | 19.3 | 0.02 |
| Styx | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,110 | 2,137 | 2,385 | 2,511 | 406 |
| Styx | relative to planet | 1900–2100 | 48 | 2,103 | 2,116 | 2,425 | 2,540 | 405 |
| Styx | relative to planet | 1800–2199 | 48 | 2,132 | 2,119 | 2,514 | 2,575 | 410 |
| Nix | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,957 | 3,204 | 3,976 | 4,009 | 164 |
| Nix | relative to planet | 1900–2100 | 48 | 2,645 | 2,436 | 4,357 | 4,667 | 147 |
| Nix | relative to planet | 1800–2199 | 48 | 2,392 | 2,026 | 4,368 | 5,732 | 133 |
| Kerberos | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,341 | 2,420 | 3,475 | 3,578 | 390 |
| Kerberos | relative to planet | 1900–2100 | 48 | 2,431 | 2,512 | 3,227 | 3,578 | 405 |
| Kerberos | relative to planet | 1800–2199 | 48 | 2,346 | 2,262 | 3,492 | 4,267 | 391 |
| Hydra | relative to planet | epoch ±10 yr (2015–2035) | 48 | 2,624 | 2,820 | 3,874 | 4,256 | 142 |
| Hydra | relative to planet | 1900–2100 | 48 | 2,210 | 2,164 | 3,944 | 4,439 | 120 |
| Hydra | relative to planet | 1800–2199 | 48 | 2,489 | 2,326 | 4,728 | 5,478 | 135 |
| Eris | heliocentric | epoch ±10 yr (1990–2010) | 48 | 774 | 778 | 1,377 | 1,474 | 0.67 |
| Eris | heliocentric | 1900–2100 | 48 | 11,070 | 5,898 | 38,780 | 42,680 | 9.52 |
| Eris | heliocentric | 1600–2400 | 48 | 458,000 | 149,900 | 2,193,000 | 2,692,000 | 394 |
| Haumea | heliocentric | epoch ±10 yr (1990–2010) | 48 | 1,364 | 1,099 | 3,233 | 3,511 | 1.75 |
| Haumea | heliocentric | 1900–2100 | 48 | 134,600 | 69,330 | 513,200 | 740,400 | 173 |
| Haumea | heliocentric | 1600–2400 | 48 | 6,325,000 | 2,614,000 | 2.8 × 10⁷ | 3.4 × 10⁷ | 8,109 |
| Makemake | heliocentric | epoch ±10 yr (1990–2010) | 48 | 1,566 | 1,219 | 3,446 | 4,381 | 2.19 |
| Makemake | heliocentric | 1900–2100 | 48 | 126,900 | 88,700 | 379,400 | 453,000 | 178 |
| Makemake | heliocentric | 1600–2400 | 48 | 5,638,000 | 1,356,000 | 1.8 × 10⁷ | 2.2 × 10⁷ | 7,885 |
| Orcus | heliocentric | epoch ±10 yr (1990–2010) | 48 | 2,310 | 1,442 | 6,321 | 6,629 | 5.04 |
| Orcus | heliocentric | 1900–2100 | 48 | 254,800 | 172,600 | 694,300 | 737,200 | 556 |
| Orcus | heliocentric | 1600–2400 | 48 | 6,200,000 | 4,002,000 | 1.8 × 10⁷ | 1.8 × 10⁷ | 13,540 |
| Quaoar | heliocentric | epoch ±10 yr (1990–2010) | 48 | 1,819 | 1,381 | 4,730 | 6,533 | 3.31 |
| Quaoar | heliocentric | 1900–2100 | 48 | 422,600 | 118,300 | 2,181,000 | 3,048,000 | 770 |
| Quaoar | heliocentric | 1600–2400 | 48 | 6,121,000 | 7,340,000 | 1.3 × 10⁷ | 1.3 × 10⁷ | 11,150 |
| Gonggong | heliocentric | epoch ±10 yr (1990–2010) | 48 | 912 | 828 | 1,692 | 1,801 | 1.48 |
| Gonggong | heliocentric | 1900–2100 | 48 | 26,010 | 18,290 | 71,110 | 80,940 | 42.3 |
| Gonggong | heliocentric | 1600–2400 | 48 | 1,132,000 | 406,600 | 4,021,000 | 4,128,000 | 1,841 |
| Sedna | heliocentric | epoch ±10 yr (1990–2010) | 48 | 881 | 868 | 1,536 | 1,750 | 1.77 |
| Sedna | heliocentric | 1900–2100 | 48 | 14,010 | 5,233 | 58,790 | 79,680 | 28.1 |
| Sedna | heliocentric | 1600–2400 | 48 | 239,000 | 130,400 | 807,800 | 928,100 | 480 |
| Halley | heliocentric | epoch ±10 yr (1990–2010) | 48 | 2,541,000 | 2,161,000 | 5,491,000 | 5,927,000 | 462,000 |
| Halley | heliocentric | 1900–2100 | 48 | 3.6 × 10⁷ | 1.2 × 10⁷ | 1.6 × 10⁸ | 2.2 × 10⁸ | 6,502,000 |
| Halley | heliocentric | 1600–2400 | 48 | 3.2 × 10⁸ | 1.2 × 10⁸ | 1.3 × 10⁹ | 2.7 × 10⁹ | 5.9 × 10⁷ |
| Bennu | heliocentric | epoch ±10 yr (2016–2036) | 48 | 252,500 | 198,600 | 597,700 | 876,000 | 1,042,000 |
| Bennu | heliocentric | 1900–2100 | 48 | 1.7 × 10⁸ | 1.9 × 10⁸ | 3.4 × 10⁸ | 3.4 × 10⁸ | 7.0 × 10⁸ |
| Bennu | heliocentric | 1900–2135 (limited to Horizons coverage) | 48 | 1.7 × 10⁸ | 2.0 × 10⁸ | 3.3 × 10⁸ | 3.4 × 10⁸ | 7.0 × 10⁸ |
| Eros | heliocentric | epoch ±10 yr (2016–2036) | 48 | 270,000 | 191,900 | 687,100 | 901,000 | 32,070 |
| Eros | heliocentric | 1900–2100 | 48 | 1,263,000 | 1,033,000 | 3,103,000 | 3,394,000 | 150,000 |
| Eros | heliocentric | 1600–2400 | 48 | 3,493,000 | 3,504,000 | 8,461,000 | 1.0 × 10⁷ | 414,800 |
| Itokawa | heliocentric | epoch ±10 yr (2016–2036) | 48 | 466,600 | 191,900 | 2,607,000 | 3,125,000 | 2,828,000 |
| Itokawa | heliocentric | 1900–2100 | 48 | 2.4 × 10⁷ | 1.7 × 10⁷ | 6.6 × 10⁷ | 8.2 × 10⁷ | 1.5 × 10⁸ |
| Itokawa | heliocentric | 1600–2400 | 48 | 1.9 × 10⁸ | 1.7 × 10⁸ | 3.8 × 10⁸ | 3.9 × 10⁸ | 1.2 × 10⁹ |
| Ryugu | heliocentric | epoch ±10 yr (2016–2036) | 48 | 1,089,000 | 180,300 | 4,724,000 | 6,950,000 | 2,431,000 |
| Ryugu | heliocentric | 1900–2100 | 48 | 4.6 × 10⁷ | 2.0 × 10⁷ | 1.8 × 10⁸ | 2.7 × 10⁸ | 1.0 × 10⁸ |
| Ryugu | heliocentric | 1600–2400 | 48 | 1.2 × 10⁸ | 4.7 × 10⁷ | 3.5 × 10⁸ | 3.6 × 10⁸ | 2.6 × 10⁸ |
| Ida | heliocentric | epoch ±10 yr (2016–2036) | 48 | 2,442,000 | 2,184,000 | 5,827,000 | 6,581,000 | 155,500 |
| Ida | heliocentric | 1900–2100 | 48 | 1.4 × 10⁷ | 1.3 × 10⁷ | 3.1 × 10⁷ | 3.3 × 10⁷ | 920,100 |
| Ida | heliocentric | 1600–2400 | 48 | 5.3 × 10⁷ | 5.1 × 10⁷ | 1.1 × 10⁸ | 1.1 × 10⁸ | 3,402,000 |
| 1I/ʻOumuamua | heliocentric | perihelion ±20 yr (1997–2037) | 48 | 6,483,000 | 4,850,000 | 1.6 × 10⁷ | 1.7 × 10⁷ | n/a |
| 2I/Borisov | heliocentric | perihelion ±20 yr (1999–2039) | 48 | 3,770,000 | 4,056,000 | 7,733,000 | 8,535,000 | n/a |
| 3I/ATLAS | heliocentric | perihelion ±20 yr (2005–2045) | 48 | 1.2 × 10⁷ | 8,700,000 | 3.3 × 10⁷ | 3.7 × 10⁷ | n/a |
SPK kernel SAT441 (measured locally, not enabled on this site) (8)
| Body | Frame | Window | Dates | Mean (km) | Median (km) | 95th pct (km) | Max (km) | Mean (body radii) |
|---|---|---|---|---|---|---|---|---|
| Enceladus | relative to planet | 1800–2199 | 48 | 9.17 | 0.00058 | 45.8 | 55.9 | 0.04 |
| Rhea | relative to planet | 1800–2199 | 48 | 6.17 | 0.00050 | 30.1 | 40.4 | 0.0081 |
| Iapetus | relative to planet | 1800–2199 | 48 | 2.37 | 0.00020 | 11.2 | 16.4 | 0.0032 |
| Titan | relative to planet | 1800–2199 | 48 | 3.69 | 0.00029 | 19.7 | 24.3 | 0.0014 |
| Mimas | relative to planet | 1800–2199 | 48 | 10.6 | 0.00073 | 52.1 | 67.1 | 0.05 |
| Tethys | relative to planet | 1800–2199 | 48 | 8.65 | 0.00062 | 46.0 | 53.5 | 0.02 |
| Dione | relative to planet | 1800–2199 | 48 | 6.85 | 0.00055 | 35.6 | 43.6 | 0.01 |
| Hyperion | relative to planet | 1800–2199 | 48 | 3.48 | 0.00032 | 16.5 | 22.6 | 0.03 |
What a date says
The scene shows one instant, but each piece of data describes an instant of its own, and they rarely coincide. Satellite imagery does not exist for a scene set in 2030, so the latest real image is shown and the gap to the scene is written next to it. Every dated element therefore carries its own label, and there is no single control saying the whole scene is accurate: the label says what the data is, the measured gap says how far it is.
- live: the scene is at the present moment, within five minutes, and the data describes it.
- observed: a measurement of a past instant, such as a satellite image of that day.
- reconstructed (model): a model of a past or present instant, such as a reanalysis (ERA5, MERRA-2) or a position computed for a date already behind us.
- predicted: a model of a future instant, inside the window where its source has been measured. A weather forecast beyond a week is marked as having low confidence.
- extrapolated: a calculation outside every window where its gap to the reference was measured. It still draws something, and says that nothing establishes it.
- unavailable: no data for that instant, so nothing is drawn rather than something borrowed from another date.
Known limits
- The Earth is drawn at the Earth-Moon barycentre, not at its own centre, to avoid a monthly wobble that would show as a zigzag at true scale and high speed; the Moon is placed correctly relative to that point. This offset is what the Earth row of the accuracy table measures (4,823 km on average).
- Bodies positioned by Keplerian elements alone (Vesta, Pallas, Hygiea, Orcus, Quaoar, Gonggong, Sedna, Halley, Bennu, Eros, Itokawa, Ryugu, Ida) drift away from their true position far from their epoch, because the two-body model ignores planetary perturbations. The tables above give the size of that drift.
- Outside 1900-01-01 to 2101-01-01, the Horizons files do not apply: planets fall back to astronomy-engine, other bodies to their Keplerian elements. The production table covers 1900–2100 only; the full measurements show the sources over wider windows.
- The asteroids and comets of the optional small-body layer, up to several thousand, come live from the JPL Small-Body Database and are propagated from its elements. They are not part of this measurement.
- Some synchronous moons do not spin exactly at their orbital period in the catalogue, so the face they turn towards their planet slowly drifts: Moon 0.0059° per year, Io 7.00° per year, Europa 1.74° per year, Ganymede 2.14° per year, Callisto 0.71° per year. The other synchronous moons are locked exactly.
- 25 bodies have never been mapped globally: their surfaces are illustrative, not scientific. The sources page lists them.