✦ Aurora Forecast AI

How Our Aurora Forecast Works: Data Sources and Method

· Founder and developer of Aurora Forecast AI

Last updated:

On this page
  1. Data sources
  2. How the Aurora Score is calculated
  3. Weights depend on where the location is
  4. How each input earns its points
  5. Two gates: darkness and season
  6. From score to label
  7. Two worked examples
  8. When data is missing
  9. Activity and Visibility in the score breakdown
  10. The night we score, hour by hour
  11. Geomagnetic latitude: AACGM-v2, not the map and not a dipole
  12. What we compute
  13. The error we found in our own latitudes
  14. Epoch and drift
  15. Minimum Kp for a location
  16. How it is derived
  17. Where it is approximate
  18. What this forecast cannot do
  19. Revision history
  20. Who makes it, and how to report an error

The Aurora Score on every location page is a number from 0 to 100. It adds up five inputs — NOAA's Kp forecast, NOAA's OVATION aurora model, Open-Meteo cloud cover, darkness and moonlight — weighted by the location's geomagnetic latitude, then scales the total down when the night is not dark. Every weight, threshold, refresh time and known weakness is listed below.

Nothing on this page is a live value. Tonight's numbers are on the home page and on each location page, in the "Why this forecast?" block. If you want help reading that block, see how to read a forecast page.

Data sources

We measure nothing ourselves. Two inputs come from NOAA's Space Weather Prediction Center, one from Open-Meteo, and the rest is astronomy and geomagnetic geometry computed from a location's coordinates.

Input Source What we take How often we fetch it
Kp forecast NOAA SWPC planetary K-index and 3-day forecast — feed noaa-planetary-k-index-forecast.json Kp in 3-hour blocks, about three days ahead every 15 minutes
Observed Kp NOAA SWPC — feed noaa-planetary-k-index.json NOAA's real-time estimated Kp, shown as "current Kp"; not an input to the score every 15 minutes
Aurora model NOAA SWPC OVATION, "Aurora – 30 Minute Forecast" — feed ovation_aurora_latest.json aurora probability on a global 1° × 1° grid every 15 minutes
Cloud cover Open-Meteo Weather Forecast API, variable cloud_cover hourly total cloud cover in percent, four days, per location every 3 hours
Darkness computed by us (astral library) the sun's altitude at the location at every scoring run
Moon computed by us (astral) lunar phase, converted to an illuminated fraction once a day, 03:30 UTC
Geomagnetic latitude AACGM-v2 — Shepherd (2014), SuperDARN reference page, aacgmv2 library corrected geomagnetic latitude at 110 km, stored with its date last full recompute 18 September 2026

The score is recomputed for every location at 5, 20, 35 and 50 minutes past each hour. NOAA feeds are fetched on the quarter hour and the score follows five minutes later, so a new NOAA value reaches the score within about 20 minutes; page caching can add up to five more. "How often we fetch" is our schedule, not the source's: NOAA and the weather models update on their own clocks.

NOAA's text-form 3-day geomagnetic forecast is also archived every six hours. It does not enter the score.

How the Aurora Score is calculated

raw score    = Kp + OVATION + clouds + darkness + moon      (0 to 100 points)
Aurora Score = round(raw score × darkness gate × season gate)

The raw score is rounded to a whole number, multiplied by the two gates and rounded again. It is plain arithmetic: the same inputs always give the same number. One job computes it and nothing else writes it.

Weights depend on where the location is

Each input has a maximum number of points, and the five maximums always sum to 100. How they are split depends on the location's band of geomagnetic latitude — latitude measured from the geomagnetic pole, not the one on a map.

Location band (geomagnetic latitude) Kp OVATION Clouds Darkness Moon
Auroral oval (64° and above) and high latitude (58–64°) 30 30 20 15 5
Mid latitude (48–58°) 40 20 20 15 5
Low latitude (40–48°) and rare (below 40°) 45 15 20 15 5

Far from the oval the OVATION map rarely shows anything, so Kp carries more of the weight there.

How each input earns its points

Kp. Kp is the planetary index of geomagnetic disturbance, 0 to 9, in 3-hour blocks; what it means for a viewer has its own guide. We take the highest forecast Kp among the blocks that overlap the night and compare it with the location's minimum Kp. At exactly the minimum, the location earns half of its Kp points. Each full Kp step above adds a third of the points, each step below removes a third — so the full amount is reached 1.5 steps above the minimum and zero 1.5 steps below.

