How the numbers are made
Every chart on this site is drawn from public data published by the agencies that measure it. This page lists, for each indicator, the exact dataset and version, the files that are downloaded, what this site does with them, how often they update, and how the results are checked.
All of the code is public in the earthindicators repository on GitHub. The data files the pages draw from live in its data folder, and every automatic update is a commit, so the full history of every number can be inspected.
- Two kinds of series
- Published series, shown as published. For CO₂, methane, ocean heat content, sea level, sea ice and the energy imbalance, the site downloads the agency's own file and plots its values unchanged. Anything derived from them (running means, trends, growth rates, comparisons) is calculated in your browser by the page's own script, which you can read on GitHub.
- Series calculated here from gridded data. For El Niño, sea surface temperature and part of the air temperature record, the agencies publish maps rather than a single number per day, so this site averages the maps itself. Those calculations are checked against independently published series wherever one exists, and the results of those checks are shown below.
- Air temperature
- El Niño
- PDO
- The Sun
- Sea surface temperature
- Ocean heat
- Sea level
- Water vapor
- Sea ice
- Land ice
- CO₂
- Methane
- Other greenhouse gases
- Energy imbalance
- Climate models
- Reproducing and citing
Air temperature
Used on: Air temperature, the overview and the claims page.
- Dataset
Copernicus Climate Change Service (C3S), ERA5 post-processed daily statistics on single levels, variable 2 m temperature, daily mean of all 24 hourly values (UTC). DOI 10.24381/cds.4991cf48. ERA5 reference: Hersbach et al. (2020), doi:10.1002/qj.3803.
World: the daily global series Copernicus publishes and keeps up to date for its Climate Pulse service, era5_daily_series_2t_global.csv, about two days behind real time. The newest days are marked preliminary and replaced by Copernicus when final; the site takes the whole series on every run, so it always shows Copernicus's current values.
- What this site does
Only if the Copernicus series can't be read or falls behind: the daily-mean temperature field (0.25° grid) is downloaded from the Copernicus Climate Data Store and averaged over the globe with each grid cell weighted by the cosine of its latitude (its share of Earth's area), then converted from kelvin to °C. This is the same method Copernicus uses, but the Data Store runs about five to six days behind real time. From February 2024 to October 2026 the world series was calculated this way; compared with Copernicus's own values for those days:
Loading…Regions are calculated the same way over their own latitude bands: Northern and Southern Hemisphere (0–90°), Arctic and Antarctic (beyond 66.5°) and tropics (23.5°S–23.5°N). The history before May 2015 comes from ARCO-ERA5, Google Research's copy of the same ERA5 data on Google Cloud, which stores the hourly values; the daily mean is calculated here from the 24 hourly values (00–23 UTC), as Copernicus does. Checked against the Copernicus-based days for all of 2016: every region agreed within 0.001 °C on every day. A region appears on the page once 1991–2020 is complete.
Every day of the year gets a 1991–2020 average (smoothed with a 5-day centered running mean); the anomaly is the day's value minus that average. "Above pre-industrial" adds Copernicus's offset of 0.88 °C (1850–1900 to 1991–2020), applied to 12-month averages only.
- Compared with pre-industrial
- The "Compared with" switch (world only) converts the 1991–2020 anomalies to 1850–1900 with Copernicus's offsets, which differ through the year (Copernicus method; their table of monthly offsets is saved in reference/c3s_preindustrial_offsets.png). Months: the table's applied offsets (Jan 0.96, Feb 0.96, Mar 0.95, Apr 0.91, May 0.87, Jun 0.83, Jul 0.80, Aug 0.80, Sep 0.81, Oct 0.85, Nov 0.89, Dec 0.93 °C). Days: Copernicus describes a single-harmonic fit to the monthly offsets with coefficients rounded to two decimals; its formula is not published as text, so it was rebuilt here the same way: 0.88 + 0.07·cos(2πn/365) + 0.05·sin(2πn/365) for day n of a 365-day year. Averaged over each month, this reproduces all twelve applied offsets to within 0.004 °C, and its range (0.79–0.97 °C) matches the one Copernicus states. In leap years, days after February are one day off in the curve, which changes the offset by less than 0.002 °C. 12-month averages keep the single annual offset of 0.88 °C.
- Warming by region
The bar chart of warming rates uses ERA5 monthly averaged data on single levels (DOI 10.24381/cds.f17050d7), which Copernicus stores ready-made: the mean of all hourly values in each month. Each region is averaged with the same latitude weighting as above; yearly averages weight each month by its number of days. The rate is the least-squares linear trend of those yearly averages from 1979 to the last complete year.
The same download also produces one average temperature map per year on a 2° grid (each 2° cell is the latitude-weighted mean of the ERA5 grid points in it). The map on the air temperature page shows each cell's linear trend since 1979, or a chosen year minus the cell's 1951–1980 average. Coastlines: Natural Earth (public domain), 1:110m.
Loading…Code: scripts/build_era5_monthly.py, run by update-era5-monthly.yml. Data: era5_t2_regions_monthly.csv, era5_t2_annual_2deg.json (describes the binary map file).
- Updates
- Daily. ERA5 runs about 5 days behind real time. The newest 10 days are recalculated on every run, because the early-release data (ERA5T) can still be revised.
- Checks
Where this site's calculation and Copernicus's published series cover the same days, they are compared:
Loading… Loading…- Code
- scripts/build_era5.py (world), scripts/build_era5_regions.py (regions), scripts/backfill_era5_arco.py (regional history from ARCO-ERA5), run by update-era5.yml and update-era5-regions.yml.
- Data as used
- era5_t2_global_daily.csv (one row per day; the source column says whether a value is Copernicus's published one or calculated here), era5_t2_global_day.json, era5_t2_regions_daily.csv.
- Limitations
- ERA5 is a reanalysis: a weather model constrained by billions of observations, not a direct measurement. Day-to-day values are reliable for the globe; for small or data-sparse regions such as the Antarctic, single days are less certain than long averages.
El Niño (Niño 3.4)
Used on: El Niño.
- Dataset
- NOAA 0.25° Daily Optimum Interpolation Sea Surface Temperature (OISST), version 2.1, DOI 10.25921/RE9P-PT57; Huang et al. (2021), doi:10.1175/JCLI-D-20-0166.1. Read as yearly files (sst.day.mean.YYYY.nc) from the NOAA PSL server, which downloads only the box needed.
- What this site does
Takes every grid point in the Niño 3.4 box (5°S–5°N, 170°W–120°W) for every day since 1982 and averages them, weighted by the cosine of latitude.
The anomaly is the daily value minus the 1991–2020 average for that day of the year (smoothed with a 5-day running mean). This is not NOAA's official Oceanic Niño Index, which uses 3-month means, and not the newer relative index that subtracts the tropical mean.
- Updates
- Twice a day. Each run downloads only the last 30 days again (plus any new days), because NOAA first publishes preliminary values and replaces them with final ones about two weeks later. Data come from NOAA PSL's server; if it is unavailable, the same days are read from the daily files at NOAA NCEI, which distributes OISST and from which PSL takes it.
- Checks
Compared with the Niño 3.4 series from Climate Reanalyzer (University of Maine), which is calculated independently from the same NOAA data. A saved copy of their series is kept in the repository as reference/climatereanalyzer.json.
Loading…Both sites publish values rounded to 0.001 °C, so differences of 0.001 °C are rounding. The few larger differences fall in short clusters: most in the last weeks of a year, when NOAA swaps preliminary values for final ones, so the two sites probably downloaded at different moments. A cluster in early January 2012 has not been explained yet.
- Code
- scripts/build_nino34.py, run by update-oisst.yml.
- 900 years of winters
- Tree-ring reconstruction of December–February sea-surface temperature, Cook and Cane (2024), Geophysical Research Letters, doi:10.1029/2024GL109759 (NOAA NCEI Paleoclimatology, study 39379): a map of the equatorial Pacific, averaged here over the Niño 3.4 box with cosine-of-latitude weights. The version with more tree-ring records is used from 1500, the longer one before. All winters are compared with the measured 1871–2000 average; OISST winters are shifted onto that reference by their mean difference from the measured grid in 1983–2000. The reconstruction's error is about ±0.5 °C per winter, and like most reconstructions it tends to understate the largest events. Code: scripts/build_nino_treering.py; data: nino34_treering.csv.
- Data as used
- nino34_daily_sst.csv (one row per day), oisst2.1_nino3.4_sst_day.json (by year, with the 1991–2020 average).
Hurricane season energy (ACE)
- Dataset
- NOAA NCEI International Best Track Archive for Climate Stewardship (IBTrACS), version 4 revision 01, DOI 10.25921/82ty-9e16; Knapp et al. (2010), doi:10.1175/2009BAMS2755.1. The North Atlantic and Eastern North Pacific files (ibtracs.NA.list.v04r01.csv, ibtracs.EP.list.v04r01.csv) from the NCEI IBTrACS page. For these basins the wind values are NHC's best track (HURDAT2) and, for storms not yet reviewed, NHC's operational data.
- What this site does
For every 6-hourly storm position (00, 06, 12 and 18 UTC) at which a storm is a tropical or subtropical storm or a hurricane with maximum sustained winds of at least 34 knots, adds the wind speed squared, divided by 10,000. This is the standard ACE used by NOAA and Colorado State University. Each position counts on its own date and in the basin the storm was in at that moment, so a storm that crosses into another basin counts in each only for its time there. Interpolated points, extra positions at landfall and alternative ("spur") tracks are left out.
The Northeast Pacific covers the eastern and central Pacific north of the equator, up to the date line. Seasons from 1971 are used, the start of routine satellite coverage of the eastern Pacific. The page adds the daily values up from 1 January and compares the current year with the range and the middle 80% of all earlier years, and with the 1991–2020 average.
- Updates
- Daily check; NOAA updates IBTrACS a few times a week. Recent storms are revised when NHC publishes its reviewed best track, usually within a year.
- Checks
Season totals calculated here compared with published ones (NOAA, Colorado State University):
Loading…- Code
- scripts/build_ace.py, run by update-ace.yml. Running totals and comparisons: the script inside nino.html.
- Data as used
- ace_daily.csv (one row per storm per day), ace_meta.json (source files and the newest storm position).
Pacific Decadal Oscillation (PDO)
Used on: PDO.
- Dataset
- NOAA NCEI Pacific Decadal Oscillation index, monthly from 1854, based on NOAA's Extended Reconstructed Sea Surface Temperature (ERSST): ERSST anomalies are projected onto the PDO pattern found by regressing them against the Mantua PDO index. NCEI is moving its indices from ERSST version 5 to version 6; the download uses version 6 when it is complete and current, otherwise version 5, and records which in pdo_source.txt.
- What this site does
- Shows NOAA's monthly values unchanged. Calculated here: the 12-month running average, the decade averages and the run of months with the same sign.
- Updates
- Daily check; NOAA adds a month early in the following month.
- Code
- Download: update-sun-pdo.yml. Calculations: the script inside pdo.html.
- Data as used
- pdo_ncei.dat, unchanged.
The Sun (solar cycle)
Used on: The Sun.
- Dataset
- WDC-SILSO, Royal Observatory of Belgium, Brussels: International Sunspot Number, version 2 (doi:10.24414/qnza-ac80), monthly means from 1749 and 13-month smoothed values. License CC BY-NC 4.0.
- What this site does
- Shows SILSO's values unchanged and marks values SILSO flags as provisional. Calculated here: cycle minima (the lowest smoothed value within five years on either side), each cycle's maximum, cycle numbers (counted from cycle 25, which began at the minimum of late 2019), yearly averages, and the comparison with global temperature (yearly averages of the ERA5 series from the air temperature page, relative to 1991–2020).
- Updates
- Daily check; SILSO publishes the provisional value for a month on its first day of the next month and finalizes values quarterly.
- Code
- Download: update-sun-pdo.yml. Calculations: the script inside sun.html.
- Data as used
- SN_m_tot_V2.0.csv, SN_ms_tot_V2.0.csv, unchanged.
Slow signals
Used on: Slow signals.
- Fossil CO₂ emissions
- Global Carbon Project, fossil CO₂ emissions dataset by Andrew and Peters (CICERO), the data behind the yearly Global Carbon Budget, on Zenodo (2025 release, doi:10.5281/zenodo.17417124; the download always takes the newest version, recorded with its DOI in slow_status.json). The world total ("Global") from the file in million metric tons of CO₂, with its split into coal, oil, gas, cement, flaring and other; it includes international shipping and aviation. Not included: emissions from land-use change. Shown unchanged (in billions of metric tons); the yearly changes, the ten-year growth rate and the total since 1750 are calculated by the page.
- Ocean pH
- Hawaii Ocean Time-series (University of Hawaiʻi), surface CO₂ system data product HOT_surface_CO2.txt for Station ALOHA (22°45′N, 158°W): mean pH of the upper 30 m, total scale, at in situ temperature, about once a month since October 1988 (Dore et al. 2009, doi:10.1073/pnas.0906044106, updated). Two versions are shown: pH calculated from measured dissolved inorganic carbon and alkalinity (the full record) and pH measured directly by spectrophotometry (from the early 1990s). Values are shown unchanged; the straight-line trend (least squares, on the calculated pH) and the change in hydrogen-ion concentration (10 to the power of minus the change in pH) are calculated by the page.
- Atlantic overturning (AMOC)
- RAPID-MOCHA-WBTS monitoring array at 26.5°N (National Oceanography Centre, University of Miami, NOAA): the file moc_transports.nc from rapid.ac.uk, with the overturning strength (moc_mar_hc10) and its parts (Florida Current, Ekman transport, upper mid-ocean transport) twice a day, in sverdrups. This site averages them to days, then to calendar months; months with fewer than 20 days of data are left out. The 12-month averages and the four-year comparisons are calculated by the page. New releases come every one to two years, after the moorings are recovered; earlier values can change slightly with each release, and the whole series is replaced each time.
- Red List Index
- IUCN and BirdLife International, world series from the UN Sustainable Development Goals database (series ER_RSK_LST, indicator 15.5.1). Shown unchanged (if the database ever adds uncertainty bounds, the page shows them as a shaded band); the changes over time are calculated by the page. Updated once a year after the Red List reassessments.
- Tree cover loss
- University of Maryland GLAD laboratory (Hansen et al. 2013, doi:10.1126/science.1244693, updated yearly) with Global Forest Watch, "tree cover loss by dominant driver" (Sims et al. 2025), world totals in hectares (tree cover of at least 30% canopy in 2000): the total and the part caused by wildfires, taken from Our World in Data's copies (total, wildfires) because Global Forest Watch's own data service needs a key and its download links change with each release. Shown unchanged, in millions of hectares; totals and shares are calculated by the page. Gross loss, not net deforestation; the mapping method changed from 2011, so earlier and later years are not fully comparable.
- Crop yields
- FAO, FAOSTAT crops and livestock products (QCL), bulk download, world ("World") yield for maize (corn), wheat, rice and soya beans, converted from kilograms to metric tons per hectare. Good and bad years: each year's yield divided by the value of a straight line fitted through the three years before and the three after it (not the year itself), minus one; at the start and end of the record the line uses the years on one side only. The estimate of lost productivity growth is from Ortiz-Bobea et al. (2021), doi:10.1038/s41558-021-01000-1.
- Cherry blossom
- Peak bloom (full flowering) date of Prunus jamasakura in Kyoto, compiled by Yasuyuki Aono from historical documents and, from the late 19th century, newspapers and observations (Aono and Kazui 2008, doi:10.1002/joc.1594; Aono and Saito 2010, doi:10.1007/s00484-009-0272-x; copyright Y. Aono), as kept up to date in the GMU cherry blossom prediction competition repository. Shown unchanged. The 50-year average is calculated by the page, for each year from the 50 years up to and including it, where at least 20 of them have a date; dates are shown as days of a non-leap year.
- Updates
- Weekly check of all sources. A download only replaces the saved data when it is complete and plausible; slow_status.json records how far each series reaches and the date its content last changed, which the page shows as "new data last arrived".
- Code
- build_slow.py, run by update-slow.yml.
- Data as used
- amoc_rapid_monthly.csv, redlist_index_world.csv.
Climate models
Used on: Climate models.
- Past projections
- Hausfather, Drake, Abbott and Schmidt 2020, Evaluating the performance of past climate model projections, Geophysical Research Letters 47, e2019GL085378 (doi:10.1029/2019GL085378), files from the authors' repository (github.com/hausfath/OldModels, MIT license): each projection's warming rate over its test period (single_model_trends.csv, "model_time") and the difference from the measured rate with its uncertainty (model_obs_time_diffs.csv). "Matched" means that uncertainty range includes zero, as in the paper. The page quotes the study's own counts (10 of 17 projections matched; 14 of 17 in the second test); the study's data files hold 18 entries, including all three Hansen 1988 scenarios, and all 18 are shown with their verdicts. The measured rate shown next to each projection is the least-squares trend of yearly ERA5 means over the same years, calculated by the page; the study's own measured rates came from several surface temperature records. The second test (14 of 17), which compares warming with the change in forcing, is quoted from the paper.
- Hansen 1988
- Scenarios A, B and C from Hansen et al. 1988 (doi:10.1029/JD093iD08p09341), greenhouse-gas forcing as digitized in the same repository ("Model timeseries.xlsx", 1958–2017); temperature 1958–2019, where Hansen's model runs end, from RealClimate's file (scen_ABC_temp.data, copy in reference/h88/), which agrees with the Hausfather copy to 2017. The rates on the page use 1988–2019. ERA5 yearly means are shifted so their 1958–1987 average equals scenario B's. Measured forcing: well-mixed greenhouse gases (CO₂, methane, nitrous oxide and halogenated gases), best estimate, from the Indicators of Global Climate Change 2025 (ERF_best_aggregates.csv, github.com/ClimateIndicator/data), minus its 1958 value.
- Hansen et al. 2025
- Prediction from the abstract of Hansen, Kharecha, Sato et al. 2025, Environment: Science and Policy for Sustainable Development 67(1), 6–44 (doi:10.1080/00139157.2025.2434494): global temperature will not fall much below +1.5 °C, oscillating near or above it for the next few years (the paper's baseline is 1880–1920). From the paper's section "Global Temperature": the 12-month average stays above +1.5 °C at the end of 2024 and at most barely falls below it in 2025 (checked against ERA5's 12-month averages to December 2024 and during 2025); and, if greenhouse-gas forcing keeps growing, about 0.2–0.3 °C per decade over the next two decades, reaching +2 °C by 2045 (the diamond on the IPCC chart; a single year, compared roughly with the IPCC's 20-year averages). Measured in the paper's own terms: NASA GISTEMP v4 land-ocean index (GLB.Ts+dSST.csv from data.giss.nasa.gov/gistemp, relative to 1951–1980), each month minus that calendar month's 1880–1920 average. That is how the table kept by Hansen's group is made (landocean_1880_full.txt): checked against values from it to within 0.004 °C (its rounding), while a single shift for all months is off by up to 0.06 °C; the result of each check is written to reference/hansen_temp_check.txt. Hansen's server refuses scripted downloads, so the site uses NASA's file. Updated weekly with the slow signals (models_hansen_temp.csv), shown as a 12-month running mean; ERA5 above 1850–1900 is drawn alongside for comparison. Hansen's next-peak projection (hatched box): from his monthly chart "Global Surface Temperature (Base Period 1880–1920)" (columbia.edu/~jeh1/Data/Temperature), version with data through September 2026. The chart is only published as an image (3000 × 1500 pixels), so the magenta range markers were located in pixels and converted with the axes calibrated on the chart's own gridlines (every gridline reproduced within 0.003 °C and 0.03 years): next El Niño peak of the 12-month mean 1.65–1.75 °C at about 2027.2; La Niña low 1.40–1.45 °C at about 2026.5. That version's measured curve matches NASA's 12-month means through September 2026, so the low was already observed when it was drawn and is not treated as a prediction. The numbers are frozen in models_outlook.json, since the chart is redrawn every month. Scorecard: seven dated predictions from the paper (February 2025), Hansen, Kharecha, Morgan and Vest's post "Beware media hype. It's not the El Nino!" (Climate Uncensored, 23 July 2026) and the chart, stored with their dates in models_outlook.json and scored each month from NASA GISTEMP relative to 1880–1920: 12-month running means for the 1.5 °C and peak predictions, single months for the 2026-vs-2024 comparison, calendar-year means (all twelve months) for record years. "Right" or "Wrong" is shown only when the outcome is settled and the prediction gives a clear line; wording without a threshold ("much") is reported with the numbers and marked "Running". "Barely" below 1.5 °C is counted as up to 0.05 °C below, less than the 12-month average often moves within three months (since 1999 its three-month change was above 0.065 °C one time in ten). The peak is judged on the highest 12-month mean within 0.6 years either side of the projected time. "Since the paper" counts months from February 2025. For comparison the page also shows how far the 12-month average fell after the 2015–16 and 2023–24 El Niños: the highest value in mid-2015 to 2016 and mid-2023 to early 2025, and the lowest in the two and a half years after each.
- Climate models (CMIP6)
- Global mean near-surface air temperature (tas) above 1850–1900 for one run (r1i1p1f1) of each model, historical and SSP2-4.5, computed by Neil Swart, CCCma (github.com/swartn/cmip6-gmst-anoms, Open Government License – Canada). Only the 16 models with every year in both experiments are used. For each year the script takes the lowest and highest value, the median and the 17th and 83rd percentiles (the middle two-thirds). Measured: ERA5 yearly means from the monthly world series, complete years only, minus their 1991–2020 average plus 0.88 °C (Copernicus's offset to 1850–1900).
- IPCC projections
- IPCC AR6 Working Group I, Summary for Policymakers, Table SPM.1: best estimate and very likely range of global surface temperature for 2021–2040, 2041–2060 and 2081–2100, relative to 1850–1900, entered by hand. The lines to 2100: the same assessment year by year from IPCC AR6 Chapter 4 (Lee et al. 2021), files assessed_ssp*_central/05/95.nc in Chris Smith's AR6 repository (github.com/chrisroadmap/ar6, MIT license). Each value is a 20-year average relative to 1995–2014; the value labeled year Y covers Y−10 to Y+9 and is plotted at the middle of those years. Plus 0.85 °C (the IPCC's assessed warming from 1850–1900 to 1995–2014) gives °C above 1850–1900. The build script checks the result against Table SPM.1: central estimates agree to its rounding, and the 5–95% edges within 0.1 °C. Measured: 20-year averages of ERA5 yearly means, plotted the same way. Long-term level now: least-squares line through the last 30 complete years of ERA5 (as above), read off at the last year. Current policies and pledges: UNEP Emissions Gap Report 2025 (published 4 November 2025).
- Emissions vs the required paths
- Total greenhouse gas emissions 1970 onward by gas (CO₂ from fossil fuels and industry, CO₂ from land use, methane, nitrous oxide, fluorinated gases), billion metric tons CO₂-equivalent with 100-year global warming potentials, from the Indicators of Global Climate Change 2025 (greehouse_gas_emissions_co2eq.csv, Lamb et al., github.com/ClimateIndicator/data); fluorinated gases are only included from 1990, earlier years show the other four. Required paths: IPCC AR6 Synthesis Report Table SPM.1, median greenhouse gas reductions from 2019 for 2030, 2035, 2040 and 2050 (1.5 °C, >50%, no or limited overshoot: 43, 60, 69, 84%; 2 °C, >67%: 21, 35, 46, 64%), applied to the measured 2019 total and joined with straight lines; "where we should be now" is read off those lines. Earlier required paths (grey): UNEP Emissions Gap Report 2010 (2 °C: about 44 GtCO2e in 2020 against about 48 in 2009, i.e. −8.3%) and 2019 (2 °C: −2.7% a year, 1.5 °C: −7.6% a year, 2020–2030), each applied as a percentage to this series' value in the report's base year, so different emission inventories are not mixed. "Where it is heading": the least-squares line through the last ten years, extended to 2035 (a calculation, not a forecast), and UNEP Emissions Gap Report 2025's estimate for full delivery of all pledges (about 15% below 2019 by 2035). The yearly cut needed is (target ÷ start)^(1/years) − 1.
- What it would take
- The cut: the latest measured total minus the IPCC's 2030 level for 2 °C (above), spread evenly over 2026–2030. Starting point for 2025, until IGCC publishes that year (June 2027): the IGCC 2024 total times EDGAR's change in the world total from 2024 to 2025 (+0.7%, 2026 report), also shown as an open circle on the emissions chart. Comparisons are picked automatically as the closest match from a fixed list of sourced amounts, each used once: 2025 greenhouse gas emissions of countries (EDGAR, 2026 report, excluding land use) and a few sums of them; CO₂ from coal, oil and natural gas (Global Carbon Project, fossil_co2_global.csv); CO₂ from land use (IGCC 2025); methane from oil, gas and coal (at least 120 Mt a year, IEA Global Methane Tracker 2025, × 29.8 for CO₂-equivalent, the IPCC AR6 value for fossil methane). Wording: "about as much as" within 8%, otherwise "more than" or "almost as much as". Options: IPCC AR6 WGIII SPM Figure SPM.7, which is only published as a chart. Values were read from the figure in the IPCC's PDF (page 42 of the Summary for Policymakers, fetched into reference/fetched/): bar lengths measured against the axis ticks (0 at x = 234.47 pt, 6 GtCO2-eq at 469.47 pt), cost bands identified from the legend colours; plain segments read as vector rectangles, shaded segments from a 576-dpi rendering. Check: options up to 100 USD/t add up to 34.8 GtCO2-eq a year, more than half of 2019 emissions, and options up to 20 USD/t to 17.8 (51% of that), as the report states. Cost: each cost band's tonnes times its lower and upper cost per tonne (0–20, 20–50, 50–100 USD), summed; options cheaper than the current way counted as zero (the figure does not say how much they save), options above 100 USD or without a cost left out. (An earlier version also showed a "cheapest options first" cost for the 2 °C cut alone; it was removed because it assumes a perfectly ordered, frictionless transition and understates what is needed.) The economy-wide estimate is from the same report, SPM C.12.2: world GDP in 2050 1.3–2.7% lower than with policies as of 2020, in pathways limiting warming to 2 °C (>67%) with coordinated action from 2025; investment needs from SPM E.5.1 (three to six times current levels, 2020–2030). Shares of the world economy use the IMF's projected world GDP for 2026 (about 124 trillion USD, World Economic Outlook October 2025). The IPCC's costs are net lifetime costs: they include fuel savings, but not benefits such as cleaner air or avoided climate damage. Data: models_whatittakes.json.
- Carbon budget
- Remaining carbon budgets from 1 January 2026 in 0.1 °C steps by Robin Lamboll for the Indicators of Global Climate Change 2025 (Forster et al. 2026, Earth System Science Data 18, 3889, doi:10.5194/essd-18-3889-2026): the paper's central setup (MAGICC, human-induced warming of 1.24 °C for 2016–2025), 50% and 67% likelihood, in billion metric tons of CO₂. Years left: budget divided by the paper's 2024 emissions, 38.6 (fossil fuels and industry) plus 4.6 (land-use change). "Left today" subtracts emissions at that rate for the time since 1 January 2026: an estimate, since real emissions vary.
- Five-year outlook
- WMO Global Annual to Decadal Climate Update 2026–2035 (press release of 28 May 2026), probabilities as published.
- Updates
- By hand, when a source publishes a new edition: the carbon budget each June, the WMO outlook each May, UNEP each November. The measurements (ERA5) update with the rest of the site, so the measured rates and cards follow automatically.
- Code
- build_models.py makes the data files; the calculations are in models.html.
- Data as used
- models_old.json, models_cmip6.csv, models_outlook.json.
Sea surface temperature
Used on: Sea surface temperature, the overview and the claims page.
- Dataset
- NOAA OISST v2.1, as for El Niño above.
- What this site does
The same script and method as Niño 3.4, applied to larger areas. Land has no SST values, so only ocean points count.
- World: 60°S–60°N, every fourth grid point (a 1° sample)
- North Pacific: 0–60°N, 120°E–100°W, every third grid point
- North Atlantic: 0–60°N, 0–80°W, every second grid point
- Subpolar North Atlantic: 45–60°N, 20–45°W
- Atlantic hurricane region: 10–20°N, 20–85°W
- Gulf of Maine: 42–45°N, 66–71°W
- Gulf of Mexico: 20–30°N, 82–98°W
Except for the North Pacific, the boxes follow Climate Reanalyzer's definitions. Baseline and anomalies as for El Niño.
- Updates
- Twice a day, together with Niño 3.4, again downloading only the last 30 days on each run.
- Checks
- The averaging code is the one checked for Niño 3.4 above. The world and regional series have not yet been compared with an independently published series; when such a comparison is added, its result will appear here.
- Code
- scripts/build_nino34.py, run by update-oisst.yml (one job for Niño 3.4, the world and every region, each with its exact box).
- Data as used
- world_daily_sst.csv and oisst2.1_world_sst_day.json; each region has the same pair of files in the data folder.
- Limitations
- Sampling every second, third or fourth grid point speeds up the download for large areas; it changes the average very little but is not identical to using every point.
Ocean heat content
Used on: Ocean heat and the energy imbalance comparison.
- Dataset
- NOAA National Centers for Environmental Information (NCEI), Global Ocean Heat and Salt Content, basin time series for the world ocean (w0), Atlantic including the Arctic (a0), Pacific (p0) and Indian Ocean (i0), 0–2000 m (from 2005) and 0–700 m (from 1955), yearly and 3-monthly. Method: Levitus et al. (2012), doi:10.1029/2012GL051106. Files are taken from this NCEI folder.
- What this site does
- Plots NOAA's values unchanged, converted from NOAA's unit (10²² joules) to zettajoules (10²¹ J), with NOAA's ±2 standard error band. Anomalies are relative to NOAA's 1955–2006 climatology. Heating rates are least-squares linear trends, converted to watts per square meter of Earth's whole surface (510 million km²).
- Updates
- Checked weekly; NOAA updates every three months.
- Code
- Download: update-ohc.yml. Calculations: the script inside ohc.html.
- Data as used
- The h22-*.dat files in the data folder, byte for byte as NOAA publishes them.
- Limitations
- Measurements were sparse before the Argo floats reached global coverage in the mid-2000s, so earlier values are less certain. NOAA's estimate is at the low end of published ocean heat estimates.
Sea level
Used on: Sea level.
- Dataset
- NASA-SSH Global Mean Sea Level from Simple Gridded Sea Surface Height, version 1 (NASA JPL, PO.DAAC), DOI 10.5067/NSIND-GMSV1. Backup: NOAA Laboratory for Satellite Altimetry global mean sea level (star.nesdis.noaa.gov), no longer updated since early 2025.
- What this site does
- Plots the published values. For the NASA series, the average seasonal cycle (about ±0.6 cm) is removed so the trend stands out: residuals from a quadratic fit are averaged in 26 two-week bins of the year and subtracted. Rates are linear trends; the curve is a quadratic fit. No glacial isostatic adjustment is applied.
- Updates
- Checked weekly.
- Code
- Download: update-sealevel.yml. Calculations: the script inside sea-level.html.
- Data as used
- NASA_SSH_GMSL_INDICATOR.txt, slr_sla_gbl_free_all_66.csv, unchanged.
Sea ice extent
Used on: Sea ice.
- Dataset
- NSIDC / NOAA Sea Ice Index, version 4 (G02135), daily extent for the Arctic and Antarctic. Fetterer, F., K. Knowles, W. Meier et al., DOI 10.7265/a98x-0f50.
- What this site does
- Extent is NSIDC's: the area where ice concentration is at least 15%. Each value shown is a 5-day trailing mean, which also fills the every-other-day gaps of the 1978–1987 record. Reference period 1981–2010, as used by NSIDC. The standard-deviation chart compares each day with the mean and spread of the same day over a 30-year reference period (1981–2010 or 1991–2020, selectable).
- Second record
- The standard-deviation chart can also show a fully independent record: daily sea-ice extent from Japan's National Institute of Polar Research (NIPR) Arctic Data archive System, ViSHOP, based on JAXA's AMSR2 satellite instrument (earlier years from older passive-microwave sensors), with its own processing. Its daily values are used as published, without a running mean; values for the most recent days are preliminary. Files: vishop_extent_n.csv, vishop_extent_s.csv, unchanged (one row per calendar day, one column per year, km²). The two records differ slightly in level and can rank close years differently; neither is "the" right one.
- Updates
- Daily; the newest days may still be revised by NSIDC.
- Code
- Download: update-seaice.yml. Calculations: the script inside sea-ice.html.
- Data as used
- N_seaice_extent_daily_v4.0.csv, S_seaice_extent_daily_v4.0.csv, unchanged.
Sea ice volume
Used on: Sea ice.
- Datasets
- Model: Mercator Ocean GLORYS12 global ocean physics reanalysis, monthly means (Copernicus Marine product GLOBAL_MULTIYEAR_PHY_001_030, dataset cmems_mod_glo_phy_my_0.083deg_P1M-m), variables sea-ice thickness and concentration, 1993 onwards. Satellite: sea-ice thickness from ESA CryoSat-2 merged with SMOS (product SEAICE_GLO_PHY_L4_NRT_011_014), daily, Arctic and Antarctic.
- What this site does
- Volume = thickness × concentration × cell area, summed over the polar ocean (Arctic 40–90°N, Antarctic 50–80°S). In both products thickness is the thickness of the ice where there is ice, so multiplying by concentration gives the amount of ice per grid cell. The satellite series is sampled every Monday; days without satellite data (the melt season: Arctic May–September, Antarctic roughly November–March) are stored as "no data", not zero. The uncertainty band adds up the uncertainty of every grid cell, a cautious upper bound. Mercator's real-time analysis is not used to extend the model line: it ran 1–4 thousand km³ lower than the reanalysis in the same months, which would show as a false drop.
- Checks
- Coverage: the share of the ice-covered area that has a satellite thickness value is stored for every day (typically 98–99%; the rest is the hole around the North Pole). Model and satellite are independent; where both exist, the page shows how close they are.
- Updates
- Daily check; the model adds a month when Mercator publishes one (about two months' delay), the satellite a week during the cold season. Copernicus keeps only the last year or two of satellite data online, so this site's file is the longer record.
- Code
- Download and calculation: update-seaice-volume.yml, build_seaice_volume.py.
- Data as used
- seaice_volume_glorys.csv, seaice_volume_cs2smos.csv (thousand km³; ice area in million km²).
Land ice (glaciers, Greenland and Antarctica)
Used on: Land ice.
- Datasets
- NASA JPL Tellus GRACE/GRACE-FO mascon time series (CRI filtered), release 06.3 version 04: Greenland mass anomaly (doi:10.5067/TEMSC-GT634) and Antarctica mass anomaly (doi:10.5067/TEMSC-AT634), monthly from April 2002, in gigatons. There is a gap of about a year between the GRACE and GRACE-FO missions (2017–2018).
- What this site does
- Shows NASA's monthly values relative to the average of the first 12 months. Calculated here: the combined total (months present in both files), linear trends (whole record and last 10 years), yearly changes (yearly average minus the year before; gaps of up to three months, from the original satellites' battery-saving pauses after 2011, are filled by straight-line interpolation for this, and only years with at least ten months count, so the 2017–2018 gap between the missions does not distort them) and the sea-level equivalent, using 362 Gt of ice per millimeter of global sea level.
- Glaciers
- World Glacier Monitoring Service (WGMS): glacier mass change gridded data from 1976 to present derived from the Fluctuations of Glaciers Database, Copernicus Climate Data Store (doi:10.24381/cds.ba597449; Dussaillant et al., 2025). Annual mass change of all glaciers outside the two ice sheets on a 0.5° grid, per hydrological year (October to September in the north), combining field measurements with satellite elevation changes. This site adds up the total mass change (in gigatons) of all grid cells for each year; uncertainties are combined as the square root of the sum of squares. Years are labeled by the year they end in (2022–23 = 2023). In the sea-level chart, glaciers are summed from 2002–03 onwards and the ice sheets are read off at the end of each September (straight line between the nearest months), so all three cover the same period. GRACE measures the total mass change of the whole Greenland and Antarctic regions, so its totals already include the glaciers around the ice sheets. To avoid counting those twice, the glacier bar in that chart leaves out the grid cells around Greenland (north of 59°N, east of Davis Strait, Baffin Bay and Nares Strait, west of Iceland) and south of 60°S; this site adds those up separately in the same file. The glacier bar chart and the yearly totals elsewhere on the site still show all the world's glaciers. Monthly check; the download only runs when Copernicus publishes a new product version. Code: update-glaciers.yml, build_glaciers.py. Data as used: glaciers_global.csv.
- Updates
- Daily check; NASA adds a month roughly every one to two months. The file name changes with each update, so the download first asks NASA's public catalog (CMR) for the newest file; the address used is saved next to the data.
- Code
- Download: update-landice.yml (needs the Earthdata login, as for sea level). Calculations: the script inside land-ice.html.
- Data as used
- grace_greenland.txt, grace_antarctica.txt, unchanged.
CO₂
Used on: CO₂.
- Dataset
- NOAA Global Monitoring Laboratory, Mauna Loa daily mean CO₂, co2_daily_mlo.txt (gml.noaa.gov/ccgg/trends). Dr. Xin Lan, NOAA/GML, and Dr. Ralph Keeling, Scripps Institution of Oceanography.
- What this site does
- Plots NOAA's daily means unchanged; days without enough valid hourly data are gaps, never filled in. Monthly means use months with at least 10 valid days; the trend is a centered 12-month running mean. Annual growth compares each month with the same month a year earlier.
- Updates
- Daily.
- Code
- Download: update-co2.yml. Calculations: the script inside co2.html.
- Data as used
- co2_daily_mlo.txt, unchanged.
- History
800,000 years: the Antarctic ice-core CO₂ composite of Bereiter et al. (2015), doi:10.1002/2014GL061957, from NOAA NCEI paleoclimatology: CO₂ measured in air bubbles trapped in the ice, combined from several drill sites; the youngest part comes from Law Dome and reaches the 2000s.
66 million years: the CenCO2PIP Consortium (Hönisch et al. 2023, Science 382, eadi5177, doi:10.1126/science.adi5177), a review by about 90 scientists of every published way of estimating past CO₂: boron isotopes and alkenones in marine shells and algae (the records described in Rae et al. 2021), leaf stomata, soil carbonates and others, combined in one statistical curve at 500,000-year steps. The consortium publishes the curve as quantiles of ln(CO₂) (github.com/SPATIAL-Lab/CenoCO2, file out/500kyrCO2.csv, release v1.0); this site converts them to ppm and shows the median with the 95% range.
"Today" on these charts is the average of the last 12 monthly means at Mauna Loa. Both records are finished studies, downloaded once by scripts/build_co2_history.py. Files: co2_icecore_bereiter2015.csv, co2_cenozoic_cenco2pip2023.csv.
Methane
Used on: Methane.
- Dataset
- NOAA Global Monitoring Laboratory, globally averaged methane at marine surface sites: monthly means ch4_mm_gl.txt and annual increases ch4_gr_gl.txt. Lan, X., K.W. Thoning and E.J. Dlugokencky (gml.noaa.gov/ccgg/trends_ch4).
- What this site does
- Plots NOAA's monthly means, de-seasonalized trend and annual increases unchanged. Pre-industrial reference (1750): about 729 ppb (IPCC AR6).
- Updates
- Checked daily; NOAA updates monthly. First estimates for recent months can be revised by several ppb.
- Code
- Download: update-ch4.yml. Display: ch4.html.
- Data as used
- ch4_mm_gl.txt, ch4_gr_gl.txt, unchanged.
Other greenhouse gases
Used on: Other gases.
- Dataset
- NOAA Global Monitoring Laboratory, Annual Greenhouse Gas Index: the warming effect (effective radiative forcing since 1750) of each group of long-lived gases, AGGI_Table.csv, and the yearly global mean of each gas behind it, NOAA_Annual_Mean_MoleFractions.csv (HFC-23 after 2007 from AGAGE, Prinn et al. 2018). Nitrous oxide: globally averaged monthly means n2o_mm_gl.txt and yearly increases n2o_gr_gl.txt (gml.noaa.gov/ccgg/trends_n2o). SF₆ monthly means (sf6_mm_gl.txt) are downloaded for later use.
- What this site does
- Plots NOAA's values unchanged. Calculates each gas's share of the total, the share of the increase since 1990, peaks and percentage changes. "Ozone-layer gases" is NOAA's CFC* group (CFC-11, CFC-12, CFC-113, CCl₄, CH₃CCl₃ and halons); "HFCs and SF₆" is NOAA's HFC* group. Pre-industrial nitrous oxide (1750): about 270 ppb (IPCC AR6).
- Updates
- Checked weekly. Nitrous oxide updates monthly; the index and the yearly gas means once a year, in the fall, for the previous year.
- Code
- Download: update-ghg.yml. Display: ghg.html.
- Data as used
- aggi_AGGI_Table.csv, aggi_NOAA_Annual_Mean_MoleFractions.csv, n2o_mm_gl.txt, n2o_gr_gl.txt, unchanged.
Water vapor (water cycle)
Used on: Water cycle.
- Dataset
- Copernicus Climate Change Service, ERA5 monthly averaged data on single levels from 1940 to present, DOI 10.24381/cds.f17050d7; Hersbach et al. (2020), doi:10.1002/qj.3803. Variable: total column water vapor (kg/m²), monthly means of all hours, on the 0.25° grid. Downloaded from the Copernicus Climate Data Store.
- What this site does
Averages each monthly grid over the globe, weighting every grid cell by the cosine of its latitude (its share of Earth's surface); also for each hemisphere, the tropics (23.5°S–23.5°N) and the northern mid-latitudes (30–60°N). The 30–60°N history was added later from downloads of just that band, averaged the same way. The band chart shows each region's 36-month running average in kg/m².
The page calculates: the 1991–2020 normal for each calendar month; each month's difference from it (in kg/m² and in %); the rank of the newest month among all years for that calendar month; the linear trend of complete calendar years from 1979; and the slope of yearly water vapor (% vs 1991–2020) against yearly global 2 m air temperature (°C vs 1991–2020), both from the same ERA5 monthly dataset, by least squares over 1979 onwards.
- Updates
- Checked daily; ERA5 monthly averages appear about 5 days after the month ends. The newest three months are downloaded again when a new month appears, because early-release values can still be revised slightly.
- Checks
- The script uses the same download and averaging code as the monthly air temperature series, whose world averages match Copernicus's published daily series (see Air temperature). No independent water vapor series is compared yet.
- Code
- scripts/build_era5_tcwv.py, run by update-era5-tcwv.yml. Calculations: the script inside water.html.
- Data as used
- era5_tcwv_monthly.csv (month, then world, northern hemisphere, southern hemisphere, tropics and 30–60°N, in kg/m²).
- Limitations
- ERA5 is a reanalysis: a weather model constrained by observations. Before satellite humidity data (1979) it relies mainly on weather balloons, so the early decades are less certain; trends and the per-°C slope therefore start in 1979. Changes in the observing system (new satellites) can cause small jumps. The links to heavier rain and longer dry spells shown on the page come from the IPCC and the scientific literature; they are not calculated from these data.
Earth's energy imbalance
Used on: Energy imbalance.
- Dataset
- NASA CERES Energy Balanced and Filled (EBAF) top-of-atmosphere monthly means, Edition 4.2.1, DOI 10.5067/TERRA-AQUA-NOAA20/CERES/EBAF-TOA_L3B004.2.1; Loeb et al. (2018), doi:10.1175/JCLI-D-17-0208.1. NASA Langley Research Center, distributed by the NASA Atmospheric Science Data Center. The newest file is found through NASA's public catalog (CMR) and downloaded with an Earthdata account; the exact file used is recorded in ceres_source.txt.
- What this site does
Takes NASA's own global monthly means from the file (all-sky): incoming solar, reflected shortwave and outgoing longwave radiation. Absorbed solar = incoming minus reflected; energy imbalance = absorbed solar minus outgoing longwave. Only if a file lacked NASA's global means would the script average the 1° grid itself, weighted by the cosine of latitude.
Running means (12 and 48 months) end at the month shown.
- Updates
- Checked daily; NASA publishes a new file about once a month, a few months behind real time.
- Checks
- The values are NASA's own global means, not recalculated. As an independent cross-check, the page compares the total heat gain measured by the satellites with the heat gain of the upper 2000 m of the ocean from NOAA over the same 10 years.
- Code
- scripts/build_ceres.py, run by update-ceres.yml. Calculations: the script inside eei.html.
- Data as used
- ceres_ebaf_global.csv (month, incoming, absorbed, outgoing, net, in W/m²).
- Limitations
- The satellites measure the imbalance as a small difference between two very large flows of energy. EBAF therefore anchors the absolute level to ocean heat measurements; the changes over time come from the satellites themselves.
- Cleaner air (sulfur dioxide)
- CEDS, Community Emissions Data System (Hoesly et al.), aggregate data, version shown on the page (doi:10.5281/zenodo.15059443; newer versions are picked up automatically). An emissions inventory: emissions are calculated from fuel use, sulfur content and pollution controls, not measured in the air. This site adds up the global by-sector file for the world total and international shipping (sector 1A3di), and the by-country file for China, India, the US, and the 27 EU countries plus the UK, from 1950, in thousand metric tons (shown in millions). Code: scripts/build_so2.py, run monthly by update-so2.yml, which downloads only when CEDS has a new version. Data as used: so2_ceds.csv. The estimates in the section (IPCC, Hodnebrog et al. 2024, the shipping-rule range) are quoted from those sources and marked as estimates.
Reproducing and citing
- Run it yourself
The scripts need Python 3 with numpy, xarray, netCDF4 and pydap. For example, to rebuild the Niño 3.4 series from NOAA's data:
git clone https://github.com/Yoyojolanda/earthindicatorscd earthindicators && python scripts/build_nino34.py --fullThe ERA5 scripts also need a free Copernicus Climate Data Store account and the cdsapi package; CERES and the NASA sea level file need a free NASA Earthdata account.
- Live numbers
- The numbers in the "In short" boxes, on the overview and on the claims page all come from one file, indicators.js, so every page shows the same value.
- Data credits
- Air temperature: generated using Copernicus Climate Change Service information; neither the European Commission nor ECMWF is responsible for any use of it. NOAA, NASA and NSIDC data are used under their terms and cited above. If you reuse a chart, please cite the underlying dataset as well as this site.
- Found a problem?
- Please open an issue on GitHub.