The population, not a board
The Baseline
Every qualified major-league hitter — all 309 of them — ranked by EV95: line up every ball he has hit this year by how hard it left the bat, walk five per cent down from the top, and read the speed. That is his top-of-range contact, with the one freak swing trimmed off. It is a speed, not a rate, and not the same thing as the share of balls he hits at 95 mph.
Nothing here is selected. The breakout and fade boards are twenty and fifteen names cut out of this exact table, and this is what they were cut out of — so you can check the selection instead of taking it.
Two different arguments, and only one of them is the list
Scroll the ranking and you will mostly find the men you would have named. That is worth something — it says the number is measuring the thing you already believe in — but it is a recognition test, and recognition is not prediction. A leaderboard of loud bats cannot tell you whether the number comes back next year. Nothing that ranks one season can.
This is the prediction argument. Every dot is a hitter, placed by what he did last season across and what he is doing this season up. The dashed line is “exactly what he did last year.” The cloud sits on it.
That is the whole engine. Hard contact travels between seasons at r = 0.88; a hitter’s luck on contact travels at r = 0.27, which is close to not at all. We bet on the first and against the second, and the One Chart is that sentence in two pictures.
A season needs 100 balls in play at this level to appear in the 2025 column. A hitter with no qualified 2025 — a rookie, or a man who missed the year — shows a dash rather than a number built out of forty swings.
And whether he has been paid for it
Hitting it hard is half a story. The other half is what the box score gave him for it, so every row carries both: what his contact was worth against what he actually got, and the one-word read that falls out of the difference: OWED, SQUARE, PAID. OWED means his contact has outrun his line and the box score owes him. PAID means the reverse: he has been paid for balls that were not struck well enough to keep paying. The cut is ±0.030 of contact value, and it is a description of tonight, not a call. A call gets filed to the Ledger with a metric, a threshold and a window, and then it is judged in public whichever way it goes.
The ranking
309 hitters · 2026 · data through July 20, 2026
Click any heading to sort — by last season, by what he has gained since, by what he is owed. Filter with the chips, or search by name, club, division or league. The table opens on the top fifty and says so; the other 259 are one click away, and nothing is left out of it. Everyone here has cleared 100 balls in play this season; that is the qualifying bar, and it is the only thing standing between this table and the whole league.
| What the market sees | What the engine sees | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| # | Player | Team | Age | OPS | G | EV95 | EV95 ’25 | Hold | Deserved | Got | Read | BIP |
| 1 | Junior Caminero | TB | 23 | .933 | 99 | 112.8 | 111.2 | +1.7 | 0.450 | 0.448 | SQUARE | 286 |
| 2 | Jordan Walker | STL | 24 | .880 | 97 | 112.8 | 112.0 | +0.8 | 0.465 | 0.471 | SQUARE | 271 |
| 3 | Jac Caglianone | KC | 23 | .784 | 94 | 112.6 | 111.4 | +1.2 | 0.489 | 0.449 | OWED | 230 |
| 4 | Oneil Cruz | PIT | 28 | .822 | 64 | 112.6 | 114.0 | -1.4 | 0.519 | 0.514 | SQUARE | 146 |
| 5 | Yordan Alvarez | HOU | 29 | 1.083 | 100 | 112.4 | 112.0 | +0.4 | 0.569 | 0.513 | OWED | 289 |
| 6 | James Wood | WSH | 24 | .954 | 101 | 112.0 | 112.8 | -0.8 | 0.601 | 0.533 | OWED | 246 |
| 7 | Nick Kurtz | ATH | 23 | .902 | 92 | 112.0 | 111.1 | +0.9 | 0.535 | 0.532 | SQUARE | 203 |
| 8 | Fernando Tatis Jr. | SD | 27 | .736 | 99 | 111.9 | 110.2 | +1.7 | 0.419 | 0.370 | OWED | 306 |
| 9 | Elly De La Cruz | CIN | 24 | .854 | 80 | 111.6 | 109.8 | +1.8 | 0.478 | 0.476 | SQUARE | 214 |
| 10 | Willson Contreras | BOS | 34 | .941 | 92 | 111.5 | 110.2 | +1.3 | 0.500 | 0.505 | SQUARE | 232 |
| 11 | Henry Bolte | ATH | 23 | .680 | 57 | 111.2 | — | — | 0.352 | 0.375 | SQUARE | 128 |
| 12 | Shohei Ohtani | LAD | 32 | .930 | 96 | 111.2 | 111.0 | +0.1 | 0.512 | 0.471 | OWED | 256 |
| 13 | Coby Mayo | BAL | 25 | .664 | 78 | 111.1 | 107.6 | +3.5 | 0.415 | 0.387 | SQUARE | 147 |
| 14 | Bobby Witt Jr. | KC | 26 | .800 | 94 | 110.9 | 111.2 | -0.3 | 0.454 | 0.388 | OWED | 292 |
| 15 | Aaron Judge | NYY | 34 | .908 | 59 | 110.9 | 112.7 | -1.8 | 0.542 | 0.467 | OWED | 141 |
| 16 | Vladimir Guerrero Jr. | TOR | 27 | .695 | 95 | 110.8 | 112.1 | -1.3 | 0.371 | 0.313 | OWED | 300 |
| 17 | Garrett Mitchell | MIL | 28 | .833 | 90 | 110.7 | — | — | 0.494 | 0.508 | SQUARE | 180 |
| 18 | Hunter Goodman | COL | 27 | .881 | 93 | 110.5 | 109.7 | +0.8 | 0.488 | 0.520 | SQUARE | 220 |
| 19 | Kyle Schwarber | PHI | 33 | .923 | 97 | 110.4 | 111.6 | -1.2 | 0.561 | 0.577 | SQUARE | 212 |
| 20 | Heliot Ramos | SF | 27 | .779 | 62 | 110.3 | 109.3 | +1.0 | 0.471 | 0.447 | SQUARE | 168 |
| 21 | Michael Harris II | ATL | 25 | .837 | 93 | 110.1 | 110.1 | +0.0 | 0.446 | 0.432 | SQUARE | 277 |
| 22 | Jo Adell | LAA | 27 | .680 | 100 | 110.1 | 110.9 | -0.8 | 0.393 | 0.360 | SQUARE | 292 |
| 23 | Jorge Soler | LAA | 34 | .667 | 78 | 110.0 | 109.1 | +0.9 | 0.407 | 0.387 | SQUARE | 182 |
| 24 | Mike Trout | LAA | 35 | .846 | 82 | 109.8 | 110.6 | -0.8 | 0.500 | 0.419 | OWED | 200 |
| 25 | Riley Greene | DET | 26 | .854 | 99 | 109.7 | 109.6 | +0.1 | 0.475 | 0.475 | SQUARE | 246 |
| 26 | Samuel Basallo | BAL | 22 | .755 | 86 | 109.7 | — | — | 0.448 | 0.411 | SQUARE | 201 |
| 27 | Jarren Duran | BOS | 30 | .594 | 92 | 109.7 | 110.0 | -0.3 | 0.397 | 0.329 | OWED | 242 |
| 28 | Matt Olson | ATL | 32 | .875 | 99 | 109.6 | 110.1 | -0.5 | 0.467 | 0.454 | SQUARE | 282 |
| 29 | Ketel Marte | AZ | 33 | .773 | 96 | 109.6 | 110.7 | -1.2 | 0.407 | 0.363 | SQUARE | 323 |
| 30 | Amed Rosario | NYY | 31 | .737 | 57 | 109.6 | 107.7 | +1.9 | 0.410 | 0.386 | SQUARE | 115 |
| 31 | Jake Burger | TEX | 30 | .724 | 96 | 109.4 | 109.8 | -0.3 | 0.400 | 0.397 | SQUARE | 252 |
| 32 | Seiya Suzuki | CHC | 32 | .833 | 84 | 109.3 | 109.7 | -0.3 | 0.413 | 0.445 | PAID | 226 |
| 33 | Colton Cowser | BAL | 26 | .638 | 88 | 109.3 | 108.1 | +1.1 | 0.398 | 0.348 | OWED | 142 |
| 34 | Dominic Canzone | SEA | 29 | .846 | 86 | 109.3 | 109.4 | -0.1 | 0.446 | 0.419 | SQUARE | 185 |
| 35 | Julio Rodríguez | SEA | 26 | .737 | 90 | 109.2 | 111.1 | -1.9 | 0.411 | 0.377 | SQUARE | 272 |
| 36 | Lawrence Butler | ATH | 26 | .590 | 92 | 109.2 | 109.3 | -0.1 | 0.374 | 0.312 | OWED | 172 |
| 37 | Carter Jensen | KC | 23 | .739 | 93 | 109.2 | — | — | 0.375 | 0.416 | PAID | 224 |
| 38 | Jake Bauers | MIL | 31 | .852 | 91 | 109.2 | 108.2 | +1.0 | 0.468 | 0.453 | SQUARE | 209 |
| 39 | Matt Chapman | SF | 33 | .692 | 84 | 109.2 | 109.7 | -0.5 | 0.328 | 0.345 | SQUARE | 225 |
| 40 | Owen Caissie | MIA | 24 | .756 | 80 | 109.2 | — | — | 0.492 | 0.498 | SQUARE | 129 |
| 41 | Shea Langeliers | ATH | 29 | .819 | 90 | 109.1 | 109.5 | -0.4 | 0.451 | 0.427 | SQUARE | 274 |
| 42 | Jesús Sánchez | TOR | 29 | .753 | 73 | 109.1 | 111.0 | -1.9 | 0.424 | 0.393 | SQUARE | 165 |
| 43 | Austin Riley | ATL | 29 | .656 | 99 | 109.0 | 110.9 | -1.8 | 0.394 | 0.357 | SQUARE | 243 |
| 44 | Francisco Alvarez | NYM | 25 | .766 | 67 | 109.0 | 110.2 | -1.2 | 0.443 | 0.416 | SQUARE | 156 |
| 45 | Juan Soto | NYM | 28 | .954 | 82 | 109.0 | 110.4 | -1.4 | 0.462 | 0.415 | OWED | 243 |
| 46 | Pete Alonso | BAL | 32 | .807 | 101 | 109.0 | 112.5 | -3.5 | 0.489 | 0.420 | OWED | 264 |
| 47 | Cam Smith | HOU | 23 | .645 | 100 | 109.0 | 107.5 | +1.5 | 0.408 | 0.335 | OWED | 243 |
| 48 | Luke Raley | SEA | 32 | .747 | 86 | 108.9 | 109.5 | -0.5 | 0.503 | 0.438 | OWED | 159 |
| 49 | José Tena | WSH | 25 | .713 | 74 | 108.9 | 105.4 | +3.5 | 0.415 | 0.408 | SQUARE | 118 |
| 50 | Brady House | WSH | 23 | .681 | 44 | 108.9 | 107.8 | +1.1 | 0.428 | 0.385 | OWED | 113 |
Showing 50 of 309 · — 259 more below the cut, not left out of it
Left of the rule is the league’s own line on the player — his results, not our numbers, and never an input to any FVR signal. Right of it is what the engine measures. The board ranks the distance between them.
OPS — On-base plus slugging — the league's own line, not an FVR signal · G — Games played — how much season is behind that line · EV95 — 95th-percentile exit velocity (mph) — how hard he hits it at his best · EV95 ’25 — The same hitter's EV95 in the previous season, for the men who qualified in both · Hold — Change in EV95 against last season, in mph — a difference, not a speed · Deserved — What his contact was worth — the value his batted balls earned, per ball in play · Got — What his contact actually produced, per ball in play — on the same scale as Deserved · Read — Whether his results have kept up with his contact, run behind it, or run ahead of it · BIP — Sample size — how many batted balls the signals are measured on
Names without a link are hitters the engine ranks but does not yet keep a page on. The table is the whole qualified league; the pages are the set we track, and we do not grow one to flatter the other. Median EV95 in this league tonight is 106.0; the range runs 96.7 to 112.8.