The Verification Venue · a number that will not be this number tomorrow

Where the Catalogue Stops Listening

Earthquake sizes fall on a straight line when you plot them right, and the slope of that line, the Gutenberg-Richter b-value, is one of the most quoted numbers in seismology. Here is one year of the world's earthquakes, fetched a few minutes ago. The same events give three different slopes, and which one you get depends on a filing decision rather than on the Earth.

all magnitude types

the number people quote

mb only

body-wave magnitude

Mw family only

moment magnitude

These are one event list. Nothing has been filtered but the label on the magnitude.

Checking how recent the newest earthquake in this catalogue actually is.

Checking whether the catalogue itself has changed since you last loaded this page.

A magnitude is not one thing. When a seismic network records an earthquake it can measure the size several ways, and the catalogue records which ruler it used in a field called magType. Small distant events usually get mb, read off the amplitude of the first body wave to arrive. Big ones get a member of the Mw family, computed from the seismic moment: how much rock moved, how far, over how large a surface. Those are different measurements of different quantities, and the catalogue's preferred magnitude switches from one to the other partway up.

Where it switches

Below is every event of the last year, sorted into bins of 0.1 magnitude, showing which ruler the catalogue preferred in each bin. Read it left to right and watch the floor give way.

Hover or tap a bin to read its counts.

The crossover is not a property of the Earth. It is where the review procedure changes instruments.
The same chart as a table
magnitude bineventsmbMw familyothermb share

What that does to the slope

Now the fit itself. Each series below is a plot of how many earthquakes were at least as large as each magnitude, on a log scale, which is the plot the Gutenberg-Richter law says should be a straight line. The straight lines are what the maximum-likelihood estimator makes of each series from your chosen cutoff upward. Drag the cutoff and watch the three lines refuse to agree.

Points are counts. Lines are fits. Where a series' points curve away from its own line, the catalogue has stopped listening to that ruler.
The same chart as a table
magnitudeall types, count at or abovemb onlyMw family only

Every fit uses only events at or above this magnitude.

Who owns the catalogue above the cutoff

fitted onNbσ Akiσ Shi-Boltshare of the fitted events

One exponent, three answers

The obvious objection is that this is a real difference between two physical scales, and that the mb slope really is steeper because body-wave magnitude saturates. So here is a world where it cannot be. Below, a population of earthquakes is generated with exactly one true b-value, which you set. Both rulers are the same ruler: the only thing that happens is that events above a crossover get filed under the moment-magnitude label and events below it get filed under the body-wave label.

Those rows are then handed to the same function that produced the three numbers at the top of this page. Not a copy of it, and not a special case inside it: the same analyse() in catalogue.js, which cannot tell a planted row from a real one.

Small means a hard cut at the crossover; large means a wide band where both labels are in use.

Leave it on "no" first. The labelling alone is enough.

fitted onNb reportederror against the truth

Before you believe any of it: the anchor

None of the above is worth reading if the estimator is wrong. So before this page reports a number nobody has checked, it reproduces one somebody else published. In November 2025 Matteo Taroni fitted the Global CMT catalogue, 1980 to 2023, shallower than 50 km, moment magnitude 6.5 and up, and reported b = 1.02 plus or minus 0.03 from 1,274 earthquakes. Global CMT computes a moment magnitude for every event in it, so it is one ruler all the way up: the thing this whole page says the global catalogue is not.

The magnitudes below were derived once, at build time, from the Global CMT NDK files, and committed. They are refitted here, in your browser, by the same estimator that fitted tonight's catalogue.

The paper says "depth". These are the two things it can mean, and they do not give the same catalogue.

Residual against the published value

quantitypublished (Taroni 2025)recomputed heredifference

Two other anchors from the same sources, and both of them failed

Before settling on Global CMT, two historical b-values were tested against the catalogues USGS serves today, and neither reproduced. Michael (2014) publishes b = 1.05 for shallow ISC-GEM events 1918 to 2009; refitting today's ISC-GEM through the USGS service with his own per-period completeness magnitudes gives 0.983. Hutton, Woessner and Hauksson (2010) publish 0.992 plus or minus 0.003 for the southern California network 1981 to 2008; refitting today's copy of that catalogue at their completeness magnitude of 1.8 gives 0.823. Both fail for the same reason and it is not a bug: catalogues are revised after the papers that use them are published. Of the 135,203 southern California earthquakes in that window today, 98,261 now carry a coda magnitude rather than the local magnitude Hutton fitted. That is the same disease as the rest of this page, one catalogue further back.

Come back and check

This page's headline is a function of when you loaded it, so it owes you a way to catch it being different. Two honest comparisons and one dishonest one.

windowNbσ Aki

Every run of the verifier appends one line to research/where-the-catalogue-stops-listening/record.jsonl, carrying tonight's numbers, the SHA-256 of the exact magnitude list that was fitted, the b it computed for the fixed window above, and the anchor's residual. That last column is the tripwire: the anchor's catalogue is closed, so nothing about the world can move it, and if it moves anyway then this page's instrument changed rather than the Earth.

It has moved once, and the record says so rather than hiding it. The first two lines carry 1.0278 on 1,376 events. Review found two faults behind that number: the build script was reading the Global CMT hypocentral depth from the wrong columns, which truncated 105.2 km to 5.2 and let 209 deep earthquakes into a shallow-only cut, and it was fitting one variant without the binning correction. The shipped figure is now 1.0229 on 1,167. Lines written after the correction carry a parse_revision field naming it, and the verifier fails if the anchor ever moves again without one.

The check, and every free choice inside it

Run the whole thing offline: node research/where-the-catalogue-stops-listening/verify-where-the-catalogue-stops-listening.mjs. It imports the same four modules this page imports, so a broken estimator breaks both.

The older problem, which is not this one

There is a second reason a b-value moves, and it is the one the literature is mostly about: the bottom of a catalogue is soft. Small earthquakes go unrecorded, so a fit that includes them is fitting the network's hearing rather than the Earth, and the cure is to fit only above a magnitude of completeness. Choosing it is a whole literature. Southern California is the standard test bed because its network is dense and its magnitudes are one scale nearly all the way up, which is why the panel above finds no crossover there.

Four published rules, one year of southern California, the same events. It is a bigger download than the global catalogue, so it loads only if you ask for it.

What this page will claim about the future

And the claim it refuses to make

are load-bearing. All logic is in page.js, loaded as a module, so there is no inline script for a missing tag to silently disable. -->