observed.earth

Methodology

How every number on this site is built, and what it does and does not claim. Written for a reader deciding whether to trust a chart.

The bright line

This site shows the observed record only. No forecasts, no projections, no scenarios. Every number on every chart describes a day, a month or a year that has already happened.

There is one place a model field is used, and it is bounded. Reanalysis — the observational record of the atmosphere — runs about five days behind the present. To carry the daily temperature charts to yesterday rather than stopping five days short, the last few days are filled with short-range model fields from ECMWF's HRES for elapsed days: the 00Z run for a day that has already finished, read after the fact. Those days are drawn dashed with a hollow endpoint and labelled provisional, and each one is replaced by reanalysis the moment reanalysis reaches it.

A provisional value is an estimate of a day that has happened. It is never a forecast of a day that has not. No forecast field is published anywhere on this site, and none ever will be. That is the editorial position the whole site is held to: a site that published model forecasts alongside observations would blur exactly the line that makes it worth reading.

Three tiers of recency

Every row of every published series carries a status, and that field drives the styling all the way through to the downloadable image. For the ERA5-based temperature charts it takes three values.

StatusSourceAge of newest dayHow it is drawn
finalERA5 reanalysis about 3 monthssolid
preliminaryERA5T about 5 dayssolid
provisionalECMWF HRES 00Z 0–1 daydashed, hollow endpoint, labelled

The tier is read from the data, not guessed. CDS serves ERA5 and ERA5T from one dataset and distinguishes them with an expver coordinate, one value per timestep. The status of a day is taken from that directly, never inferred from the date.

Promotion to final. Final ERA5 arrives two to three months after ERA5T, by which time a day has long left the window that is re-fetched each morning. So promotion is its own step: each morning, the oldest month that still holds ERA5T days is replaced with final ERA5 from NCAR's mirror of the archive, as soon as that mirror holds the month. The mirror carries final ERA5 only, so a month appearing on it is itself the evidence that the final version exists. When the same day is held at two tiers, the more settled one always wins.

ERA5T is not styled as provisional, deliberately. It is preliminary reanalysis, produced by the same system as ERA5 and differing only in that a few late observations may still arrive. It is not a model estimate. Marking it would spend a reader's attention on a distinction that does not change how the number should be read, and would dilute the marking that does — the HRES tail.

How the provisional days are built

The HRES conventions are fixed, because the correction described below is defined against them and a silent change to any of them would move every provisional value:

Eight three-hourly samples are not twenty-four hourly ones, so an HRES daily mean and a reanalysis daily mean do not agree exactly. The difference is measured rather than assumed. On every run the two are compared across the five most recent days both of them cover, and the provisional days are corrected by the measured offset before publication. Without that correction there is a visible step exactly where the provisional tail meets the reanalysis, and drawing two sources as one line without removing it would be dishonest.

The offset is re-measured every run rather than stored. It is small — under 0.03 °C for the globe, the Arctic and the contiguous US, and about −0.26 °C for Europe — but it follows the model, and an ECMWF cycle upgrade moves it. A number frozen in configuration would go on applying the old one without saying so. Every comparison is also kept, so that a step in the offset is visible after the fact and raises an alert: the correction absorbs it either way, but a change in the relationship between model and reanalysis is something a reader of this page deserves to be able to look up.

Baselines

An anomaly is only meaningful against a stated reference period. This site uses 1991–2020 as the operational baseline everywhere, which is the current WMO normal period and the one most operational products use. Where a chart says "normal" or "anomaly" without qualification, that is the period meant.

One fixed baseline across every chart is a deliberate trade. It means the same colour means the same anomaly on every map and the same distance means the same departure on every series, which is what makes thirty charts one instrument rather than thirty. The cost is that a value here can differ from an official product defined another way, and where that matters the chart says so.

El Niño is measured relative to the whole tropical ocean. Since February 2026 NOAA classifies El Niño and La Niña with the Relative Oceanic Niño Index (RONI): the Niño 3.4 anomaly minus the anomaly of the entire tropical ocean between 20°S and 20°N, rescaled so its spread matches the plain index. The subtraction keeps the general warming of every tropical ocean from being counted as El Niño. The Niño 3.4 chart here uses the same method, rescaled over 1991–2020, with NOAA's thresholds of ±0.5 °C read against the three-month mean. It is built from OISST, where NOAA uses ERSSTv6, so the two are close but not identical. No “super” level is shown, because NOAA defines none.

