Solar System Scope (CC BY 4.0) — Sun, planets, Earth's Moon, Earth cloud overlay, Earth night-lights overlay, Earth ocean/specular mask Björn Jónsson's planetary maps — Galilean moons, Rhea USGS Astrogeology Science Center (public domain) — Saturnian moons (Enceladus, Tethys, Rhea, Titan, Iapetus), Pluto (New Horizons LORRI/MVIC mosaic), Mars / Moon / Mercury topography overlays (color shaded relief from MOLA / LOLA / MESSENGER MDIS) NASA-JPL / USGS (public domain) — Earth topography overlay (hypsometric world map) NASA Photojournal PIA17214 (NASA/JPL-Caltech/SSI, public domain) — Mimas global map USGS Astrogeology (NASA, public domain) — Phobos (Viking mosaic), Triton (Voyager 2 colour mosaic), Charon (New Horizons LORRI/MVIC mosaic) NOAA Science On a Sphere — Uranus's moons (Miranda, Ariel, Umbriel, Titania, Oberon; Voyager 2 southern-hemisphere mosaics by Paul Schenk / Steve Albers) and Deimos (Viking/MRO mosaic by Phil Stooke), built from public-domain NASA imagery
Constellation art
Constellation figure illustrations by Johan Meuris, from Stellarium's “Western” sky culture (Free Art License) — brightened and draped onto each constellation's real stars
Place data
GeoNames (CC BY 4.0) — Location section country / state / city catalog
Body details
Wikipedia (CC BY-SA) — summaries shown in the per-body Details popup, fetched on demand
A real-time 3D model of the solar system — the Sun, all eight planets, 29 moons, five dwarf planets, and several spacecraft — placed by real ephemerides against the J2000 star sphere. Drag to look around, scroll to magnify, and double-click any body to follow it.
What you can do:
Travel in time — scrub, step, or play from 4713 BC to AD 8000, up to a year per second.
Change vantage — free orbit, geocentric, from inside any body, or standing on Earth's surface as a planetarium.
Switch scale — a compact cabinet layout, or true linear-AU distances and true diameters.
See real light — day/night terminators, Saturn's ring shadows, and mutual eclipse / transit shadows between planets and moons.
Explore the sky — catalogue or Milky Way star maps, the 88 constellations, the ecliptic, and per-body distance / magnitude / clocks.
Dig deeper — click a body (or its label) to pin its panel, then open a Wikipedia summary in a popup via the Details link.
The sections below are a full reference for every control.
Dedicated to my late friend, Chris Short, GradDipSc (Astronomy), with whom I had many discussions about astronomy over a pint of Guinness.
Mouse & touch
Drag (or one-finger swipe)
Rotate the view (free mode) or look around in place (from-body / Earth-surface modes). In the from-X modes the rotation rate is locked to the FOV — what's under the cursor stays under the cursor.
Scroll wheel (or two-finger drag)
Dolly the camera in / out of the scene (free view only). In the from-X modes there's no dolly target, so the plain wheel magnifies instead (see below). On touch, drag two fingers up the screen to dolly toward the target, down to dolly away — independent of the pinch-to-magnify gesture, so you can do both at once.
Ctrl + scroll (or pinch)
Adjust telescope magnification (camera FOV, 0.01° narrow to 90° wide). Each notch is a constant ratio so the perceived zoom rate is the same at every magnification.
Right-drag (or three-finger drag)
Pan the orbit centre across the scene — moves both the camera and the target together so the orbit geometry is preserved (free view only). The world point under the cursor / fingers tracks them 1:1.
FOV, Dolly & Pan controls (right edge)
Three controls centred on the right edge, each grabbed by its icon. Two vertical sliders: the telescope adjusts magnification (camera FOV), and the double-arrow dollies the camera in / out (free view only) — drag up to zoom / move in, down to zoom / move out. Below them a square pan pad with a four-way arrow: drag it in any direction to slide the view left / right / up / down (free view only); grabbing it releases any followed body. Every control springs back to centre on release. They mirror the Ctrl+scroll, scroll-wheel, and right-drag gestures — handy on a trackpad or touchscreen with no modifier keys.
Hover a body
Preview a tooltip with name, distance, magnitude and clocks (mouse / pen).
Click (or tap) a body
Pin the info panel at the pointer — the same fields plus a Details link that opens a Wikipedia summary in a popup. Click / tap empty space to dismiss. Works with labels off.
Click (or tap) a body label
Pin the same panel — handy for a sub-pixel body that's hard to click directly.
Double-click (or double-tap) body
Lock the camera to follow that body. In Free view the camera physically tracks the body's world position (you can still drag-orbit and dolly around it). In any from-X view (geocentric, from-body, Earth surface) the camera's anchored, so the look direction tracks the body instead — selecting Mars from Earth surface keeps Mars centred as it rises, transits, and sets.
Double-click (or double-tap) empty space
Release the follow lock (works for both kinds of follow).
Click (or tap) a star
Ring it and surface it in the Find Star dropdown.
Click (or tap) a constellation label
Pin the line pattern as the highlighted constellation; click again to clear.
Hover a constellation label
Preview that constellation without changing the pinned highlight (desktop only).
Keyboard
0
Reset telescope magnification to the default 45° FOV.
Esc
Release the body-follow lock (same as double-clicking empty space). Also clears the from-X follow target if a Find Star / Find Constellation lock is active.
Settings panel
Click the cog button at the top-left of the screen to slide the settings panel in from the left. Click the ‹ chevron in the panel header (or anywhere outside the panel) to slide it back out. The panel groups its controls into three collapsible sections — Location, Display, and Labels — plus the always-visible Show as / Zone time-display selectors. Reset, Help, and Credits sit at the right of the panel header. Section state and panel open/closed are remembered across sessions.
Time
The clock above the time controls at the bottom of the screen is the date/time editor — there are no separate input boxes. Each part is adjustable in place: on a mouse, hover a part and roll the wheel to change it, or click it to open a spin-wheel of values; on touch, tap a part and flick the wheel. The year also accepts typed digits to jump straight to a year.
Show as
Switch the clock between a calendar date/time and the Julian Date (continuous days since 4713 BC). In Julian-Date mode, roll the wheel to step a day (hold Shift for a finer step) or click to type an exact value.
Zone
Show the calendar date/time in UTC or the browser's local zone (disabled in Julian-Date mode — JD is zone-independent). Internal calculations are always UT.
Now
Snap the simulation to the current real-world instant.
Speed
How fast simulated time advances per real second — from real-time up to one year per second.
Play / Pause
Toggle automatic time advancement.
Not-now indicator
Whenever the clock isn't tracking the live present — you've scrubbed, run faster than real-time, or paused it — a leading + (future) or − (past) shows at the left of the clock, and (off the Night Mode theme) the whole readout takes an orange tint. It clears while the clock is playing at real-time; Now resyncs to the present.
Location
Country / State / Town
Cascading dropdowns drawn from the GeoNames catalog (cities above ~100k population, plus each country's largest). Only the dropdowns that apply appear: leave Country on Auto for browser geolocation, or pick GPS (this device) to hold a live high-accuracy fix from the device's GPS receiver — the best choice on a phone in the field, at some battery cost (Auto usually returns only Wi-Fi / cell-network accuracy). The State row is hidden for countries with no meaningful subdivisions.
Lat / Lon
Decimal-degree latitude and longitude (north / east positive). Auto-fills from the place selection above; editing either one becomes a manual override that wins over the dropdowns.
Clear
Clear the manual Lat/Lon override; the fields restore to the currently picked place's coordinates (or blank if nothing is picked).
Show marker on Earth
Pin a small marker at the resolved location on Earth's globe.
Resolution priority: Lat/Lon override > GPS / place selection > browser auto-detected geolocation. While a GPS fix is still cold-starting, the auto-detected location stands in. The Earth-surface view uses whichever location is currently in effect.
View menu (top-right)
The top-right View menu picks the camera vantage. Free is the default orbit-around-the-scene mode. The body options put the camera at that body's centre and hide its mesh — a first-person look-around from inside the planet. Earth surface places the camera at the location resolved in the Location section (browser geolocation by default — the browser will prompt for permission — or the City / Lat / Lon override if you've set one), with local zenith as up and a dimmed lower hemisphere standing in for the ground. Selecting Earth surface auto-enables both Actual positions and Actual sizes so the sky reads as a real planetarium — planets become arcsec-scale dots, the Moon takes its true 60-Earth-radii distance and ~½° angular size. Use the scroll wheel to zoom in (down to 0.01° FOV) and you can resolve Jupiter's disc, Saturn's rings, etc.
Follow menu (top-right)
The top-right Follow menu picks a body for the camera to track. In Free view the camera physically translates with the body so it stays centred at constant apparent distance while you can still drag-orbit and dolly around it. In any from-X view (geocentric, from-body, Earth surface) the camera is anchored at the vantage; instead the look direction tracks the body so it stays at the screen centre as the sky moves. Pick (none) to release the lock. Double-clicking a body in the scene is the same as picking it from this menu.
Overlay menu (top-right)
The top-right Overlay menu composites a second image layer over each body's base surface — currently topography sets (e.g. shaded relief on Mars, Moon, Mercury). Pick a set to enable it; the Opacity slider that appears beneath the menu blends the overlay against the base map (0 = base only, 1 = overlay only). The × on the menu trigger clears the overlay back to None. Only bodies with an overlay map in the selected set are affected — others render with their base texture as usual.
Display panel
Texture set
Image set used for body surfaces. Painted uses the bundled equirectangular maps (Solar System Scope, USGS, mission mosaics — see Credits); Solid colors falls back to a single hue per body.
Theme
Antique = warm cabinet, Space = dark cyan UI, Night Mode = monochrome red (preserves dark-adapted eyes during astronomy use — also remaps the rendered scene to red shades via a canvas filter).
Radii
Radius vector — the radial line from the Sun to each body, indicating its current direction.
Orbits
Calculated orbit path of each body.
Trails
Render orbits as a comet trail (bright at the body, fading round to zero a year ago).
Axes
Spin-axis indicators (true IAU pole + tilt).
Auto-rotate
After a rotate-drag in Free view, keep the camera orbiting the centre of attention at the speed you released at — constant, no decay — until you click again. Click (without dragging) to stop it. Doesn't apply in Earth-surface / from-body views.
Actual positions
Use true linear AU spacing instead of the compressed cabinet layout.
Actual sizes
Use true relative diameters; sub-pixel bodies fade to a star sprite. The slider next to it scales body sizes when this is off.
Stars
Show the celestial backdrop (J2000 equatorial).
Map
Choose between an equirectangular Milky Way image, an equirectangular stars image, or the BSC5 catalog star points.
Intensity
Brightness of the chosen star map.
Find Star
Locate any BSC5 star by popular name, Bayer/Flamsteed designation, or HR number — selecting one rings it on screen and rotates the view to show it. In any from-X view the camera also keeps the star centred as Earth rotates (a Following indicator appears top-right with × to release).
Constellations
Draw the 88 IAU line patterns on the celestial sphere.
Find (constellation)
Pick a constellation by name to highlight it; the view rotates to centre it. In any from-X view the camera also keeps the constellation centroid centred as time advances.
Labels (constellation)
Show the English name of each constellation near its centre.
Ecliptic
Dashed yellow great circle marking the ecliptic — the plane the planets orbit in. Tick marks every 30° show ecliptic longitude (0° at the vernal equinox, 90° at the summer solstice, etc.).
Eclipse & transit shadows
Moons and their planets cast real Sun-lit shadows on one another. When a moon passes between the Sun and its planet, its shadow falls on the planet as a dark spot — a transit shadow, like a Galilean moon's on Jupiter; when a moon passes into the planet's shadow it goes dark — an eclipse. The umbra is near-black with a soft penumbra edge, and only the sunlit hemisphere is affected. There's no toggle — they appear automatically during real alignments, so the way to see one is to follow a planet, zoom in, and speed up time (Jupiter and Saturn show them most often). With Actual sizes on the shadows are physically scaled — small, crisp dots; with it off the moons are drawn larger and closer to their planet, so the shadows are bigger and easier to spot. Saturn additionally casts its shadow across the rings, and the rings shade the globe.
Labels (body name labels)
Each body has its own toggle, with quick group switches alongside: an All · Planets · Moons shortcut row at the top; a Moons switch on every planet that has them (flips just that planet's moons, and reveals its sub-list); and a master switch on the Dwarf Planets and Missions headings. Each group switch is tri-state — on when all of its bodies are shown, a dash when only some are. Labels follow the body around the screen; a leg connects the text to the body's edge. Click a label — or the body itself — to pin its info panel, which includes a Details link to a Wikipedia summary popup (✕ / Esc / click-outside to close).
Earth-surface mode extras
When the View menu is set to Earth surface:
Horizon ring
Dark-red compass on the local horizon with tick marks every 5° / 10° / 30°.
Compass labels
N / NE / E / SE / S / SW / W / NW around the horizon, oriented to the local north (Earth's spin axis projected onto your tangent plane).
Alt / Az indicator
Top-right badge showing the altitude and azimuth of the centre of view.
Heading lock
Click anywhere on the compass ring (within ~8° of the horizon) to lock the camera's azimuth to that direction — horizontal drag is silently undone while vertical drag still tilts up/down. Click within 10 px of a compass label (N, NE, E, …) to snap the lock to that cardinal. A second indicator appears above the Alt/Az badge showing the locked heading; click its × to release.
Point device
Phones and tablets only: tap to steer the view with the device itself — hold the phone up and the sky pans to wherever it physically points, planetarium-app style, using the motion sensors and compass (iOS asks for motion permission on first use; needs HTTPS, like location). The horizon stays level (device roll is ignored), pinch-zoom still works while pointing, and dragging the view — or locking a heading — hands control back to your finger. Compass accuracy is whatever the device's magnetometer delivers; expect a few degrees.
Dimmed ground
The lower hemisphere is darkened so the sky reads as the only "real" half.
Locked toggles
Actual positions and Actual sizes are auto-enabled and then locked while in Earth-surface view, so the sky is rendered at true scale. Both control the orbit/body scale used for the surface vantage; toggling either mid-view would jump the camera and visibly shift the orbits. Switch the View menu (top-right) to anything else to change them. They stay on after you leave — manually toggle them off if you want the decorative orrery back.
Panel buttons
Reset
Restore all settings to their defaults and reload. Lives at the right of the panel's title bar.
Help
Opens this panel. Lives at the right of the panel's title bar.
Credits
Sources, libraries, and acknowledgements. Lives at the right of the panel's title bar.
Under the hood
For the curious — how the model is actually computed. None of this needs touching to use the Orrery; it's here for the enthusiast.
Planet & Moon positions
From the astronomy-engine library (Don Cross) — a VSOP87-based analytical model accurate to sub-arcsecond across the supported −3000 … AD 8000 range.
Moons of Jupiter, Saturn, Mars, Uranus, Neptune & Pluto
Mean-Keplerian elements fitted from JPL Horizons state vectors, referred to each moon's local reference plane (the parent's equator-of-J2000 for the close-in moons; a fixed Laplace or ecliptic plane for the distant / irregular ones — Uranus, a retrograde rotator, references its pole's antipode), propagated by mean motion plus fitted secular apsidal and nodal precession, then rotated into the ecliptic. Errors are a few thousand km (≲ 1% of orbit radius) over ±100 yr of J2000 — fine for a visual orrery, not eclipse-timing prediction.
Dwarf planets
Keplerian elements from Horizons (Pluto, Ceres, Haumea, Eris, and Vesta), propagated the same way.
Spacecraft
Pre-sampled Horizons state-vector tables, resampled each frame; a marker hides outside its mission's real launch-to-end-of-data span.
Reference frame
Everything lives in ecliptic-of-J2000. astronomy-engine returns equatorial-J2000 vectors, rotated by −ε (ε = 23.439°, the J2000 obliquity) about the vernal-equinox axis into the ecliptic; the scene axes are then swapped so +Y is the north ecliptic pole and +X the vernal equinox.
Spin & tilt
Each body's orientation uses the IAU rotation model — pole right-ascension / declination plus the prime-meridian angle W(t) — so axial tilt and rotation phase are physically correct (and drive the spin-direction arrow).
Time
A continuous Julian Date anchored at J2000.0 (JD 2451545.0 = 2000-01-01 12:00 UTC). UT is treated as ≈ TT (the ~64 s offset is deliberately ignored). Kepler's equation is solved by Newton–Raphson to 1×10⁻¹².
Distance scale
Two layouts: compressed places each body at AU0.55 × 4.4 scene units (so the outer planets stay in frame); true at AU × 4.4 (1 AU = 4.4 units, linear). With Actual sizes, body radii use the same km-per-unit scale as the orbits — 1 km across a body equals 1 km along an orbit — and each moon's orbit gets its own scale so it clears the parent.
Body shapes
Gas-giant and Hyperion oblateness is a triaxial ellipsoid baked into the mesh; Vesta, Phobos, Deimos, Mimas, and the Moon carry true surface relief baked into their vertices from measured spacecraft shape data, with normals recomputed so the topography lights correctly even on close zoom. Shapes and surface maps are measured data only — brightened for visibility, never embellished — so some bodies look less dramatic here than in visualizers that add artistic detail. Deimos, say, really is that smooth: its craters are buried under a thick regolith mantle, and Viking imaged only one hemisphere well. (Mimas's Herschel relief is the one parametric model, built from measured crater geometry.)
Light & shadows
One point light at the Sun (the scene origin), ACES tone-mapping, and a logarithmic depth buffer so the camera can range from AU scale down to a 10 m spacecraft without z-fighting. All shadows are computed analytically in the surface shaders — Saturn's rings ↔ globe, and planet ↔ moon transit / eclipse shadows from the overlap of the occluder's disc with the Sun's (a real umbra and penumbra) — with no shadow maps.
Sky
Stars are the Yale Bright Star Catalogue (BSC5, J2000 equatorial) drawn as magnitude-scaled points, or an equirectangular Milky Way / star image; constellations are the 88 IAU line patterns.
Validation
A separate harness re-queries JPL Horizons and diffs it against the in-app ephemerides to keep the error bars honest.