Create your free account

Enter your email and we'll send a 6-digit code — no password needed.
We only keep your email and the username you choose. We never share or sell your email, and we don't send marketing — we use it only to email you a sign-in code. Read our privacy policy.
Learn

What Decides a Moon's Surface? Ice, Haze, Volcanoes or Seas

By Chris West · Published October 14, 2026

You choose the material, the physics chooses the surface

Our solar system’s moons look nothing alike. Io is splashed yellow and orange by active volcanoes. Europa is a cracked white shell. Titan is hidden under a golden fog. Triton is pale pink frost. Part of the difference is what they are made of, but much of it comes from where they ended up: how warm their neighbourhood is, how big they are, and how hard their planet squeezes them.

TerraForge’s moon engine is built around that idea. In the builder’s Moons tab, each moon has a Made ofmenu with seven choices: Auto (forms naturally), Silicate rock, Iron-rich rock, Water ice, Carbon-rich, Sulfur-rich, and Nitrogen & methane ice. You never pick “volcanic” or “hazy” directly. You pick a material, and the engine asks four questions in order: does the material survive at this temperature, is the moon being heated by tides, can it hold an atmosphere, and is its surface habitable?

The answer becomes the moon’s look, and a short label on its card tells you what happened. If you chose nitrogen ice and the moon was too warm to keep it, the card says “Nitrogen ices lost: water ice”.

Ice, frost and haze: a ladder of temperatures

The first question is about temperature. A moon shares its planet’s distance from the star, so the engine gives it the planet’s equilibrium temperature: the temperature a body settles at when it is warmed by starlight alone. The engine works it out as 278 kelvin times the fourth root of the star’s brightness divided by the distance squared (brightness relative to the Sun, distance in astronomical units, or AU, the Earth–Sun distance). Kelvin is the scale that starts at absolute zero; water freezes at 273 K.

Each ice has a ceiling above which it cannot stay on an airless surface, because it turns straight to gas and drifts away. That process is called sublimation. The engine’s ceilings come with real moons as reference points:

The surface thresholds in TerraForge's moon composition rules.
Rule in the engineThresholdReal-world anchor
Nitrogen and methane frost survivesbelow 60 KTriton (about 38 K), Pluto (about 40 K)
Nitrogen held as a thick haze insteadbelow 130 K and at least 0.015 Earth massesTitan (94 K, 0.0225 Earth masses)
Exposed water ice survivesbelow 170 KEuropa (about 100 K), Callisto (about 110 K)
Enough gravity to keep a warm atmosphereat least 0.1 Earth massesThe engine’s own planet floor

The haze rule is the interesting one. Titan and Triton are both made partly of nitrogen ices, but Titan is about six times heavier, and its gravity holds that nitrogen as a thick atmosphere with an orange haze of organic smog. Triton, lighter and colder, keeps its nitrogen frozen on the ground. So in TerraForge a nitrogen moon colder than 60 K is frost, a moon between that and 130 K is haze if it weighs at least 0.015 Earth masses (Titan passes, the Moon at 0.0123 and Triton at 0.0036 do not), and a small nitrogen moon that is too warm for frost loses those ices to space and is left as water ice.

Water ice follows the same pattern one rung higher. Below 170 K it stays. Above it, a small moon sublimates its ice and is left as bare rock. A moon of at least a tenth of an Earth mass is treated differently: it can hold air, so the engine runs it through the same classifier and habitability score it uses for planets. If its surface temperature lands between 273 K and 373 K and it keeps an atmosphere and enough water, it becomes a temperate moon with open seas. It counts as habitable at a score of 45 or more. Colder than that, it stays frozen over. Hotter, the water boils away.

Tidal heating: why Io erupts and Europa has an ocean

A planet’s gravity pulls harder on a moon’s near side than its far side, stretching it slightly. If the moon’s orbit is a perfect circle, the stretch never changes. If the orbit is slightly oval (astronomers call this eccentricity), the moon is squeezed and relaxed every lap, and that flexing turns into heat inside it. This is tidal heating.