This is why the score is not Kp. A forecast of Kp 4 is more than 1.5 steps above Tromsø's minimum of Kp 1 and earns every Kp point there; it is three steps below Munich's minimum of Kp 7 and earns none.

OVATION. OVATION is NOAA's model of where aurora is likely over the next 30 to 90 minutes. From the latest grid we take the highest value within 250 km (155 miles) of the location.

OVATION value near the location Share of the OVATION points
50 or more 100%
30–49 85%
15–29 60%
5–14 35%
1–4 15%
below 1 0

Cloud cover. The mean of the hourly total cloud cover between 20:00 and 06:00 local time. Points fall in a straight line: a clear sky earns all 20, 50% cloud earns 10, overcast earns 0. Weather hours fetched more than six hours ago are discarded rather than trusted.

Darkness. We sample the sun's altitude every 30 minutes through the night. The lowest value sets a darkness factor, and darkness points are 15 times that factor.

Lowest sun altitude during the night Sky Darkness factor
−18° or lower astronomical darkness 1.0
between −18° and −12° nautical twilight 0.7
between −12° and −6° civil twilight 0.3
above −6° too bright 0

Moon. The illuminated fraction of the moon, calculated from its phase for that date; no outside service is involved. A new moon earns all 5 points, a full moon none.

Two gates: darkness and season

Darkness counts twice, on purpose. It earns points as an input, and the same factor then multiplies the whole raw score. A night that never gets darker than civil twilight keeps 30% of its raw score. A night when the sun never drops below −6° gets a factor of 0, and the Aurora Score is 0 whatever the Kp. That is how midnight-sun nights come out as zero.

The season gate is a second multiplier, set by the month and the location band:

Months Auroral oval and high latitude Mid latitude
October–February 1.0 1.0
March 0.9 1.0
April 0.7 0.9
May 0.2 0.8
June–July 0.1 0.7
August 0.4 0.8
September 0.8 1.0

Low-latitude and rare locations get 1.0 all year: there it takes a storm in any month. This table is a calendar heuristic of ours, not a measurement, and it follows the Northern Hemisphere season.

From score to label

Aurora Score Label
0–19 Unlikely
20–44 Low
45–64 Moderate
65–84 High
85–100 Very high

The score is not a probability. A score of 70 does not mean a 70% chance of aurora; it means most of the five inputs line up.

Two worked examples

The inputs below are invented to show the arithmetic. They are not a forecast for any place or night.

A mid-latitude town in October. Minimum Kp 5, forecast Kp 6, OVATION value 20, mean cloud 30%, full astronomical darkness, moon half lit. Kp: half of 40, plus one step × 40/3, gives 33.3. OVATION: 60% of 20 gives 12. Clouds: 70% of 20 gives 14. Darkness: 15. Moon: 2.5. Raw score 77. Both gates are 1.0, so the Aurora Score is 77 — "High".

A town inside the auroral oval in August. Minimum Kp 1, forecast Kp 3, OVATION value 35, mean cloud 10%, moon 20% lit, but the sun gets no lower than −14°. Kp is capped at 30. OVATION: 85% of 30 gives 25.5. Clouds 18, darkness 15 × 0.7 = 10.5, moon 4. Raw score 88. The gates are 0.7 for nautical twilight and 0.4 for August: 88 × 0.7 × 0.4 rounds to 25 — "Low". The same inputs on a fully dark January night give 92.

When data is missing

What is missing What the nightly score does
Cloud cover (none, or older than 6 hours) awards half the cloud points and flags the forecast as "cloud unknown"
Moon data awards half the moon points
Kp forecast awards 0 Kp points
OVATION (none, or a snapshot older than 3 hours) awards 0 OVATION points
A location with no stored minimum Kp is scored against Kp 7, the cautious assumption

Missing cloud data is not treated as a clear sky. It used to be, and every forecast with a stalled weather feed looked like a clear night.

Activity and Visibility in the score breakdown

The "Score breakdown" on a location page shows the five rows above, plus two summary lines. Activity is the Kp and OVATION points rescaled to 0–100, with a small adjustment for the location band: +10 in the auroral oval, +5 at high latitude, 0 at mid latitude, −5 below that. Visibility is the cloud, darkness and moon points rescaled to 0–100 and multiplied by the season gate. Both lines are explanations. The Aurora Score is not built from them, and the band adjustment never touches it.

The night we score, hour by hour

