
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 |
2023 MLB Percentile Rankings
369 PA this season — below qualified-batter cutoff. Bars ranked against qualified peers (faded to flag small sample).
Batting
xwOBA
38
0.329
xBA
51
0.257
xSLG
69
0.468
Avg Exit Velo
83
91.7
Median Exit Velo
91
95.4
90th % Exit Velo
47
105.1
Barrel %
59
10.1
Hard-Hit %
91
51.5
LA Sweet-Spot %
56
36.9
Bat Speed
50
70.4
Median Bat Speed
53
71.8
90th % Bat Speed
44
76.2
Chase %
31
30.7
Whiff %
57
20.8
K %
37
22.2
BB %
1
4.1
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+
95
≈ 30th pctl
Chase cost
-31.9r
288 swings @ bad pitch
Passive cost
-9.1r
180 takes @ hittable pitch
Swing rate
50.5%
1,497 pitches seen
Runs per 100
-2.73
lg avg -2.54
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