M1 · the headlineAnnual count by rating class
Each panel is one rating class on its own vertical scale, sharing the year axis. Stratified is the default for a reason — switch to the raw total and watch the story invert.
filtered by state · month — year and rating are this chart's own axes, so they show as selection
Drag across the chart to select a year range · click once to clear it
M2 · spaceThe record has moved east
Every tornado start point in the selection, with the decade-by-decade centre of gravity drawn over the top. Mean start longitude has walked steadily east since the 1950s — 2.3° (203 km) across all ratings, 2.8° (245 km) if you filter to EF1 and above. The figure under the map is computed live from whatever is selected.
points filtered by year · state · month · rating — the drift path ignores the year brush, since decade is its own axis
scroll or pinch to zoom · drag to pan · hover a mark for that tornado
That is where, recorded after the fact. HodoDecoder 3D works the other side of it — the wind profile that produced one, in three dimensions.
M3 · time structureSame tornadoes, fewer days
Days with a tornado have been flat since the 1970s while the number arriving on each of those days keeps climbing. The record is not getting busier so much as more clustered.
filtered by state · month · rating — year is this chart's own axis
M4 · seasonThe season broadened at the cold end
Each row is a quarter-century era; each cell is that month's share of the era's EF2+ tornadoes, so eras of different size stay comparable. November through February has grown by half while June and July have hollowed out.
filtered by state · rating — month and era are this chart's own axes
M5 · regionNocturnal Dixie — and why the folk version is wrong
Dixie runs far more of its strong tornadoes after dark than the Plains does, and kills far more people per tornado. But pooled across every region, night and day are almost identical — so it is not that night kills. It is the Dixie combination.
filtered by year · month · rating — region is this chart's own dimension, so the state filter does not apply here
M6 · casualtiesA tail so heavy the mean is meaningless
Deaths per strong tornado fell through the warning era and then jumped in the 2010s — almost entirely because of one year. Toggle 2011 out and the decade returns to the trend.
filtered by state · month · rating — decade is this chart's own axis
// From the record to the profile
This page shows you where.
The app shows you why.
Every mark above is a start point — something that already happened, entered into a database afterwards. HodoDecoder 3D works the other side of the same question: the wind profile that produced one, with altitude restored as a spatial axis on the hodograph and a Skew-T that evolves through time as a volume you can orbit. Observed radiosonde launches and HRRR/RAP model profiles, pulled on demand.
The rules are the same ones this page runs on. Missing data renders as a gap rather than a bridge, model output never wears an observation's badge, and the scales stay anchored to physical units so two storms can be compared honestly.
Free: 2D hodograph and Skew-T, 15 data pulls a day. Pro is $7/month.
How this page works
There is no database and no query engine behind this page. The entire record — all 73,458 tornadoes — is one static file your browser downloads once, and every filter above re-scans all of it from scratch. These are the real numbers for the load you are looking at right now.