The Verification Venue · a number that mostly has not moved
The Breath the Mountain Half Hears
Everyone knows the sawtooth on the Keeling curve. It is the northern hemisphere's land plants inhaling every summer and exhaling every winter, and the wiggle is not one size. It is 17.9 parts per million at Point Barrow, 11.7 at a pier in California, 7.0 at Mauna Loa, and 1.2 at the South Pole running half a year backwards. Mauna Loa, the station everybody quotes, is the faintest listener of the five northern stations in this network, and it is beaten by a sea-level site at its own latitude.
The Scripps CO2 Program has been measuring the air on that mountain since 1958, and it publishes the files this page reads. There is one honest thing to say before any number appears: this series moves about once a month, and it is often weeks late. So the first thing the page prints is not the carbon dioxide. It is how long it has been since anybody at Scripps last touched the file.
What the mountain last said, and when
Loading
...
Checking whether the source has moved since you were last here.
Two publishers, two clocks, and a third that lies
Loading both clocks.
A published number is a snapshot of a moving thing
Loading the quotation.
The file that is four years dead and looks perfect
Alongside the monthly file, Scripps publishes one called daily_in_situ_co2_mlo.csv. It answers with HTTP 200. It is 727 kilobytes of well formed comma separated numbers. Its Last-Modified header is recent. Every signal a program normally checks is green, and its last reading is from February 2022.
A page that fetched it and printed "today's CO2" would be confidently, specifically wrong, and nothing would go red. That file is deliberately absent from this site's feed allowlist, so this page cannot reach it even by mistake. What follows is a committed excerpt of it, put through the same freshness gate, unmodified, that decides whether the live number above is allowed to be called current.
The negative control, run in front of you
Loading the fixture.
Before it tells you anything, it reproduces something published
NOAA and Scripps both measure the air on Mauna Loa. They are separate programmes with separate instruments, separate rules for deciding which hours count as baseline air, and separate calibration scales. NOAA publishes an annual growth rate for every year from 1959, and it publishes the recipe it uses, quoted here word for word from its own page:
Loading the snapshot.
So the test is this. Take NOAA's recipe. Apply it, in this browser, to Scripps' numbers, from the same live file the headline above came from. If the code that reports tonight's figure is measuring the world rather than echoing a file, it should land on NOAA's printed table without ever having seen it.
NOAA's recipe, Scripps' measurements, NOAA's published table
Recomputing 67 years.
The wiggle is not a fact about carbon. It is a fact about where you stand.
Now the same arithmetic, seven times. Take each station's monthly series, subtract a twelve month centred moving average (which is exactly annual, and therefore blind to the annual cycle it is removing), and what is left is the breathing. Measure the peak-to-trough size of it, one number per year. No fitting, no harmonics, no parameters. You could do it on paper.
Seven Scripps stations, from 82 north to the pole
Fetching seven stations.
One station, year by year
Two controls a reader can operate, and one comparison that only looks like one
The obvious objection to a latitude story is that latitude is confounded with everything else. Scripps' network happens to contain two comparisons that pull the confound apart, and all the stations involved are in the selector above. It also contains a third comparison that reads like a control and is not one, so that is labelled too rather than quietly used.
Waiting for the stations.
Where the result disappears
The literature's claim is that the northern cycle is getting bigger. That claim is a measurement, and it is reachable in the panel above. So is its absence. Set the station to Mauna Loa and drag the window to 1990 to 2010, and the trend is indistinguishable from nothing. Do the same at Point Barrow and it is unmistakable. Shrink the window further, though, and even Point Barrow stops being able to answer, which is the more useful half of the lesson.
Waiting for the stations.
That is not a flaw in the window control, and it is not a flaw in Mauna Loa. It is the point. The mountain sits at 19.5 degrees north in free troposphere air that has been stirred for weeks before it arrives. It hears the northern forests, but faintly, and over twenty years the growth in what it hears is buried in the year-to-year noise. The station everybody quotes is the station where this particular result cannot be seen.
On why the northern cycle is growing, this page takes no side and has no standing to. Graven and colleagues (2013) read it as northern ecosystems exchanging more carbon; Zeng and colleagues (2014) attribute a large share to the expansion and fertilisation of northern cropland; later work splits it between growing season length, carbon dioxide fertilisation, warming and land use in proportions that differ by study. Measuring the size of the cycle is arithmetic anyone can check. Explaining it is not, and one page with a moving average is not the place it gets settled.
A claim with a date on it
Everything above is already published somewhere. This is not. It is stated on 15 August 2026, before the data exists, so a stranger can come back and catch it.
The forward claim, scoreable around December 2026
Computing the method's inputs.
The check
Every free choice, named
- Which seasonally adjusted column. Scripps publishes a seasonally adjusted series (their column 6) and a gap-filled version of it (column 10) where missing months carry their spline fit. The anchor uses the filled column so that every year is computable. The unfilled column is computed too and both are in the table above; they differ by a hair and neither result depends on the choice.
- Twelve month centred moving average, and nothing cleverer. An STL decomposition or a harmonic fit would give smoother amplitudes and a different number. The moving average is used because a reader can check it by hand, and because being exactly twelve months long makes it blind to the cycle it removes. The cost is that the first and last six months of every station are unusable, so the newest full year is always about a year behind the newest reading.
- A year counts only if all twelve of its months are real measurements. Without that rule a station that reported eight months in a year would appear to have a small cycle. Partial years are dropped, not interpolated, and this is stricter than it sounds: Scripps' gap-filled column (the one used to compute the twelve month average) patches missing months from a spline plus four harmonics with a linear gain factor, which is a model whose seasonal amplitude grows linearly with time. That is the exact quantity this page measures, so counting a filled month would be reading Scripps' assumption back out and reporting it as an observation. La Jolla alone has seven years in which every one of the twelve months is blank in the measured column. The yrs column in the ladder counts only fully measured years, which is why it is well short of each station's span, and why La Jolla contributes 20 years rather than 67.
- The amplitude series is cut at the last real observation. Scripps' files carry a spline fit that runs past the measurements, and the gap-filled column keeps going with it. Reading that tail as data would show a station still reporting when it has not reported in a year.
- Ordinary least squares on annual amplitudes, with no autocorrelation correction. Successive years are not fully independent, so a real standard error is probably a little larger than the one printed. Where a result is called significant here it is at |t| above 2 on that optimistic standard error, and the three results the page leans on (Barrow, Alert, La Jolla) are far enough from the line that the correction would not touch them.
Everything that could make this wrong
- Staleness dressed as freshness is the top hazard on this page. The number at the top is only as current as the file, and the file moves monthly at best. The page prints the age of the data in the same size as the data, refuses to call a stale file current, and says plainly when nothing has changed since your last visit.
- The HTTP header disagrees with the file, and the file wins. All seven station files carry a Last-Modified of 2 July 2026 from a server-side touch during the programme's host migration, and none of them contains an observation from anywhere near that date. The stamp Scripps writes inside the file is the one this page trusts, and both are shown so you can see the gap.
- The two programmes do not agree, and this page can only show you part of that. The residual in the anchor table is the disagreement between Scripps and NOAA, and NOAA's own stated uncertainty on the growth rate is derived from exactly that disagreement, in their words, quoted above. What this page cannot do is put the two monthly series side by side, because NOAA's monthly Mauna Loa file lives under gml.noaa.gov/webdata/, which gml.noaa.gov/robots.txt disallows and this project does not fetch. So the month by month offset between the programmes is stated here as unmeasured rather than quoted from somewhere and dressed as our own arithmetic. The one live cross-check available is NOAA's published monthly figure on its landing page, and the panel above subtracts it from Scripps' only when the two are reporting the same month.
- Do not read the 1960s agreement as agreement. NOAA's monthly Mauna Loa product is Scripps data for March 1958 through April 1974. Any cross-programme comparison is only meaningful from 1974 on. This page draws no pre-1974 cross-programme comparison for that reason.
- The 2022 eruption moved the instrument. Lava cut the Mauna Loa Observatory off on 29 November 2022. NOAA substituted a site at the Maunakea Observatories, which NOAA's own note describes only as "approximately 21 miles north", from December 2022 to 4 July 2023, while still labelling the result Mauna Loa. Scripps did the same for December 2022 through February 2023 and says so in its file header, which this page reads and prints verbatim in the clocks panel above; the roughly 750 metre rise is not NOAA's figure but the difference between the two elevations Scripps prints in that same header (4,145 m against 3,397 m). The station code column in the live file is how you can see which months are affected, and the anchor table marks every growth rate that rests on one. Excluding them barely moves the headline error, and moves it in the direction that would flatter this page, which is why they are marked rather than dropped.
- Parts per million are not gigatonnes here. The temptation is to multiply a seasonal drawdown by 2.124 gigatonnes of carbon per ppm and announce how much carbon the forests took up. That factor converts a well mixed global mean. The Mauna Loa drawdown is a latitude-attenuated, month-lagged shadow of a northern signal, and multiplying it would produce a confident number about the biosphere from an instrument that cannot see most of it. This page refuses the conversion.
- Graven and colleagues' roughly 50 percent increase is not a number this page reproduces. That result comes from aircraft profiles between 45 and 90 north over a different window. It is the reason to look, not a target to hit.
- The southern stations are used for phase and size only. American Samoa and the South Pole sit on cycles of about 1.8 and 1.2 ppm. Their trends are small numbers on small cycles, and this page makes no claim about southern amplitude growth. The ladder will still colour Samoa's slope as detected, because that is what the arithmetic says about the fit; the page declining to interpret it is a separate decision from the fit's own verdict, and both are shown rather than one being suppressed to look consistent. The South Pole's slope, on fully measured years, is not distinguishable from zero at all.
- The anchor snapshot can go stale while looking authoritative. It is a committed file, not a live fetch. Its URL, its fetch time and its sha256 are printed on the page, and the verifier fails once it is more than a year old so that a person re-takes it from the permitted path by hand.
What this page does not do
It makes no policy claim, sets no target, projects nothing past its own dated forward claim, and rebuts nobody. It reports what two instruments measured and shows the arithmetic that turns those measurements into the numbers above. If any of it is wrong, the verifier and the record are how you prove it.
Where this came from
Sources, permission and licence
The data
Scripps CO2 Program, Scripps Institution of Oceanography, UC San Diego. Files served from keelinglabsites.ucsd.edu/websitedataco2/, fetched by this site's own worker so that your browser never contacts Scripps. Every file carries this line, which this page treats as binding:
“These data are subject to revision based on recalibration of standard gases. Questions about the data should be directed to Dr. Ralph Keeling (rkeeling@ucsd.edu), Stephen Walker (sjwalker@ucsd.edu) and Stephen Piper (scpiper@ucsd.edu), Scripps CO2 Program.” Header of every Scripps CO2 file used here
Required citation, from the same headers: C. D. Keeling, S. C. Piper, R. B. Bacastow, M. Wahlen, T. P. Whorf, M. Heimann and H. A. Meijer, Exchanges of atmospheric CO2 and 13CO2 with the terrestrial biosphere and oceans from 1978 to 2000. I. Global aspects, SIO Reference Series No. 01-06, Scripps Institution of Oceanography, San Diego, 88 pages, 2001.
Scripps' own statement of the cadence, from the Keeling Curve permissions page, is why this page calls the series monthly:
Loading.
Permission to fetch it
The anchor snapshot
Station coordinates
Latitude, longitude and elevation for all seven stations are Scripps' own published figures from scrippsco2.ucsd.edu/data/atmospheric-co2-data/sampling-station-records/, read 2026-08-15. They are not derived from the data files, which do not carry coordinates.
Further reading, named because it disagrees with itself
Graven, H. D. et al. (2013), Enhanced Seasonal Exchange of CO2 by Northern Ecosystems Since 1960, Science 341, 1085 to 1089, doi:10.1126/science.1239207. Keeling, C. D., Chin, J. F. S. and Whorf, T. P. (1996), Increased activity of northern vegetation inferred from atmospheric CO2 measurements, Nature 382, 146 to 149. Zeng, N. et al. (2014), PNAS 111, 15, on the agricultural share. This page cites all three as the reason the question exists and reproduces none of their numbers.
How to check every number on this page yourself
The arithmetic lives in /strata/the-breath-the-mountain-half-hears/co2.js, which is plain ES modules with no dependencies and which this page imports unchanged. The verifier in the repository at research/the-breath-the-mountain-half-hears/ imports the same module, fetches the same upstreams, recomputes every number here, checks the freshness gate against a deliberately dead file to confirm it can still refuse, and appends one line per run to an append-only record. If a number on this page and a number in that record disagree, the record is the one with a timestamp on it.
The record is where the forward claim gets scored, whether it holds or not.