Current snapshot
| Age | 33 |
| Height | 6' 1" |
| Weight | 210 lb |
| Debut | 2012-04-28 |
1B · Bats/Throws L/R · 6' 1", 210 lb · Age 33
| PA | R | H | HR | SB | AVG | OBP | SLG | OPS | |
|---|---|---|---|---|---|---|---|---|---|
| 2024 | 631 | 85 | 157 | 30 | 7 | .285 | .373 | .525 | .898 |
| 2025 | 580 | 72 | 131 | 27 | 12 | .261 | .357 | .487 | .844 |
| 2026 | 294 | 46 | 63 | 15 | 5 | .256 | .364 | .496 | .860 |
| 15 Seasons | 7959 | 1200 | 1864 | 378 | 157 | .279 | .386 | .518 | .904 |
The headline weighs outcome stats (xwOBA, barrels); each bar averages its full strip group below. 100 = best in MLB.
Rolling bands shrink current-season signal toward the preseason prior until the sample earns more weight.
| xwOBA preseason | 0.357 |
| xwOBA current pace | 0.409 |
| xwOBA rolling p50 | 0.387 |
| Observed weight | 58% |
100th = best in MLB.
Our research metrics for how this hitter controls the strike zone and handles each pitch family.
Live snapshot series; true 50/100 PA windows require PA-level logs
176 Statcast batted-ball coordinates from the pitch-event feed (2026). Direction profile remains as the v1 context layer when coordinate density is limited.
Aggregate zone metrics from seasonal Statcast leaderboards.
Aggregate Savant bat-tracking metrics; not per-swing motion capture. The full swing, with the recommended path overlaid, lives in the 3D Swing Simulator.
| Age | 33 |
| Height | 6' 1" |
| Weight | 210 lb |
| Debut | 2012-04-28 |
| xwOBA Δ | +0.051 |
| wOBA Δ | +0.035 |
positive regression
Harper’s wOBA sits at 0.393, but the quality of contact underneath says it should be 0.409 — a gap of 0.016, 0.5 standard deviations from the MLB norm over 298 PA. The results have been worse than the process deserves; as the sample grows, expect the numbers to climb back toward the underlying level.
| Module | Cards | Latest | Signal |
|---|---|---|---|
| Hitting | 4 | 2026-05-05 | Impact contact carried uneven swing decisions |
| Hitter Projections 20260.358 xwOBA | 25 HR | Projection |
| 2026-05-20 vs CIN0 HR | 1 RBI / 0 Ch | 0 E | 0-3 | K, RBI |
| 2026-04-20 @ CHC0 HR | 0 RBI / 5 Ch | 0 E | 1-3 | BB |
| 2026-04-17 vs ATL0 HR | 0 RBI / 6 Ch | 0 E | 3-4 | 3B |
| 2026-04-15 vs CHC1 HR | 1 RBI / 12 Ch | 0 E | 1-4 | HR, 2 K, RBI |
| 2026-04-14 vs CHC0 HR | 0 RBI / 7 Ch | 0 E | 0-4 | K |