Headline global temperature is the exception the spec asks for: it belongs against 1850–1900, the pre-industrial reference. ERA5 begins in 1940 and cannot produce that period, so the intended method is a 1991–2020 climatology plus a fixed published pre-industrial offset. See known limits — this is not yet what the live global charts do, and the page says so rather than implying otherwise.

What is done to the numbers

Every published series is derived from its source by one of a small number of steps, applied the same way for every indicator that uses them.

What happens when something is wrong

Every update runs the same checks, and they are split into two kinds. The split is the important part.

Blocking checks mean the data is wrong. A value outside physical bounds, dates that are duplicated or out of order, or a multi-day hole in the recent interior where the source does have the data — each of these means the pipeline got it wrong, and the new data is refused. The previously published series stays exactly where it was, with its own honest "updated" stamp.

Advisory checks mean the data is merely old or incomplete, which is a fact about the world rather than an error. A source running late publishes with its real date. A day the source never published leaves a break in the line and a note underneath saying which days are missing — gaps are never interpolated across, because a line drawn through a hole is a claim nobody made.

A record that has never reached the present at all is withheld rather than published, because a chart ending in 1996 under a caption promising the present misleads in a way a late chart does not. And a chart that stops advancing for more than three times its own allowance raises an alert, since from the outside a frozen chart and a chart with nothing new to say look identical.

Sources, attribution and licence

Each chart carries its source and licence in its own signature block, so the attribution travels with every screenshot and every embed. Those lines are generated from the source register, never typed by hand, which is why they cannot drift from what was actually used.

The derived series and the charts are published under CC-BY 4.0. The code is MIT. Each upstream source carries its own licence and its own required attribution, listed per indicator below.

Known limits

Things that are true about this site today and that a careful reader would otherwise have to discover for themselves.

Every indicator

Generated from the frozen indicator list, so it describes what the pipeline actually does rather than what someone remembered to write down. Each chart links here, to its own entry.

Arctic

Arctic sea ice extent

How much of the Arctic Ocean is covered by ice today, against every year since 1979.

Shown as
Day-of-year comparison
Sources
NSIDC Sea Ice Index, Version 4 (NSIDC use agreement — citation required (Fetterer et al., Sea Ice Index G02135 v4))
Baseline
1991-2020
Region
all Northern Hemisphere sea ice, as the NSIDC Sea Ice Index measures it
Updates
daily
Allowed lag
6 day(s) past the next due observation before it is reported as stale
Plausible range
0.0 to 20.0 million km2 — values outside this are refused, not published
Status
Live

Arctic sea ice concentration not live yet

Today's ice cover, with the 1991-2020 median ice edge drawn for comparison.

Shown as
Sea ice concentration map
Sources
NSIDC Sea Ice Index, Version 4 (NSIDC use agreement — citation required (Fetterer et al., Sea Ice Index G02135 v4)) · EUMETSAT OSI SAF sea ice products (CC-BY-4.0)
Baseline
1991-2020
Region
Northern Hemisphere sea ice, mapped north of 66°N
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
0.0 to 100.0 — values outside this are refused, not published
Status
Not live yet

Arctic (66N+) mean 2 m temperature

Temperature north of 66N, where warming runs fastest on Earth.

Shown as
Day-of-year comparison
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
66°N to 90°N, all longitudes
Updates
daily
Allowed lag
7 day(s) past the next due observation before it is reported as stale
Plausible range
-45.0 to 20.0 degC — values outside this are refused, not published
Status
Live

Barents Sea ice extent not live yet

The Barents Sea is losing winter ice faster than anywhere else in the Arctic.

Shown as
Day-of-year comparison
Sources
EUMETSAT OSI SAF sea ice products (CC-BY-4.0)
Baseline
1991-2020
Region
the Barents Sea, as OSI SAF's regional sea ice index defines it
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
0.0 to 2.0 million km2 — values outside this are refused, not published
Status
Not live yet

Barents Sea surface temperature

Warm Atlantic water pushing north — the other half of atlantification.

