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.
The same chart as a table
| magnitude bin | events | mb | Mw family | other | mb 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.
The same chart as a table
| magnitude | all types, count at or above | mb only | Mw family only |
|---|
Every fit uses only events at or above this magnitude.
Who owns the catalogue above the cutoff
—
| fitted on | N | b | σ Aki | σ Shi-Bolt | share 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 on | N | b reported | error 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
—
| quantity | published (Taroni 2025) | recomputed here | difference |
|---|
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.
| window | N | b | σ 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
- Recomputing…
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.
The four published rules each pick one value on this slider. Drag it yourself and watch the b that follows, and where each rule landed.
The b that follows from your choice
–