What this data is, and what it isn’t.
Everything here comes from NOAA’s Global Historical Climatology Network — Daily: raw, un-homogenised observations from land-based weather stations. It is an extraordinary record, and it is easy to produce confident nonsense from it. This page is about the second part.
Three ways to get it wrong
Averaging across stations
The station network has changed beyond recognition. There is 0.08 GB of data before 1900 against 4.68 GB for 1950–1999, coverage is heavily weighted toward North America and Europe, and two-thirds of stations record precipitation only. A “global average temperature by year” computed naively over these stations plots the changing station mix, not the climate.
So nothing here averages absolute values across stations. Every spatial aggregate is an anomaly against that station’s own 1991–2020 baseline, gridded into equal-area H3 cells, with the contributing station count kept alongside so a thin cell can be shown as thin.
Trusting a mean built from three readings
A monthly mean computed from three observations is not a monthly mean. Both monthly and annual carry n_obs and completeness, every API response that returns an aggregate exposes them, and the charts filter on them rather than quietly rendering a sparse row at full confidence.
Applying one unit scale to everything
Temperature and precipitation are stored in tenths; snowfall and snow depth in whole millimetres. A blanket division by ten makes every snow value ten times too small, and nothing about the result looks broken. The scale factor lives in the elements table so it is applied in exactly one place, and a validation check asserts snow depth stays physically plausible.
| Element | Measures | Stored as |
|---|---|---|
TMAX | Maximum temperature | tenths of °C |
TMIN | Minimum temperature | tenths of °C |
PRCP | Precipitation | tenths of mm |
SNOW | Snowfall | mm |
SNWD | Snow depth | mm |
Quality flags
Roughly 0.4% of maximum-temperature rows carry a NOAA quality flag, meaning the observation failed one of NOAA’s own checks. Those rows are excluded from the aggregates entirely rather than marked and carried forward, because a flag that survives into a mean is a flag nobody acts on.
The colour scale
Anomalies have a sign, so they get a diverging scale with a neutral midpoint: at the baseline, the colour reads as nothing at all. The domain is symmetric about zero on purpose — an off-centre domain would render a warming world as balanced blue and red, and you would have no way to tell.
What this cannot tell you
GHCN-Daily is not a homogenised product. Individual station records carry non-climatic artefacts: relocations, instrument changes, time-of-observation bias, urbanisation around a site that did not move. Detecting and correcting those is its own discipline, and this project does not attempt it.
If you need homogenised data — for attribution, for a trend estimate you intend to publish — use a product built for it: nClimGrid, GHCN-M, or Berkeley Earth. What you have here is the underlying observations, shown as what they are.
All of it is open
The pipeline, the schema, the validation checks, and this site are on GitHub. The source bucket is public and needs no AWS account, so every number on this site can be recomputed from scratch by anyone who wants to check it.