Shown as
Day-of-year comparison
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
70°N to 80°N, 15°E to 60°E
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
-5.0 to 15.0 degC — values outside this are refused, not published
Status
Live

Bjornoya station temperature record not live yet

One weather station on one Arctic island, measured since 1920 — and this month against its own normal.

Shown as
Long record
Sources
MET Norway Frost API (Bjørnøya, station SN99710) (NLOD 2.0 and CC-BY-4.0 — credit "MET Norway" as the source)
Baseline
1991-2020
Region
Bjørnøya weather station, MET Norway SN99710 (74.5°N, 19.0°E)
Updates
daily
Allowed lag
3 day(s) past the next due observation before it is reported as stale
Plausible range
-40.0 to 25.0 degC — values outside this are refused, not published
Status
Not live yet

Greenland ice sheet surface mass balance, this season not live yet

Snow gained and melt lost across the ice sheet since 1 September, against the normal season.

Shown as
Cumulative season
Sources
GEUS/PROMICE Greenland surface mass balance (CC-BY-4.0)
Baseline
1991-2020
Region
the Greenland ice sheet
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
-600.0 to 900.0 Gt — values outside this are refused, not published
Status
Not live yet

Greenland total ice mass change not live yet

The whole ice sheet weighed from orbit — how much has been lost since 2002.

Shown as
Trend
Sources
GRACE-FO mass change (CC-BY-4.0)
Baseline
none — this chart is not an anomaly
Region
the Greenland ice sheet, from GRACE and GRACE-FO gravimetry
Updates
monthly
Allowed lag
120 day(s) past the next due observation before it is reported as stale
Plausible range
-6000.0 to 500.0 Gt — values outside this are refused, not published
Status
Not live yet

Arctic temperature anomaly, last 30 days

Where the Arctic ran warm or cold over the last 30 days.

Shown as
Anomaly map
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence)
Baseline
1991-2020
Region
66°N to 90°N, all longitudes
Updates
daily
Allowed lag
10 day(s) past the next due observation before it is reported as stale
Plausible range
-30.0 to 30.0 degC — values outside this are refused, not published
Status
Live

Global

Global mean 2 m temperature, daily

Each year's daily global temperature, against the 1991-2020 normal. The anomaly against pre-industrial is a separate chart, still to come.

Shown as
Day-of-year comparison
Sources
ERA5 reanalysis (final) (Copernicus Licence) · ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
the whole globe
Updates
daily
Allowed lag
7 day(s) past the next due observation before it is reported as stale
Plausible range
5.0 to 25.0 degC — values outside this are refused, not published
Status
Live

The 1850-1900 reference cannot be computed from ERA5, which begins in 1940. Climatology is therefore built on the operational 1991-2020 baseline and the headline anomaly is expressed against pre-industrial by adding a fixed published offset (see preindustrial_offset_c). This is the spec's "ERA5 + offset", made explicit rather than implied.

Global mean 2 m temperature, monthly and 12-month running anomaly not live yet

The long global record since 1850, monthly and smoothed.

Shown as
Long record
Sources
ERA5 reanalysis (final) (Copernicus Licence) · HadCRUT5 global temperature (Open Government Licence v3 — Crown copyright; cite Morice et al.) · NASA GISTEMP v4 (US Government work — public domain; GISTEMP Team citation requested) · NOAAGlobalTemp v6 (US Government work — public domain (17 U.S.C. 105))
Baseline
1850-1900
Region
the whole globe
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
5.0 to 25.0 degC — values outside this are refused, not published
Status
Not live yet

Long-record datasets (HadCRUT5, GISTEMP, NOAAGlobalTemp) are re-referenced to 1850-1900 from their native baselines; ERA5 is carried across by the same fixed published offset used for the daily headline series, so the two halves of the chart share one reference period.

Global sea surface temperature, 60S-60N

Daily sea surface temperature across the ice-free ocean, year by year.

Shown as
Day-of-year comparison
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
60°S to 60°N, all longitudes
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
15.0 to 25.0 degC — values outside this are refused, not published
Status
Live

Global mean sea level, satellite altimetry

Sea level measured from orbit since 1993, with the fitted long-term trend.