A night runs from 20:00 to 06:00 (8pm–6am) in the location's own time zone. Until 06:00, "tonight" still means the night that began the previous evening. Each run scores four nights per location — the one in progress, tonight and the next two — and the page shows tonight plus two more.

The hourly bars cover 22:00 to 04:00 (10pm–4am). Each hour uses the same five inputs and weights, with that hour's Kp block, that hour's cloud cover and the sun's altitude at mid-hour; OVATION and the moon are held constant for the night. The darkness gate applies to each hour. The season gate does not.

The "Best viewing window" is the run of two to four consecutive hours with the highest average hourly score. If no hour gets darker than −6°, there is no window.

One inconsistency we know about: an hour with no cloud data, or no moon data, currently earns full points for that input in the hourly bars, while the nightly score awards half. The nightly score is the cautious one.

Geomagnetic latitude: AACGM-v2, not the map and not a dipole

The auroral oval is centered on the geomagnetic pole, so what decides a location's chances is its geomagnetic latitude, which can differ from map latitude by several degrees. There is more than one way to calculate it, and the choice moves some places by a whole band.

A centered dipole treats Earth's field as a bar magnet and needs only the position of the pole. AACGM-v2 — altitude-adjusted corrected geomagnetic coordinates — follows the real field lines, non-dipole part included, and is what the auroral literature and the oval models use. The reference is Shepherd, S. G. (2014), "Altitude-adjusted corrected geomagnetic coordinates: Definition and functional approximations", Journal of Geophysical Research: Space Physics, 119, 7501–7521, doi:10.1002/2014JA020264.

What we compute

Every location's latitude is AACGM-v2, calculated with the open-source aacgmv2 library (version 2.7.1), whose coefficients cover 1900–2030. Two parameters matter:

  • Altitude: 110 km (68 miles), where the aurora is, not ground level. That is worth 0.2–0.3°.
  • Date. The coordinates drift with Earth's field, so every stored value carries the date it was computed for.

Close to the magnetic equator the conversion has no solution. There we fall back to the dipole value, and the band is "rare" either way.

You can check any number we print. Take the coordinates of a town and run:

aacgmv2.get_aacgm_coord(latitude, longitude, 110, date)

The error we found in our own latitudes

Until 18 September 2026 this site was wrong about its own latitudes. While reviewing city texts we noticed that Trondheim's band did not match its latitude; six cities checked by hand were all off, in the same direction. The stored values turned out to match no calculation we could reproduce. Reykjavík was stored as 65.8° geomagnetic, which is neither the dipole figure (68.9°) nor AACGM-v2 (64.2°).

We then measured the 800 locations the site had on that day:

  • stored values against AACGM-v2: a median of 3.3° apart, 21° at worst;
  • the dipole formula against AACGM-v2: a median of 1.1°, a maximum of about 21°;
  • 330 of the 800 landed in a different band, most of them one band harder than the site had claimed: 109 from high to mid latitude, 83 from mid to low, 54 from low to rare, 34 from the auroral oval to high latitude. 23 moved the other way, from high latitude into the oval, and 27 made other moves.

That is the worse direction to be wrong in: a page that promises more than the sky delivers. We replaced all 800 latitudes, re-derived bands and minimum Kp from them, and recomputed every forecast the same day. The dipole formula survives in the code only as the magnetic-equator fallback.

Place Centered dipole AACGM-v2 (110 km, 2026) Change
Reykjavík 68.9° 64.2° −4.7°
Nuuk 72.6° 68.6° −4.0°
Munich 48.2° 43.7° −4.5°
Oslo 59.7° 57.2° −2.5°
Fairbanks 65.6° 65.2° −0.4°
Abisko 66.3° 65.9° −0.4°
Tromsø 67.4° 67.3° −0.1°
Longyearbyen, Svalbard 75.2° 76.1° +0.9°

All values are geomagnetic latitude.

Northern Scandinavia and interior Alaska barely move. The North Atlantic and central Europe move four to five degrees, and over Svalbard the sign flips, so no constant correction fixes a dipole. Iceland is the clearest case for a traveller: the dipole puts Reykjavík under the auroral oval, the corrected value puts it at the oval's edge, about where its map latitude already is — the subject of our guide to Kp in Iceland.

Munich is the clearest case. At the dipole value of 48.2° it sat in the mid-latitude band with a minimum of Kp 5, which never squared with NOAA's rule of thumb that the oval's edge only reaches 48° at Kp 9. The corrected latitude is 43.7°, the band is low latitude and the minimum is Kp 7. What looked like a calibration puzzle was a coordinate error.

