The $125 Million Unit Label

In September 1999, NASA’s Mars Climate Orbiter reached Mars after travelling for nine months.

Then it disappeared.

The spacecraft had approached the planet on the wrong trajectory, roughly 170 kilometres lower than planned. It either burned up in the Martian atmosphere or escaped back into space.

The famous explanation sounds almost too simple: one team used English units, and another expected metric units.

More precisely, ground software produced thruster impulse data in pound-force seconds. The interface specification required newton seconds. The navigation software treated the numbers as if they were already metric.

The digits travelled successfully. Their meaning did not.


The idea in 20 seconds

  • Two systems can exchange valid data and still misunderstand each other.
  • Units, formats and assumptions are part of the data, not documentation around it.
  • A handoff is an interface, even when no screen exists.
  • The most expensive bugs often live between teams rather than inside either team.

Compatibility is not the ability to receive the same number. It is the ability to interpret that number the same way.

What actually went wrong

The Mars Climate Orbiter used small thruster firings to manage the buildup of angular momentum in its reaction wheels. Ground software modelled the effect of those firings.

According to NASA’s mishap report, a software output called the “Small Forces” file supplied impulse data in pound-force seconds. The documented requirement was newton seconds. One pound-force second is about 4.45 newton seconds.

The receiving system did not know the value needed conversion. It accepted the number and continued calculating. Each mismatch introduced a small trajectory error, and over the long journey those errors accumulated.

By the time the spacecraft reached Mars, there was no harmless correction screen. Physics processed the input exactly as given.

NASA artist rendering of the Mars Climate Orbiter, its solar array and high-gain dish extended, passing above the orange surface of Mars.
The Mars Climate Orbiter, lost on 23 September 1999 when a navigation value supplied in pound-force seconds was read by the flight software as newton-seconds. Artist rendering: NASA/JPL, public domain.

This was not just “someone forgot metric”

The unit mismatch is memorable because it is easy to explain. But NASA’s investigation found a larger system around it: weak communication, incomplete verification, insufficient systems engineering and warning signs that were not fully resolved.

The lesson is not:

Engineers should remember their units.

That places the entire failure inside one person’s head. The stronger lesson is:

A critical system should not require memory to preserve meaning across a boundary.

The interface documentation specified metric units, but the data itself did not enforce them. The receiving model had no effective guardrail to reject or question the unexpected values. The system trusted an assumption it could have tested.

The mission control room at NASA's Jet Propulsion Laboratory, rows of monitors facing wall displays tracking spacecraft status.
The Space Flight Operations Facility at JPL, the control room where navigators tracked the Mars Climate Orbiter and only found the discrepancy after it was too late to correct. Photo: Alan Mak, CC BY-SA 3.0.

A number without a unit is unfinished

Imagine receiving a message that says:

The temperature is 35.

Is that pleasant or dangerous? The number is syntactically complete and semantically useless.

Yet software systems exchange similarly incomplete values all the time:

  • price: 100 without a currency,
  • date: 07/08/26 without a format or time zone,
  • weight: 12 without kilograms or pounds,
  • duration: 500 without seconds or milliseconds,
  • status: 1 without a shared definition,
  • user_id: 342 without knowing which system issued it.

Humans use context to fill the gap. Computers use assumptions. An assumption is simply invisible data.

A retractable tape measure printed with both feet and inches on one edge and centimetres on the other, two coins resting below it for scale.
The same length, printed as two different number lines. Read the wrong one and a correct measurement becomes a wrong answer. Photo: Stilfehler, public domain.

The interface was between organisations

We usually imagine an interface as something a user taps. The orbiter reminds us that interfaces also exist:

  • between teams,
  • between companies,
  • between software services,
  • between hardware and software,
  • between a specification and an implementation,
  • between a measurement and a decision.

Lockheed Martin built the spacecraft. NASA’s Jet Propulsion Laboratory navigated it. Both contained skilled people doing reasonable work inside their own contexts. The failure emerged where those contexts met.