Io is the extreme case. It orbits close to Jupiter, and its neighbours Europa and Ganymede keep tugging its orbit out of round through a regular rhythm called an orbital resonance: Io laps Jupiter four times for every two of Europa’s and every one of Ganymede’s. The result is the most volcanically active body known. Europa, further out, is flexed more gently, enough to keep a salty ocean liquid under its ice shell. Saturn’s small moon Enceladus does something similar and sprays water from cracks near its south pole.

How the engine measures it

TerraForge computes a tidal heat number for each surviving moon. It grows with the square of the eccentricity, with the moon’s mass to the power of five-thirds, and with the inverse sixth power of its distance. That last part is why distance dominates: halve the orbit and the heating rises 64 times. The engine does not track real resonances. Instead, if any two surviving moons orbit within a factor of three of each other’s distance, it treats the system as resonant and raises every moon’s eccentricity from 0.005 to 0.02, which multiplies the heating by 16.

On that scale, Io comes out at about 0.037. The thresholds are:

  • 0.02 and above:rock is volcanic. Silicate, iron-rich and sulfur-rich moons get fresh lava surfaces. Sulfur-rich moons switch from a dull pale rock to Io’s yellows and orange-reds, because Io’s colours come from its eruptions. Carbon-rich moons are the exception: the engine treats them as primitive, unlayered bodies that do not resurface this way.
  • Between 0.02 and 8: a cold, icy moon of a giant planet (more than five Earth masses) can hold a subsurface oceanunder its shell. Its ocean score peaks near a heat value of 0.5 and grows with size up to a mass ratio of 0.001. At 45 or more the card reads “OCEAN WORLD - LIFE POSSIBLE”.
  • 8 and above:runaway heating. A warm moon large enough to have kept its water boils it away and becomes molten rock. If the whole system’s tidal heat passes 8, the planet itself is kept molten as well.

Where a moon can live: rings, crashes and slow retreat

Before any of that, the engine decides whether the moon survives at all. Each moon gets a fate badge, decided by where it sits.

Inside the Roche limit, it becomes rings.The Roche limit is the distance inside which a planet’s tides pull harder than a moon’s own gravity holds it together. The engine uses the textbook fluid formula: 2.44 planet radii, times the cube root of the planet’s density over the moon’s. Every moon is given a density of 3.3 grams per cubic centimetre. That puts the limit at about 2.80 planet radii for a rocky world, 1.92 for an ice-giant-class planet and 1.79 for a gas giant. A moon placed inside shows “INSIDE ROCHE - RINGS” and adds to the planet’s ring system. Saturn’s rings, mostly water ice, sit inside its Roche limit, where loose material cannot gather into a moon.

Inside the synchronous orbit, it falls.The synchronous orbit is the distance at which a moon goes round exactly as fast as the planet spins, about 6.6 planet radii for an Earth with a 24-hour day. A moon inside it raises a tidal bulge that trails behind it and drags it slowly inward. In the engine, a moon of at least 0.1 percent of the planet’s mass strikes the planet (“DECAYING - CRASHES”), which remelts a rocky planet’s surface. A lighter one is torn apart on the way down and becomes rings. That is the expected end for Mars’s moon Phobos, which is spiralling inward and should break up or strike Mars within tens of millions of years.

Outside it, the moon recedes.Beyond the synchronous orbit, the bulge runs ahead of the moon and nudges it outward while braking the planet’s spin. Our Moon is drifting away by about 3.8 centimetres a year, measured by bouncing lasers off mirrors the Apollo astronauts left behind. The engine labels a moon of at least 0.05 percent of the planet’s mass “Stable - receding” and lighter ones simply “Stable”. It does not move the moon over time. It adds the braking to the planet’s day instead, anchored so that a Moon-sized companion at 60 planet radii adds about 18 hours.

