Kp is a 3-hourly planetary index — useful, but coarse, and blind to your local sky. It says nothing about cloud cover, nothing about whether it's actually dark yet where you are, and nothing about how the aurora oval is shaped right now. Our engine treats Kp as one input among several real-time measurements, not the final answer.
We continuously pull real-time interplanetary magnetic field data (Bz, Bt), solar wind speed, particle density, and the Kp index from NOAA. Bz — the north-south orientation of the interplanetary magnetic field — is one of the most physically important drivers of geomagnetic activity: a strongly negative Bz couples efficiently with Earth's magnetosphere and often precedes active displays, while Kp alone can lag fast-changing conditions. Combining these signals gives a more responsive read on activity than Kp in isolation.
Kp describes activity level; it doesn't describe geography. For that we use NOAA's OVATION model — a real-time global aurora probability grid of roughly 65,000 points covering the sky worldwide. We sample the grid at your exact location and apply a distance-based falloff, so an oval sitting 200 km north of you scores differently than one directly overhead. That's the difference between "aurora is happening somewhere" and "aurora is happening near you."
Activity and Aurora Local are blended into a single Aurora Potential score — an estimate of how strong and how geographically relevant the aurora is right now, independent of whether you can actually see it. That separation matters: a night can have excellent Aurora Potential and still be a bust locally because of cloud, or a modest Aurora Potential can still deliver a memorable display under a glass-clear sky. We report both numbers, so you can tell which situation you're in.
Most forecasts reduce sky conditions to "clear" or "cloudy." We model low, medium, and high cloud layers separately, because each blocks aurora light differently — a thin veil of high cirrus is a very different obstacle than a solid low overcast deck. Our visibility model estimates how much aurora light actually transmits through the atmosphere above you, layer by layer, instead of collapsing everything into one crude binary.
We calculate the sun's position for your exact latitude, longitude, and timestamp using solar position astronomy — not a static sunrise/sunset lookup table. Darkness is computed precisely for where and when you are, correctly handling everything from ordinary twilight to the long dusk of high-latitude summer nights and deep polar night further north.
The Final Score takes Aurora Potential and gates it by your actual observing conditions — visibility and darkness. A spectacular aurora behind total cloud cover won't produce a high score, because you won't see it. But we also apply a floor: genuinely strong aurora isn't allowed to be crushed to zero by moderate cloud, because gaps in cloud cover are common and a strong event can still punch through. Score and Aurora Potential are calculated — and reported — separately, and either can be marked unavailable independently and honestly when the underlying data doesn't support a confident answer.
Real space weather and OVATION snapshots, growing every day — the dataset we use to spot patterns and validate every change before it ships.
Every forecast carries a Confidence rating and a per-source Data Quality assessment based on how fresh each underlying feed is. If a data source is missing or stale, we say so explicitly — we never silently guess or substitute a default value in its place. Alongside the numbers, we generate a plain-language explanation of the forecast, with the contributing factors ranked by how much they actually matter to tonight's result.
We classify the current trend from recent space weather history — building, fading, or holding steady — and provide an hourly forecast across a 12-hour horizon. Within that window, we automatically detect the best viewing window: the stretch of hours where Aurora Potential and your local observing conditions line up most favourably.
Every forecast we generate is archived alongside the real space weather and OVATION history for that moment, so it can be compared against outcomes later. When we consider a change to the scoring model, it goes through calibration-replay evaluation against real historical data before it ships — we don't push scoring changes on a hunch. New signals are introduced first as observable metrics we can watch and validate, and only folded into live scoring once they've proven themselves.
The engine runs on Cloudflare's edge network, so forecasts are computed close to wherever you are rather than round-tripping to a single origin server. It's exposed through a versioned public API (v1) with per-endpoint rate limiting — built to be stable to build on and resistant to abuse.
Every score, every KP reading, every cloud layer, and every darkness calculation across PolarForecast — right now — comes from this pipeline.
See tonight's forecast →