
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
0
—
90th % Exit Velo
0
—
Barrel %
59
10.1
Hard-Hit %
91
51.5
LA Sweet-Spot %
56
36.9
Bat Speed
50
70.4
Median Bat Speed
0
—
90th % Bat Speed
0
—
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