Moons crowded too close together merge once you build the planet. And a moon must stay within 40 percent of the planet’s Hill sphere, the region where the planet’s gravity beats the star’s. The Orbit slider ends at that distance, which is why its maximum changes as you move the planet.

Try it in the builder

Open the builder and choose Jovian Havenfrom Quick Start Presets: a 60-Earth-mass giant at 5.2 AU with two moons. In the Moons tab, the inner moon is close enough to be strongly heated and the outer one sits near the heating sweet spot. Set the outer moon’s Made of menu to Water ice and it scores 96 as a subsurface ocean.

Now drag Distance from Star inward. Around 2.7 AU from a Sun-like star the temperature passes 170 K, and that moon’s ice can no longer survive. Its card flips to “Ice lost: volcanic rock”, because what is left is rock that the tides are still kneading. Switch the material to Sulfur-rich and you get Io’s colours. Switch to Carbon-rich and the same heating leaves a dark, cratered surface.

For haze, try the Saturn’s Ringspreset and set its moon at 20 planet radii (the Titan analogue) to Nitrogen & methane ice. It reads “Hazy atmosphere”. Drag its Mass slider down and it drops below 0.015 Earth masses and loses its nitrogen.

Once a material is chosen, a Tint slider appears. It moves the colour along a range that material can plausibly have, from blue-white to cream for water ice, say, or pink frost to pale for nitrogen ice. It cannot leave that range, so tint is a matter of taste, never a change to the physics. An ocean moon ignores tint and keeps its own blue, because that colour signals a candidate for life.

What the engine simplifies

The main shortcuts, stated plainly:

  • Temperature ignores how much light a moon reflects, and tidal heat does not raise the temperature these rules use. Real Io is cold on the ground between its volcanoes, so this is closer to the truth than it sounds, but it is still a shortcut.
  • Every moon uses a rock density of 3.3 for the Roche limit. Real icy moons are less dense, so their limit sits further out than the engine puts it.
  • Resonance is a distance-ratio shortcut, not real orbital rhythms, and in real physics tidal heating falls off with distance even more steeply than the engine’s sixth power.
  • Auto moons use an older, looser rule: a subsurface ocean is allowed up to 300 K. Choose Water ice and the stricter 170 K ceiling applies.

Exomoons are not yet confirmed. Kepler-1625 b and Kepler-1708 b each have a reported candidate that is still debated, and Kepler-167 e is a cool, Jupiter-sized world of the kind that could host an icy ocean moon. Of the roughly 3,900 catalogue planets heavier than five Earths, only about one in seven has an equilibrium temperature below 300 K, and about 250 sit below the 170 K needed for exposed water ice. Most known giants are too hot (see why most exoplanets are hot giants). You can read Kepler-1625 b and Kepler-1708 b in our directory.

A banded gas giant with four moons in different colors: a yellow sulfur moon, two rust-red rock moons and a blue water moon

New: Choose What Your Moons Are Made Of 🌙

Every moon used to be grey rock, white ice or blue ocean, decided for you. Now each one has a "Made of" choice in the builder's Moons tab — silicate rock, iron, water ice, carbon, sulfur, or nitrogen and methane ice — and the physics decides what that becomes. Put water ice too close to the star and it boils off to bare rock. Put sulfur where a neighbouring moon keeps it tidally flexed and it erupts in Io's yellows. Give a Titan-sized moon nitrogen ice far from the sun and it wraps itself in haze. Hang a water moon about the mass of Earth off a giant planet in the habitable zone and it can hold air and open seas — scored for life on the same scale as a planet, with a day as long as its orbit. A tint slider nudges the colour, but only as far as that material could really go.

Create your free account

Enter your email and we'll send a 6-digit code — no password needed.
We only keep your email and the username you choose. We never share or sell your email, and we don't send marketing — we use it only to email you a sign-in code. Read our privacy policy.

Send feedback

We're still building out the best experience we can — and we'd love your input. Tell us about features you enjoy, ideas you'd like to see, or pain points where something feels off, and we'll know where to look next.

Type
Idea
Bug
Pain point
Other