How these predictions are calculated
Nothing on this site is copied from an eclipse table. Every date, duration, path width and contact time is computed in JavaScript from planetary theory, then checked against NASA's published canon. This page sets out the method, the constants and the measured error, so you can judge how much to trust it.
Positions
Geocentric positions of the Sun and Moon come from astronomy-engine, an MIT-licensed implementation of VSOP87 for the Earth's orbit and ELP for the Moon's. Vectors are rotated from J2000 to equator-of-date and taken as apparent positions, with light-time and aberration applied.
Besselian elements
From those two vectors the site builds the classical Besselian elements. The ζ axis points from the Moon towards the Sun; x and y place the Moon on the fundamental plane through the Earth's centre, in equatorial Earth radii. The shadow-cone radii follow from the angles f1 and f2:
| sin f1 | (R☉ + k) / D | penumbral half-angle |
|---|---|---|
| sin f2 | (R☉ − k) / D | umbral half-angle |
| l1 | (z + k/sin f1) · tan f1 | penumbral radius on the plane |
| l2 | (z − k/sin f2) · tan f2 | umbral radius; negative means total |
Constants: Earth equatorial radius 6378.1366 km, flattening 1/298.25642 (WGS84), solar radius 696,000 km, and a Moon-to-Earth radius ratio k = 0.272281. That last value is the one Espenak uses for all contacts in the Five Millennium Canon. Using the alternative k = 0.2725076 for umbral contacts makes total eclipses run three to five seconds long and annular ones the same amount short — a bias that showed up immediately when the output was first compared against the canon.
Observers
An observer is placed on the WGS84 ellipsoid, not a sphere, using the standard ρ·sin φ′ and ρ·cos φ′ reduction. Contact times come from the separation m between the observer and the shadow axis on the fundamental plane: first and last contact where m = L1′, the central phase where m = |L2′|, and maximum eclipse at minimum m.
Maximum eclipse is defined as minimum separation, not maximum obscuration. During an annular eclipse the obscured fraction sits on a plateau while the Moon is fully inside the solar disc, so searching for peak obscuration lands on an arbitrary point of that plateau and the annular phase can be missed entirely.
Measured accuracy
Central durations were compared with NASA's decade tables across eighteen eclipses between 2026 and 2040, and again for every eclipse from 2091 to 2100:
| Quantity | Agreement with NASA/GSFC |
|---|---|
| Central duration | 0.30 s mean deviation, 0.5 s worst case |
| Eclipse magnitude | exact to three decimal places |
| Point of greatest eclipse | about 0.4 km |
| Path width | a few kilometres |
| Eclipse count and type, 2091–2100 | 23 of 23, all types correct |
What this does not model
- The lunar limb. The Moon is treated as a smooth sphere. Real mountains and valleys on the limb shift second and third contact by a second or two and set where Baily's beads appear. Grazing observations need a limb profile this site does not have.
- Refraction and altitude. Contact times assume sea level and no atmospheric refraction. Near sunrise or sunset the true times differ noticeably.
- ΔT beyond the present. Times are UTC. The difference between Terrestrial Time and Universal Time cannot be predicted exactly decades ahead, so for late-century eclipses the times are firm relative to each other but the longitude of the track carries an uncertainty that grows with the forecast horizon. This is a limit of the Earth's rotation, not of the arithmetic.
- Weather. Obviously. Cloud climatology matters more than any of the above if you are actually travelling.
Sources and licences
- Ephemeris: astronomy-engine by Don Cross, MIT licence.
- Validation data: Eclipse Predictions by Fred Espenak, NASA's GSFC.
- City coordinates: GeoNames, CC BY 4.0.
- Coastlines: Natural Earth, public domain, via world-atlas.
- Country names: countries-list, MIT licence. Rendering: three.js, MIT licence.
If you find a discrepancy against a published prediction, it is worth reporting — the comparison against the canon is exactly how the two errors described above were caught.