Pick a world on the map or below. Drag to turn, scroll or pinch to zoom, click a site to fly to it. ✋ Hand control opens a full-screen view; in the Solar System it points and lands, on a globe it also zooms.
Generated with AI. Built with Claude from the published data listed under each world's sources. Not independently reviewed, so check any number you rely on against the original source.
Click a planet or moon to fly to it. Double-click it, or press Land on globe, to land on it. Scrolling only zooms. Drag to turn, scroll or pinch to zoom.
Planet orbits and positions come from JPL's approximate orbital elements (Standish): Table 1 for 1800–2050, and Table 2, with its extra terms for the giant planets, from 3000 BC to AD 3000. JPL gives the Table 2 errors in longitude as about 20″ for Mercury up to 40′ for Uranus. The planets can't be placed this way before 3000 BC: the Solar System is chaotic, so it takes a full numerical integration, and exact positions are lost entirely after tens of millions of years. Dates use the proleptic Gregorian calendar, and 1 BC is followed by AD 1. Pluto, Ceres and Vesta use single-epoch elements, so their positions are approximate, more so far from today. Moon orbits are drawn as circles at their true sizes, tilted by each planet's axial tilt as an approximation of the real planes; their positions along the orbit are illustrative. Body sizes are not to scale.
Under the pointer
Sites
Everything here stays in your browser. You can open a planet pack, build a new world from map images, or add a layer or sites to the world on screen.
A .json pack in the format described below, such as one saved from this page.
Use any global map in simple cylindrical (equirectangular) form, twice as wide as tall: a greyscale height map, a colour mosaic, or both.
Point this page at a public folder holding index.json and the world files, for example a GitHub repo served through jsDelivr.
Where Earth’s ✈ Live flights and 🛰 Satellites switches get their data. Flights: an address returning OpenSky-style JSON ({"states":[…]}) or readsb-style JSON ({"ac":[…]}, as used by adsb.lol, adsb.fi and airplanes.live). Satellites: an address returning two- or three-line elements (TLE text); {group} becomes the group picked on the globe. Your own copy or a proxy works if it allows cross-site reads (CORS).
CSV with a header row: name,lat,lon,category,note. Latitude and longitude in degrees, east positive. Category is free text.
{
"id": "venus", "name": "Venus", "kind": "Planet", "radiusKm": 6051.8, "refLabel": "6051 km sphere",
"blurb": "One or two sentences shown under the name.",
"grids": [{ // gridded maps: int16, little-endian, base64
"id": "topo", "label": "Topography", "unit": "m", "elev": true, // elev: sets the relief
"rows": 721, "cols": 1440, // rows 90°N→90°S inclusive, cols from 0°E eastward
"scale": 1, // value = stored integer × scale
"ramp": "hyps", // hyps | earth | div (zero-centred) | seq | grey
"min": -8000, "max": 10000, "ticks": [-8000, 0, 10000], "note": "…", "b64": "…" }],
"images": [{ "id": "c", "label": "Visible colour", "note": "…",
"src": "data:image/jpeg;base64,…" }], // equirectangular, 180°W at the left
"shade": "data:image/jpeg;base64,…", // optional relief shading, same layout
"categories": { "land": { "label": "Lander", "shape": "dot", "color": "#6aa8ea" } }, // dot|diamond|cross|ring
"alwaysLabel": ["land"],
"sites": [{ "name": "Venera 13", "who": "USSR", "date": "1982-03-01", "cat": "land",
"lat": -7.08, "lon": 303.0, "note": "…" }],
"features": [["Maxwell Montes", 65.2, 3.3]],
"points": [{ "id": "q", "label": "Quakes", "on": false, "color": "#6aa8ea",
"classes": { "deep": ["Deep quake", "#6aa8ea"] }, "ring": false,
"items": [["A1", -15.7, -36.6, "deep", "867 km deep", 0]] }], // last: diameter km, drawn when ring is true
"views": [["Ishtar", 60, 20, 3.9]], // name, lat, lon, distance in globe radii
"sources": [["Citation text", "https://…"]]
}