Epoch and drift

The original 800 locations carry the date 18 September 2026; a location added later carries the date it was added. Reykjavík's value fell from 64.4° in 2020 to 64.2° in 2026, roughly 0.03° a year. At that rate a stale date is a rounding question, not a correctness one — except for places that sit a tenth of a degree from a band edge. We intend to recompute once a year; the date above tells you whether we have.

Minimum Kp for a location

How it is derived

The minimum Kp printed on a location page comes from its geomagnetic latitude, by straight-line interpolation between five anchor points, rounded to a whole Kp:

Geomagnetic latitude Minimum Kp
67° and above 1
61° 3
53° 5
44° 7
36° and below 9

Reykjavík at 64.2° sits between the first two anchors, which lands just under 2 and rounds to Kp 2. Before 18 September 2026 the threshold was five fixed steps — 1, 3, 5, 7, 9 — and two towns a third of a degree apart could be told Kp 1 and Kp 3. The curve keeps the same calibration and removes the cliffs. The band itself stays a category, because it selects the weights.

Where it is approximate

  • The level of the curve is our own calibration. NOAA's relation puts the oval's equatorward edge near 66° geomagnetic at Kp 0 and moves it about 2° per Kp step, to about 48° at Kp 9 — half a Kp per degree. Our curve runs at about a quarter of a Kp per degree. The two agree in the low 60s and part ways further from the pole: at 53° geomagnetic we say Kp 5, and NOAA's edge arrives between Kp 6 and Kp 7.
  • NOAA also notes that bright aurora can be seen from as much as 1,000 km (600 miles) equatorward of the oval's edge, low on the horizon, which is one reason a threshold below the edge value can still be useful. Whether ours sits at the right level has not been checked against sighting records. That calibration is open work. At mid latitudes, read minimum Kp as "worth checking the northern horizon", not as a promise.
  • Rounding. A whole Kp is printed, so a place can sit a few hundredths of a degree from the next value.
  • The polar cap. Above roughly 75–77° geomagnetic a place is poleward of the oval, and a higher Kp pushes the oval further away. Longyearbyen (76.1°) still gets minimum Kp 1 from the curve. The page text for such places says that aurora is less frequent there and that Kp is not what limits it; the score does not yet make that distinction and still rewards a high Kp.
  • Kp is planetary. It describes the size of the oval in 3-hour blocks, not the aurora over one town.

What this forecast cannot do

It cannot see further than the solar wind allows. Whether aurora switches on depends on the direction of the interplanetary magnetic field (Bz), which cannot be predicted in advance and is only measured about 1.5 million km upstream — 15 to 60 minutes of warning. OVATION is a 30- to 90-minute outlook, the Kp forecast looks about three days ahead, and a solar eruption gives one to three days of notice that something is coming, not that it will work. We publish three nights and no more. NOAA's 27-day outlook exists, based on the sun's rotation; we do not turn it into a score.

Tomorrow's score is softer than tonight's. The OVATION points always come from the latest snapshot, including for tomorrow night and the night after. For those nights only Kp and cloud are real forecasts.

Cloud is a model forecast, not a look at your sky. Open-Meteo combines weather models from national weather services and returns total cloud cover for the grid cell that contains the location. We use that single number. Thin high cloud and a solid low deck count the same, and a night averaging 50% may have a clear hour — check the hourly bars.

The moon is phase only. Whether the moon is above the horizon during the night is not yet taken into account.

Light pollution is not an input. The score assumes you have gone somewhere dark.

The weights are our judgment. They reflect how much each signal tells you in each band; they are not fitted to a record of sightings.

The sentences are templates. The forecast text on a location page is chosen from a fixed set of messages by the same inputs described here, and the FAQ is filled from that location's data. Nobody writes each page by hand, and two similar towns will read alike.

It is never a guarantee. A high score means the conditions line up. Aurora can still fail to show, and a faint display can appear on a night we called unlikely.

Revision history

  • 18 September 2026 — geomagnetic latitudes of all 800 locations replaced with AACGM-v2 values at 110 km; 330 changed band; all forecasts recomputed.
  • 18 September 2026 — minimum Kp changed from five fixed steps to a curve through the same anchor points.

Who makes it, and how to report an error

Aurora Forecast AI is an independent project; who is behind it is on the About page. If a number on this page does not match what a location page shows, or a calculation here does not reproduce, tell us — that is how the latitude error was caught. More background is in the guides.

More guides