
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
0
—
90th % Exit Velo
0
—
Barrel %
29
6.9
Hard-Hit %
37
40.1
LA Sweet-Spot %
67
36.9
Bat Speed
65
71.1
Median Bat Speed
0
—
90th % Bat Speed
0
—
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