Skip to main content

How moon apps know the moon (and how accurate they are)

A good moon app does not look the moon up anywhere. It computes it. The moon’s motion has been understood well enough for centuries that its position, phase, and rise time can be calculated from a date, a time, and a location, using the same formulas the printed almanacs use. This guide covers where that math comes from, what “accurate” actually means for different questions, the ways apps still manage to get it wrong, and how to check any app for yourself.

Where the moon’s position comes from

The moon’s orbit is famously messy. The sun tugs on it, Earth’s equatorial bulge tugs on it, and the orbit itself precesses, so the moon’s path never quite repeats. Astronomers deal with this using lunar theories: enormous series of periodic terms that, added together, give the moon’s longitude, latitude, and distance at any moment. The modern reference is the ELP theory (Éphéméride Lunaire Parisienne), refined against laser ranging to reflectors left on the lunar surface.

Nobody needs the full theory to draw a phase icon. In 1991 the Belgian astronomer Jean Meeus published Astronomical Algorithms, which tabulates a carefully truncated version of the ELP series: the terms big enough to matter, in a form a competent programmer can implement. Those tables became the shared foundation of almost every serious astronomy app, planetarium program, and almanac calculation in use today. When two independent moon apps agree to the minute, it is usually because both are running Meeus.

The truncation costs very little. The abbreviated series places the moon within about 10 arcseconds of its true position, roughly 1/180 of the moon’s apparent width. For phase, illumination, rise and set times, and distance, that is far more precision than anything a screen displays.

What “accurate” means depends on the question

“How accurate are moon phase apps” has three different answers, because the questions differ in difficulty.

Phase and illumination: essentially exact. The phase depends only on the angle between the sun and moon as seen from Earth, and that angle comes straight out of the series. Any app that actually does the math will report illumination correct to a fraction of a percent and the instant of full moon within a minute or two of the observatory value. Phase also does not depend on where you are standing. The moon is 79 percent illuminated for everyone on Earth at the same moment; only your clock’s label for that moment changes.

Rise and set times: minute-level, and location matters. Moonrise is a local event. It depends on your latitude and longitude, and on atmospheric refraction, which bends light around the horizon and makes the moon visible while it is still geometrically below it. The standard calculation also has to account for the moon’s parallax, which is large because the moon is close. An app that handles all of this and knows your real coordinates will land within a minute or so of the national almanac. An app that uses your timezone’s capital city instead of your position can be off by many minutes, and near the poles the errors grow fast.

Eclipse timing: the hardest. Eclipses live at the intersection of the sun’s position, the moon’s position, and the geometry of shadows, and small errors in any input shift the contact times. Getting eclipse circumstances right to the minute requires more care than any other lunar calculation an app performs, which is why it is a good stress test of an engine.

The three ways apps get it wrong

When a moon app is wrong, it is almost never because celestial mechanics failed. It is one of three engineering shortcuts.

Hardcoded tables that drift. Some apps ship a lookup table of phase dates instead of computing them. Tables run out, get truncated to whole days, or were generated for one timezone and silently applied to all of them. The telltale sign is an app that says the full moon is on Tuesday when the almanac says 11:38 pm Monday in your timezone.

Server lookups that fail offline and leak your location. Other apps send your coordinates to a server and display whatever comes back. Now the moon requires a network connection, an API that stays paid for, and a company that receives your location every time you glance at a widget. When the server is slow, the widget is stale. When the API changes, the app is wrong everywhere at once. None of this is necessary; the math fits comfortably on a phone.

Timezone bugs around midnight. The subtle one. Phase instants are computed in universal time and must be converted to yours. Near midnight, a conversion done carelessly shifts the full moon to the wrong calendar day, and daylight saving transitions add two more chances per year to be an hour off. If an app disagrees with the almanac by exactly one day or exactly one hour, this is usually why.

Why on-device computation wins twice

Doing the math on the device solves the privacy problem and the reliability problem with the same decision. There is no server to receive your location, and no server to be down, slow, stale, or wrong. The calculation takes a fraction of a millisecond, works on an airplane and in a canyon, and produces the same answer every time because it is the same math the almanac uses.

That is how Gibbous is built. The engine implements the classic Meeus formulation of the truncated ELP series and computes everything, phase instants, illumination, moonrise and moonset, distance, and eclipse circumstances, entirely on your device. It is validated in automated tests against independent reference ephemerides: phase times against USNO-verified tables, positions against NASA JPL Horizons, rise and set times against the US Naval Observatory. It needs no network and never sees your location; the coordinates you save stay on your device. You can read more about that design on the about page.

How to sanity-check any moon app

You do not have to take any app’s word for it, including ours. Two checks take five minutes:

  1. Compare a rise time. Look up today’s moonrise for your city in your national almanac (in the US, the Naval Observatory’s rise and set tables; most countries publish an equivalent). A sound app should match within a minute or two. Repeat the check with the phone in airplane mode; if the answer disappears or goes stale, the app was phoning home for it.
  2. Compare a phase instant. Find the published time of the next full moon, convert it to your timezone, and see whether the app agrees on both the time and the calendar day. A one-day disagreement is a timezone bug, not an astronomy problem.

An app that passes both is doing real astronomy. For today’s numbers computed the honest way, see the moon phase today.

Plan it in Gibbous

Get Gibbous