Shown as
Trend
Sources
AVISO reference global mean sea level (AVISO License (Issue 20) — doi:10.24400/527896/AVISO-2025.010)
Baseline
none — this chart is not an anomaly
Region
the global ocean, from satellite altimetry
Updates
monthly
Allowed lag
120 day(s) past the next due observation before it is reported as stale
Plausible range
-50.0 to 200.0 mm — values outside this are refused, not published
Status
Live

Atmospheric CO2 at Mauna Loa

The Keeling curve — the longest direct record of the gas driving the warming.

Shown as
Long record
Sources
Atmospheric CO2 — Mauna Loa and global mean (US Government work — public domain; NOAA GML asks for contact and co-authorship offer on substantial use)
Baseline
none — this chart is not an anomaly
Region
Mauna Loa Observatory, Hawaii (19.5°N, 155.6°W); the growth-rate panel is NOAA's global marine-surface rate
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
300.0 to 500.0 ppm — values outside this are refused, not published
Status
Live

Global 2 m temperature anomaly, last 30 days

Where the last 30 days ran warm or cold against the 1991-2020 normal.

Shown as
Anomaly map
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence)
Baseline
1991-2020
Region
the whole globe
Updates
daily
Allowed lag
10 day(s) past the next due observation before it is reported as stale
Plausible range
-25.0 to 25.0 degC — values outside this are refused, not published
Status
Live

Tropics

Relative Niño 3.4 index

The central Pacific relative to the whole tropical ocean — the measure NOAA uses to call El Niño and La Niña. Observed only, no forecast.

Shown as
Threshold index
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
5°S to 5°N, 170°W to 120°W; relative to the ocean mean from 20°S to 20°N (see relative El Niño, above)
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
20.0 to 32.0 degC — values outside this are refused, not published
Status
Live

North Atlantic main development region SST

Sea surface temperature in the tropical Atlantic — the observed record only.

Shown as
Day-of-year comparison
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
10°N to 20°N, 60°W to 20°W, ocean only
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
20.0 to 32.0 degC — values outside this are refused, not published
Status
Live

Editorial constraint. Observed framing only. No seasonal outlook, no hurricane forecast language, no implied prediction of activity. This is a temperature chart.

Europe

European mean 2 m temperature (land)

Daily temperature across European land, year by year.

Shown as
Day-of-year comparison
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
34°N to 72°N, 25°W to 45°E, land only
Updates
daily
Allowed lag
7 day(s) past the next due observation before it is reported as stale
Plausible range
-30.0 to 35.0 degC — values outside this are refused, not published
Status
Live

European temperature anomaly, last 30 days

Where Europe ran warm or cold over the last 30 days.

Shown as
Anomaly map
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence)
Baseline
1991-2020
Region
34°N to 72°N, 25°W to 45°E, land only
Updates
daily
Allowed lag
10 day(s) past the next due observation before it is reported as stale
Plausible range
-25.0 to 25.0 degC — values outside this are refused, not published
Status
Live

European monthly temperature anomaly, long record

Europe's monthly temperature since 1940, as a line and as stripes.

Shown as
Long record
Sources
ERA5 reanalysis (final) (Copernicus Licence) · ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
34°N to 72°N, 25°W to 45°E, land only
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
-30.0 to 35.0 degC — values outside this are refused, not published
Status
Live

Alpine glacier mass balance, reference glaciers not live yet

Cumulative ice lost from the Alps' long-monitored reference glaciers.

Shown as
Cumulative season
Sources
World Glacier Monitoring Service — reference glaciers (CC-BY-4.0 — cite the WGMS FoG release DOI)
Baseline
none — this chart is not an anomaly
Region
the WGMS reference glaciers of the European Alps
Updates
annual
Allowed lag
550 day(s) past the next due observation before it is reported as stale
Plausible range
-40.0 to 5.0 m w.e. — values outside this are refused, not published
Status
Not live yet

Mediterranean sea surface temperature

A near-enclosed sea that heats fast and holds it — daily, year by year.

Shown as
Day-of-year comparison
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
30°N to 46°N, 6°W to 36°E, ocean only, excluding the Black Sea, the Sea of Marmara and the Sea of Azov
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
10.0 to 32.0 degC — values outside this are refused, not published
Status
Live