This is common in large systems. Each component passes its own tests. Each team’s dashboard is green. The output from one system becomes the input to another. Then the whole thing fails.

Local correctness is not the same as system correctness.

The Mars Climate Orbiter suspended by cables in a Lockheed Martin cleanroom, with technicians in white protective suits working below it.
Lockheed Martin engineers preparing the spacecraft in Denver. JPL's navigation team, hundreds of miles away, would read this hardware's thruster data in a different unit than the one it was sent in. Photo: NASA/JPL, public domain.

The type system we needed

In ordinary programming, a type can prevent us from adding text to a number. Critical systems need richer types.

Not:

impulse = 25.6

But:

impulse = 25.6 newton-seconds

The unit should travel with the value, be checked at the boundary and become difficult to discard accidentally.

The same principle helps non-technical interfaces:

  • show the currency beside every monetary total,
  • show the time zone beside meeting times,
  • write months as words when date order may be ambiguous,
  • label whether a price is monthly or annual,
  • state whether a measurement is net, gross, estimated or final.

Context should not live only in somebody’s memory or in a PDF nobody opens. It should remain attached to the decision.

Close-up of a yellow Pickett log-log slide rule, its scales and unit markings printed directly alongside the numbers.
A slide rule's scales are printed with their units in view, not left to memory. Software interfaces rarely offer the same guarantee. Photo: Benjamin Crowell, GNU Free Documentation License.

The handoff test

For every important exchange between systems or teams, ask:

What assumptions are not inside the payload?

Units, time zones, formats, identifiers, precision and definitions.

Can the receiver validate the value?

Use ranges, schemas, invariants and independent checks.

Does the failure look obviously wrong?

A value can be technically valid but physically implausible.

Has the complete path been tested?

Not component A and component B separately, but the actual exchange from A through B to the outcome.

Can somebody see the interpretation?

Expose what the receiving system believes, not only what the sending system transmitted.

A large white dish antenna at NASA's Goldstone Deep Space Communications Complex, angled skyward against a clear blue sky.
Every command and every telemetry value to and from the orbiter crossed the Deep Space Network's antennas at Goldstone. The channel carried the number faithfully; nothing on it checked what the number meant. Photo: NASA/JPL, public domain.

The small-error illusion

The mismatch did not necessarily produce one spectacularly absurd command. It produced small errors that accumulated.

That makes the story useful beyond spacecraft. A tiny rounding error repeated across millions of transactions becomes real money. A minor time-zone mismatch repeated across calendars becomes missed meetings. A slightly biased recommendation repeated across a platform changes what people see. A small accessibility barrier repeated at every step becomes exclusion.

We notice dramatic failures. Systems are often destroyed by quiet ones with excellent attendance.

The curved limb of Mars seen from orbit, its thin atmosphere visible as a pale band against black space above cratered terrain.
No single thruster firing was dramatic. Repeated across a nine-month cruise, the small errors added up to a trajectory that passed roughly 170 kilometres too close to this atmosphere. Photo: NASA/Viking 1 orbiter, public domain.

One final thought

People often describe the Mars Climate Orbiter as a cautionary tale about metric versus imperial units. That is true, but incomplete.

The spacecraft was lost because meaning fell out of a handoff. The value passed through the interface. The file opened. The software ran. Nobody received an obvious error. Everything worked except the shared understanding.

The most dangerous interface is not one that crashes. It is one that confidently translates the wrong meaning.

A button with a bad label can send a user to the wrong page. A number with a missing label can send a spacecraft into a planet.

Sources and further reading

More writing

human factorserror preventionsystems design

The Word "Takeoff" Had Two Meanings

The Tenerife airport disaster shows why critical systems cannot rely on language that merely sounds understood.

human factorssystems design

The Game Was a Disguise

A protest campaign for Afghanistan's banned women cricketers, and the lesson that design's first job is to protect the people in it.

human factorssystems design

We Made Them Better Traders. They Still Lost.

I designed a crypto app that made trading simple, fun, and better. People still lost money, because the real game was never about skill.