ECLIPSE PREDICTOR
SOLAR ECLIPSE PATHS · 1900–2200

Eclipse Predictor

Step through every solar eclipse from 1900 to 2200 — about 3,700 events. Eclipse identification and Sun/Moon positions come from astronomy-engine (Don Cross's port of Steve Moshier's ephemeris, sub-arcsecond accurate, MIT-licensed). Path of the Moon's shadow uses the same MoonShadow + GeoidIntersect pipeline as SearchGlobalSolarEclipse — WGS84 geoid intersection for NASA/Espenak parity.

Controls

What you see

How it works

Accuracy

Eclipse times and path geometry match NASA's Five Millennium Canon (Espenak/Meeus) — sub-km on the ground for 1900–2200. The GeoidIntersect pipeline is the same one astronomy-engine uses internally for global eclipse search. For mission-critical planning, cross-check with eclipse.gsfc.nasa.gov.

TOTAL
Date (UTC)
Greatest eclipse
Magnitude
Gamma
Central duration
Max location
Sun altitude
Path via astronomy-engine GeoidIntersect (NASA/Espenak parity)

VIEW

OVERLAYS

YOUR LOCATION

DETAIL

The Math

1 · TIME
$$ JD_{\text{TT}} = JD_{\text{UT}} + \frac{\Delta T}{86400}, \qquad \theta_0 = 280.46061837 + 360.98564736629\,(JD - J2000) + \dots $$
2 · SUN POSITION (astronomy-engine, equator-of-date with aberration)
$$ L_0 = 280.46646 + 36000.76983\,T,\quad M = 357.52911 + 35999.05029\,T $$ $$ C = (1.9146 - 0.0048\,T)\sin M + 0.020\sin 2M + \dots,\quad \lambda_\odot = L_0 + C $$ $$ R = \tfrac{1.0001\,(1-e^2)}{1 + e\cos(M+C)}\;\text{AU} $$
3 · MOON POSITION (astronomy-engine, Moshier ephemeris)
$$ \lambda_\text{☾} = L' + 10^{-6}\!\!\sum_i a_i \sin(d_i D + m_i M + m'_i M' + f_i F) $$ $$ \beta_\text{☾} = 10^{-6}\!\!\sum_i b_i \sin(\dots),\qquad r_\text{☾} = 385000.56 + \tfrac{1}{1000}\sum_i c_i \cos(\dots) $$
4 · SHADOW-CONE GEOMETRY (MoonShadow · GeoidIntersect)
$$ \vec{G} = \vec{r}_\text{☾} - \vec{r}_\odot,\quad u = \tfrac{\vec G \cdot (-\vec r_\text{☾})}{|\vec G|^2} $$ $$ k = R_\odot - (1+u)\,(R_\odot - R_\text{☾}),\qquad p = -R_\odot + (1+u)\,(R_\odot + R_\text{☾}) $$ $$ \gamma = \tfrac{r_\perp}{R_\oplus}\ \ (\text{axis–geocentre distance}),\qquad \gamma < 1 \Rightarrow \text{central line exists} $$ $$ k > 0\ \text{at surface} \Rightarrow \text{total},\qquad k < 0 \Rightarrow \text{annular} $$ (This engine uses astronomy-engine's MoonShadow/GeoidIntersect — not the Besselian fundamental-plane elements.)
5 · MAGNITUDE & GAMMA
$$ \gamma = \sqrt{x^2 + y^2},\qquad \text{mag} = \frac{\theta_\text{☾}}{\theta_\odot} = \frac{k R_\oplus / r_\text{☾}}{R_\odot / r_\odot} $$
6 · CLASSIFICATION
$$ \text{type} = \begin{cases} \mathrm{T} & \gamma < 1 \text{ and } \ell_2 < 0 \;(\text{umbra reaches Earth}) \\ \mathrm{A} & \gamma < 1 \text{ and } \ell_2 > 0 \;(\text{antumbra}) \\ \mathrm{P} & \gamma \ge 1 \;(\text{penumbra only}) \end{cases} $$
7 · CENTRAL PATH ON EARTH
$$ z = \sqrt{1 - x^2 - y^2}\;\text{(spherical Earth, fundamental plane to surface)} $$ $$ \begin{aligned} X &= -x\sin(-\mu) - y\sin d\cos(-\mu) + z\cos d\cos(-\mu) \\ Y &= x\cos(-\mu) - y\sin d\sin(-\mu) + z\cos d\sin(-\mu) \\ Z &= y\cos d + z\sin d \end{aligned}$$ $$ \varphi = \arcsin Z,\qquad \lambda = \operatorname{atan2}(Y, X) $$

LEGEND

Path of totality
Path of annularity
Greatest eclipse
Partial-eclipse zone
Sub-solar point
JUMP TO — / —
GENERATING ECLIPSE CATALOG
1900 — 2200
0 / 0 new moons checked

2026 & 2027 Solar Eclipse Paths

Step through every solar eclipse from 1900 to 2200. Paths of totality are computed with astronomy-engine (sub-arcsecond ephemeris) and drawn on a rotatable 3D Earth.

First time here? This site is a free game & sim collection by one engineer — while you wait for totality, try today's Wordform, Drift, or daily Sudoku, and see the 2026/2027 viewing guide for trip planning.

Upcoming total eclipses

What you can explore

How the model works — the real astronomy

Every eclipse position in this tool comes from the open-source astronomy-engine library (astronomy.browser.min.js), which implements the VSOP87 / high-precision lunar theory used for professional ephemerides. Nothing here is a hand-rolled Kepler approximation: the Sun's geocentric vector is read from Astronomy.GeoVector(Sun, t, aberration=true) and the Moon's from Astronomy.GeoMoon(t), and eclipses are located with the library's own SearchGlobalSolarEclipse / NextGlobalSolarEclipse. The catalog spans 1900–2200, matching NASA's Five Millennium Canon of Solar Eclipses (Espenak & Meeus).

Shadow cone & geoid intersection

The path is built by the MoonShadow → GeoidIntersect pipeline — the same geometry astronomy-engine uses internally for global eclipse search, not the classical Besselian fundamental-plane elements. In outline:

Total vs annular classification

Whether the eclipse is total or annular is decided by the umbral cone radius at the actual surface intersection point, not at closest approach to Earth's centre. Using the Moon's polar radius (1736 km, the value astronomy-engine uses for this test), the code evaluates k_surface = R_sun − (1+u)·(R_sun − 1736) and classifies:

The shadow-axis miss-distance is reported as gamma, γ = r / R_earth in Earth radii; when the axis misses the globe entirely the event is partial-only.

Topocentric magnitude

Eclipse magnitude is the ratio of the Moon's apparent angular radius to the Sun's, mag = θ_moon / θ_sun. Crucially it uses topocentric distances — the Sun and Moon distances as seen from the greatest-eclipse ground point via Astronomy.Equator(..., observer) — because a surface observer sits about one Earth radius closer to the Moon than the geocentre, and a geocentric figure understates magnitude by roughly 1.5–1.7%.

The positions are sub-arcsecond and the ground path is sub-kilometre for 1900–2200, but this is a visualisation, not a substitute for official predictions: for mission-critical timing, cross-check eclipse.gsfc.nasa.gov.

Related

Discussion

Sign in with GitHub to share strategies, ask questions, or report a bug.