An orrery, solved in the browser

Ephemeris

Starting up

Ephemeris J2000 elements · 1800–2050

Nine bodies · no texture files · no build step

Ephemeris

The solar system, drawn where it actually is. Every planet on this page is placed by solving Kepler’s equation against the orbital elements JPL publishes for J2000, for the date running in the strip below — so this is not an arrangement of spheres, it is tonight.

Drag the date back to 1800 or forward to 2050 and the planets go with you.

01 / 09

Sol

Ninety-nine point eight six per cent of everything

Everything else on this page is a rounding error. The Sun holds 99.86 per cent of the mass of the solar system. Jupiter is most of what is left, and the eight planets together come to about a thousandth of it.

It is also white. It looks yellow from the ground because the atmosphere scatters the blue out on the way down, and it is drawn white here for the same reason it is drawn with a darkened limb: that is what the instruments see, once you are above the air.

02 / 09

Mercury

Iron core, no coat

Mercury is a planet with its coat off. Two fifths of Earth’s diameter and better than half iron by volume, it is essentially a core that never got a proper mantle — and with no atmosphere to move heat around, noon and midnight on the same rock are six hundred degrees apart.

It turns three times for every two orbits. That is a resonance rather than a coincidence, and it stretches a single solar day to a hundred and seventy-six Earth days. At the poles, in crater floors the Sun has never once reached, there is water ice.

03 / 09

Venus

The same hand, played differently

Venus was dealt very nearly Earth’s hand: the same size to within five per cent, much the same bulk composition, a distance from the Sun that is barely worth arguing about. It now has the hottest surface in the solar system — hotter than Mercury’s, which is twice as close — because ninety-two bars of carbon dioxide will do that.

None of what you can see here is the ground. No visible-light image from orbit ever has been. What turns below is the cloud deck, and it laps the planet every four days while the surface beneath it takes two hundred and forty-three, backwards.

04 / 09

Earth

Measured from the inside

The only planet anyone has measured from the inside — worth holding on to while reading the others’ figures. Those are inferred. These are surveyed.

What is unusual is not the water, which is common, but the temperature. Earth sits in the narrow band where water is solid, liquid and vapour at once and in quantity, and all three are in this render: ice cap, ocean, cloud deck. The night side carries the only feature on this page that is not geology.

05 / 09

Mars

A world in the past tense

Mars is a world in the past tense. It had a magnetic field and lost it; then it lost the atmosphere that field had been shielding, and then the water that atmosphere had been holding down. What is left is the wreckage, preserved because there is no longer any weather worth the name to erode it.

That wreckage includes the largest volcano in the solar system and a canyon that would reach from Lisbon to Moscow. The day is thirty-seven minutes longer than ours and the axial tilt is within two degrees of it — which makes this the most familiar place nobody has ever been.

06 / 09

Jupiter

Weather, all the way down

Jupiter is not a failed star. It would need to be eighty times heavier before anything ignited, and calling it a near-miss badly undersells what it actually is: two and a half times the mass of everything else orbiting the Sun, put together.

There is no surface to land on. The bands are the circulation itself — jets running in opposite directions at neighbouring latitudes, shredding each other where they meet. A storm has been recorded near that latitude since the 1660s and the continuous record runs from 1830. It is now about a third of the width it was measured at in 1880.

07 / 09

Saturn

A ring system we are in time for

The rings are not a feature of Saturn so much as an event, and we have turned up in the middle of it. Cassini weighed them on its way down and found far too little mass for anything four and a half billion years old: current estimates put them at a few hundred million years, younger than a great many fossils, and draining into the planet fast enough to be gone within another hundred million.

They are 99.9 per cent water ice, spread very nearly three hundred thousand kilometres wide and, in most places, about ten metres thick. The dark stripe crossing them is the Cassini Division; the thin one near the outer edge is the Encke Gap. Both are drawn where they are.

08 / 09

Uranus

Knocked over, and visited once

Something knocked Uranus over and nothing has stood it back up. The axis is tipped ninety-eight degrees, so the planet rolls around its orbit on its side and it is the poles, not the equator, that take the brunt of the sunlight. A pole gets twenty-one years of unbroken day, then twenty-one of night.

Voyager 2 arrived in January 1986, at solstice, and photographed a featureless pale ball. It is still the only spacecraft ever to have gone there. Everything learned since has come from telescopes.

09 / 09

Neptune

Found with a pen before a telescope

Neptune was found with a pen. Uranus kept missing its predicted positions; Urbain Le Verrier worked backwards from the discrepancy to where an unseen planet would have to be for the sums to close, posted the coordinates to Berlin, and the observatory found it that same night, within a degree of the address.

It has the fastest winds in the solar system, around two thousand kilometres an hour, on the planet receiving the least sunlight — a problem nobody has fully closed out. The colour here is the pale blue of the 2024 reprocessing rather than the deep indigo of the Voyager press images, which were contrast-stretched to bring out the weather.

The whole system

Where everything is

Angles are true. Distances are not: orbital radii are compressed by a power of 0.62 and the globes are inflated about five times, or Neptune would be one pixel two hundred units from a Sun you could not see past. Every planet still sits exactly on its own drawn orbit, because the trace is compressed by the same function that places the planet.

1800 2050

Drag to turn the system

Colophon

How this was made, and where it cheats

The positions are real

Each planet is placed by solving Kepler’s equation — M = E − e sin E, which has no closed form — by Newton–Raphson, against the Keplerian elements JPL publishes for J2000 and their per-century rates. It is a two-body approximation with no planetary perturbations, so it lands within a few arc-minutes for the inner planets and under half a degree for the outer ones. Right for drawing a picture; wrong for flying anything.

There are no textures

Not one image file. Every surface is simplex noise evaluated on the GPU: fractal sums for terrain, ridged multifractals for mountain chains and cloud filaments, Worley cells for crater fields, and domain warping for anything that has to look stirred. Jupiter’s bands are latitude pushed through a palette ramp with a shear field over the top, and the storm is a rotation applied around a moving point.

Scale is compressed, and says so

Body radii go as r0.42 and orbital radii as r0.62. Nothing angular is touched, so eccentricity, inclination and true longitude survive intact. Rotation runs on a display clock rather than the simulation clock: the direction is real, and Venus and Uranus do turn backwards, but the periods are compressed the same way the radii are.

The colours are the measured ones

The Sun is white with a reddened limb, not orange. Neptune is the pale blue of the 2024 reprocessing rather than the enhanced Voyager indigo. Every hex is treated as sRGB and converted to linear light before it reaches a shader, which is the step whose absence makes most WebGL scenes look faintly plastic.

Nothing is tweened at the camera

Scroll sets a target and the rig damps toward it with a frame-rate independent filter. There is no timeline to interrupt, so scrubbing backwards, flinging a trackpad and jumping through the navigation all behave — and the motion is identical at 60 Hz and at 144.

It degrades on purpose

Quality is guessed from the device, then corrected from measured frame times — but only by turning the cheap knobs: resolution first, then bloom. Swapping geometry at runtime would mean recompiling nine shader programs mid-scroll, and that stall costs more than the frames it saves. With no WebGL at all, the page keeps its type and its data.

Built with Three.js r185, GSAP with ScrollTrigger, and Lenis. Simplex noise after Ashima Arts and Stefan Gustavson. Orbital elements from the Solar System Dynamics group at JPL. Type is Instrument Serif and IBM Plex.

No build step. Native ES modules and an import map. View source: it is the source.