
Ryan O'Hearn
1B / OF / DH · PIT
MLBAM 656811
Seasons
| Yr | PA | H | HR | AVG | xwOBA | Pts | PPG |
|---|---|---|---|---|---|---|---|
| 2026 | 80 | 21 | 3 | 0.313 | 0.403 | 53 | 2.41 |
| 2025 | 547 | 133 | 17 | 0.279 | 0.346 | 307 | 2.03 |
| 2024 | 494 | 117 | 15 | 0.264 | 0.357 | 304 | 2.08 |
| 2023 | 369 | 100 | 14 | 0.288 | 0.329 | 232 | 1.92 |
| 2022 | 145 | 32 | 1 | 0.239 | 0.336 | 75 | 1.00 |
| 2021 | 255 | 53 | 9 | 0.224 | 0.297 | 99 | 1.08 |
| 2020 | 132 | 22 | 2 | 0.195 | 0.327 | 40 | 0.95 |
| 2019 | 370 | 64 | 14 | 0.195 | 0.312 | 133 | 1.22 |
| 2018 | 171 | 39 | 12 | 0.260 | 0.347 | 120 | 2.61 |
2024 MLB Percentile Rankings
494 PA this season — below qualified-batter cutoff. Bars ranked against qualified peers (faded to flag small sample).
Batting
xwOBA
81
0.357
xBA
78
0.272
xSLG
73
0.468
Avg Exit Velo
52
89.6
Median Exit Velo
49
92.5
90th % Exit Velo
27
103.6
Barrel %
29
6.9
Hard-Hit %
37
40.1
LA Sweet-Spot %
67
36.9
Bat Speed
65
71.1
Median Bat Speed
56
71.9
90th % Bat Speed
56
76.9
Chase %
60
26.2
Whiff %
83
16.1
K %
92
14.0
BB %
58
9.3
Swing Decisions
Plate Discipline · Decision+
Expected-run-value of every swing-or-take decision, against a league-average batter’s optimum. 100 = avg · 110 = 1 SD better.
Decision+
97
≈ 37th pctl
Chase cost
-36.5r
347 swings @ bad pitch
Passive cost
-14.6r
253 takes @ hittable pitch
Swing rate
46.6%
1,936 pitches seen
Runs per 100
-2.64
lg avg -2.53
Count
View
Judgment — swing% vs optimal
−35%−15%0+15%+35%
- Red cells — swings more than an optimal batter would here (chasing).
- Blue cells — swings less than optimal (too passive).
- Number in cell: swing%-delta vs optimal. Top-right: pitches seen.
Total pitches shown: 1,000