Mapping West Virginia's tornado tracks
Every surveyed tornado in Ohio and West Virginia since 2014, the July 2026 outbreak near my home county, and all 74,771 US tornadoes back to 1950.
West Virginia is not tornado country. Since 2014 the Weather Service has surveyed 46 touchdowns there against 345 in Ohio; the mountains break up the rotating storms that drop tornadoes. On July 21, 2026, an outbreak along the Ohio River changed that for a day: fifteen surveyed tornadoes across the two states, nine of them touching West Virginia. They wrapped around Harrison County, where I live: Doddridge to the west, Ritchie and Pleasants to the northwest, Barbour to the south.
Each line is a surveyed damage path, colored by EF rating. Click a track for the surveyed peak wind and impact. The controls beside the map (below it on a phone) filter by time and EF rating and shade counties by count or peak wind.
The default view is July 21, 2026, centered on my corner of the state. Switch the time filter to 2024 or to all years and the map re-frames to the whole region, where a very different picture shows up.
Full list of the July 21, 2026 tornadoes (text version of the map)
| Tornado | Touchdown | EF | Peak wind | Path (mi) | Notes |
|---|---|---|---|---|---|
| Washington to Pleasants #2 | Washington County, OH | EF2 | 130 mph | 12.1 | Crossed the Ohio River into WV |
| Washington to Pleasants #1 | Washington County, OH | EF2 | 120 mph | 12.2 | Crossed the Ohio River into WV |
| SE Ritchie Co | Ritchie County, WV | EF2 | 115 mph | 1.8 | |
| Washington to Doddridge | Washington County, OH | EF1 | 110 mph | 24.3 | Crossed the Ohio River into WV |
| High View WV | Hampshire County, WV | EF1 | 110 mph | 3.3 | |
| Zane1 | Muskingum County, OH | EF1 | 105 mph | 8.7 | |
| Kiser Gap WV | Pendleton County, WV | EF1 | 100 mph | 10.4 | |
| Gandy Survey | Randolph County, WV | EF1 | 95 mph | 0.9 | |
| Amelia OH | Clermont County, OH | EF1 | 90 mph | 4.9 | |
| Barbour Co | Barbour County, WV | EF0 | 85 mph | 0.3 | |
| Youngstown Tornado | Trumbull County, OH | EF0 | 85 mph | 6.2 | |
| Seneca Rocks WV Tornado | Pendleton County, WV | EF0 | 80 mph | 0.2 | |
| Zane2 | Muskingum County, OH | EF0 | 75 mph | 15.8 | |
| Lees Creek OH | Clinton County, OH | EF0 | 75 mph | 3.4 | |
| Feesburg OH | Brown County, OH | EF0 | 75 mph | 1.7 |
Mostly weak, and one record year
Nearly all of them are EF0 or EF1. The two states recorded one EF4 in the 2014 to 2026 record, the 2019 Dayton tornado in Ohio.
2024 set the record with 89 surveyed tracks, well past the next-highest year at 65. Seventeen were in West Virginia.
How do you count a tornado?
July 21 was six West Virginia tornadoes or nine, depending on the question. Six touched down inside the state. The two strongest, both EF2, sit in the record as Ohio tornadoes because they first reached the ground in Washington County before crossing into Pleasants County. The map counts by touchdown, the Weather Service standard, and every crossing track says "Crossed the Ohio River" in its popup. Every track is a finished survey, not a preliminary spotter report.
The whole country, back to 1950
The national map is every tornado in the national record, 74,771 of them, from 1950 through this year.
Every tornado in the Storm Prediction Center database, 1950 to 2026. Finalized through 2025; 2026 is preliminary and draws as hollow rings. Drag the year slider to filter the record, and the rating checkboxes to isolate the strong ones.
- It draws the Storm Prediction Center database: a begin and an end point per tornado, so tracks are straight segments. About 26,000 of the records have no end point and render as points.
- Through 2025 it is the finalized database. The current year comes from SPC's preliminary reports, drawn as hollow rings. There are 1,313 of them so far, all unrated.
The trap in this data
The count of recorded tornadoes climbs across the record. It is tempting to read that as more tornadoes. It is mostly better detection:
- 1950: 201 tornadoes recorded, and 99 of them were rated F2 or stronger. Nearly half.
- 2011: 1,704 recorded, and 283 of them were F2 or stronger. About one in six.
In 1950 a violent tornado through a town got written down and a brief EF0 over pasture did not. Spotters, Doppler radar and phone cameras filled in the weak tail. Read the strong-tornado series for a trend.
- Ratings changed scale in February 2007, from Fujita to Enhanced Fujita, in one column.
- An unknown rating is not a zero. 1,546 records carry a magnitude of -9.
- The usual dedup is wrong here. Keeping rows where the state number is one would drop 670 real records; the build re-checks that on every refresh.
How it's built
A Python script pulls surveyed, curved damage paths from the NWS Damage Assessment Toolkit, snaps each to its starting county and writes GeoJSON; a MapLibre GL page draws them over Esri satellite imagery. No backend, no API key.