How the Sunshine Score works
One number, 0–100, for how good a destination's sunshine is in a given month. I compute it the same way for every place on the atlas, from long-term climate normals — not forecasts.
The formula
For each destination and month I combine three ingredients:
- Warmth (about half the score) — the month's average daytime high. Full marks from 20 °C to 32 °C; nothing below 8 °C; fading above 32 °C until 42 °C scores zero. Pleasant sunshine, not just any sunshine.
- Dryness — the month's precipitation, scaled so 0 mm is perfect and 150 mm or more scores nothing. Wet season is cloud season, so this carries the seasonal sunshine signal.
- Sunniness — the destination's annual sunshine hours, scaled against 3,500 h/yr (about the sunniest places on Earth). Where sunshine data is missing we assume a neutral 2,000 h/yr.
Score = 100 × warmth × (0.5 + 0.5 × (0.55 × dryness + 0.45 × sunniness)). Warmth multiplies the whole score, so a freezing month scores zero no matter how clear the sky.
What's on the atlas
Every destination on Sunshine Map has its own airport — that is the selection rule. The atlas maps the world's 3,833 metro-primary airports (one per metropolitan area: London appears once, not five times), so every dot on the globe and every ranking entry is a place you can actually fly to. No viewpoints, no unreachable idylls — real, bookable destinations.
What the score is not
It isn't a weather forecast, and it's deliberately opinionated — my opinion, encoded: a 41 °C August scores low because standing in it is no fun, and a gloriously clear −5 °C ski morning scores zero because this is a sunshine atlas, not a snow one. If you'd weigh things differently, the raw data is free — score it your way.
Data sources
- Monthly temperature and precipitation normals: NASA POWER climatology, January 2001 – December 2020 (MERRA-2 reanalysis, ~50 km grid; CC BY 4.0). Each series is shifted by the standard 6.5 °C/km lapse rate over the difference between the grid cell's mean elevation and the destination's own, because a ~50 km cell averages the mountains around a valley city and reads too cold otherwise.
- Annual sunshine hours: derived from NASA POWER's all-sky clearness index over the same 2001–2020 period, via the Ångström–Prescott relation (n/N = (Kt − 0.25) / 0.50) multiplied by each month's true astronomical daylength. Modelled, not measured — see the accuracy note below.
- Annual rainfall (mm): the twelve monthly NASA POWER precipitation normals, summed.
- Midday UV index: NASA POWER's all-sky surface UV index over the same 2001–2020 period. POWER publishes it as a 24-hour mean (nights included), so it is rescaled to the familiar midday value using the UVI ∝ cos(SZA)2.42 relationship (Allaart et al. 2004) — the noon-to-whole-day ratio is pure solar geometry per latitude and month — then lifted 7% to match the daily-maximum UV index that forecasts report, and adjusted by the WHO's ~10% per 1,000 m altitude rule over the same cell-vs-destination elevation gap as the temperature calibration. Checked against NASA POWER's own hourly UV series (clouds included) at ten climatically diverse sites × 12 months: mean absolute error 0.27 UV points, no bias, and 92% agreement on the WHO exposure category. Published on the WHO scale: 0–2 low, 3–5 moderate, 6–7 high, 8–10 very high, 11+ extreme.
- Snow per year (≈): annual snowfall depth from NASA POWER's monthly snowfall normals (MERRA-2 PRECSNO, water equivalent) over the same January 2001 – December 2020 window, converted with the standard 10:1 fresh-snow-to-liquid ratio. Months only count in proportion to how cold the destination itself is (full weight when the lapse-corrected mean night low is −2 °C or below, nothing above +5 °C; within the tropics a month must actually freeze), and when the ~50 km grid cell sits well above the destination its snowfall is attenuated toward the town — otherwise the cell smears mountain snow onto warm valley cities (Cusco would "get" metres a year; Aspen would wear the ski summit's total). Treat it as an honest estimate of typical snowfall, not a station record: valley towns beside big ranges can still read up to about twice their true figure.
- Sea-surface temperature (coastal destinations): Open-Meteo Marine API, averaged into monthly means (CC BY 4.0).
- Places, populations and coordinates: © GeoNames and OurAirports contributors.
- Photography via Wikimedia Commons.
How accurate are the sunshine hours?
I check them against 410 cities where a national met service publishes a real, recorder-measured figure. Across those: correlation 0.92, mean absolute error 212 hours a year, and a bias of +24 hours — so on average the model neither over- nor under-reads, and a typical city lands within about 9% of its published figure.
The errors are not evenly spread, and it's worth knowing where they bite. A sunshine recorder only counts direct beam above about 120 W/m² and deliberately ignores scattered light; a satellite sees the scattered light too. So wherever a persistent low cloud deck or a dust haze sits under the satellite's view, the model reads high — Lima, whose famous garúa stratus it misses almost entirely, and Cape Verde, which is a hazy trade-wind archipelago rather than the clear desert its latitude suggests, are both roughly 35–40% over. In the permanently-overcast Sichuan basin it reads low. This is a well-documented limitation of satellite-derived sunshine rather than anything peculiar to this atlas (Kothe et al. 2017, Remote Sensing 9(5), 429).
Where I think the model is simply wrong: the continental Arctic. Above the Arctic Circle it returns a median of about 2,130 hours a year, which is more than it gives the 55–66° band beneath it and more than much of the mid-latitudes; 42 of the 73 destinations up there come out over 2,000 hours. That ordering is not physically plausible, and the split within it is the clue: the maritime sub-Arctic looks right (Iceland around 1,320, coastal Norway around 1,425) while the dry continental Arctic inflates badly (Canada around 2,280, Alaska around 2,060, Russia around 1,950). My working explanation is snow and sea-ice albedo defeating the clearness retrieval — bright ground read as clear sky — but that is a hypothesis, not something I have demonstrated. What I can demonstrate is that the check above barely reaches this group: exactly one of those 73 destinations has a published figure to compare against, and the two high-latitude cities that do have one both fail the same way and by almost the same amount (Tromsø 1,713 against a published 1,265; Iqaluit 1,936 against 1,477). So the 212-hour error above is measured almost entirely at mid-latitudes and does not describe the far north. Treat sunshine hours for inland places above roughly 60°N as unreliable and probably too high. Temperature, rainfall and the Sunshine Score's warmth term are unaffected; this is a sunshine-hours problem specifically.
The United States is the largest disagreement in the whole check, and it is one-sided. Against the 52 US cities that publish a recorder-measured figure the model runs 213 hours low (mean absolute error 230 hours), and 47 of the 52 — 90% — come out below their published number. The +24-hour headline bias above is a global average that hides this: outside the US the same model runs +69 hours. The size of the miss scales with moisture (correlation −0.56 with annual rainfall), so the arid West is close — Boise is 4 hours off, El Paso 13 — while the humid East is not: Milwaukee −534, Miami −501, Boston −477, Cleveland −460.
The obvious explanation is that a sunshine recorder counts the beam between fair-weather cumulus that a coarse satellite cell averages away. I no longer think that is the main cause, because the same climate bands outside the US barely show it: humid-subtropical cities are −249 hours in the US and −18 hours everywhere else, hot-summer-continental −357 against −78. Cloud physics does not stop at a border, so an asymmetry that large points at the reference data rather than at the model. The published US sunshine figures descend largely from NOAA's historical sunshine network, which was already down to roughly 160 stations by the early 1980s and is no longer maintained as a current product — so this may be a 2001–2020 satellite climatology being scored against a mostly pre-1980 recorder climatology, on instruments known to over-read. China (−175) and Japan (−133) are the next-largest one-sided disagreements, which is consistent with a reference-data story rather than a climate one. I have not resolved it. Until I do, treat US sunshine hours as carrying roughly a 200-hour uncertainty on top of everything else here, and prefer the station figure where one exists. Comparisons still hold up: rankings within the atlas use one consistent method throughout, and the Europe-versus-US gap survives being recomputed entirely from published station numbers.
Gridded normals also can't capture microclimates, and a single cell can average a coastline together with a mountain. Treat the scores as a comparison tool and the tables as long-term averages rather than guarantees.
Want the numbers themselves? Download the full dataset — every destination and month as CSV/JSON, free under CC BY 4.0.