Contiguous US

Contiguous US mean 2 m temperature

Daily temperature across the lower 48, year by year.

Shown as
Day-of-year comparison
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
24°N to 50°N, 125°W to 66°W, land only
Updates
daily
Allowed lag
7 day(s) past the next due observation before it is reported as stale
Plausible range
-35.0 to 40.0 degC — values outside this are refused, not published
Status
Live

Contiguous US temperature anomaly, last 30 days

Where the lower 48 ran warm or cold over the last 30 days.

Shown as
Anomaly map
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence)
Baseline
1991-2020
Region
24°N to 50°N, 125°W to 66°W, land only
Updates
daily
Allowed lag
10 day(s) past the next due observation before it is reported as stale
Plausible range
-25.0 to 25.0 degC — values outside this are refused, not published
Status
Live

Contiguous US monthly temperature anomaly, long record

The US monthly temperature record, as a line and as stripes.

Shown as
Long record
Sources
ERA5 reanalysis (final) (Copernicus Licence) · ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
24°N to 50°N, 125°W to 66°W, land only
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
-35.0 to 40.0 degC — values outside this are refused, not published
Status
Live

Netherlands & sea level

Netherlands mean 2 m temperature

Daily temperature over the Netherlands, year by year.

Shown as
Day-of-year comparison
Sources
ERA5T reanalysis (preliminary) (Copernicus Licence) · ECMWF HRES, 00Z cycle (open data) (CC-BY-4.0)
Baseline
1991-2020
Region
50.7°N to 53.6°N, 3.2°E to 7.3°E, land only
Updates
daily
Allowed lag
7 day(s) past the next due observation before it is reported as stale
Plausible range
-25.0 to 35.0 degC — values outside this are refused, not published
Status
Live

De Bilt temperature record since 1901 not live yet

One Dutch station, measured continuously for over a century.

Shown as
Long record
Sources
KNMI Data Platform — De Bilt long record (CC-BY-4.0 — state that the data originate from KNMI)
Baseline
1991-2020
Region
De Bilt weather station, KNMI (52.1°N, 5.2°E)
Updates
monthly
Allowed lag
45 day(s) past the next due observation before it is reported as stale
Plausible range
-15.0 to 30.0 degC — values outside this are refused, not published
Status
Not live yet

Dutch coast sea level, six-station tide gauge composite

Sea level measured at the Dutch coast itself, from six gauges with long records.

Shown as
Trend
Sources
Dutch tide gauges — Rijkswaterstaat / PSMSL (PSMSL terms — cite Holgate et al. (2013) and the PSMSL dataset year)
Baseline
1991-2020
Region
six tide gauges on the Dutch coast: Vlissingen, Hoek van Holland, Den Helder, Delfzijl, Harlingen and IJmuiden
Updates
monthly
Allowed lag
550 day(s) past the next due observation before it is reported as stale
Plausible range
-800.0 to 600.0 mm — values outside this are refused, not published
Status
Live

North Sea surface temperature

The shallow sea on the Dutch doorstep, daily and year by year.

Shown as
Day-of-year comparison
Sources
NOAA OISST v2.1 (US Government work — public domain (17 U.S.C. 105))
Baseline
1991-2020
Region
51°N to 61°N, 4°W to 9°E, ocean only
Updates
daily
Allowed lag
4 day(s) past the next due observation before it is reported as stale
Plausible range
0.0 to 25.0 degC — values outside this are refused, not published
Status
Live

Global versus Dutch sea level not live yet

Satellite-measured global sea level set against the Dutch coast gauges.

Shown as
Trend
Sources
AVISO reference global mean sea level (AVISO License (Issue 20) — doi:10.24400/527896/AVISO-2025.010) · Dutch tide gauges — Rijkswaterstaat / PSMSL (PSMSL terms — cite Holgate et al. (2013) and the PSMSL dataset year)
Baseline
none — this chart is not an anomaly
Region
the global ocean from satellite altimetry, against six tide gauges on the Dutch coast
Updates
monthly
Allowed lag
120 day(s) past the next due observation before it is reported as stale
Plausible range
-200.0 to 400.0 mm — values outside this are refused, not published
Status
Not live yet