Batter vs Pitch Arsenal
A batter's own numbers by pitch type and location — add a pitcher to see their actual arsenal overlaid on top, and how this batter has done against pitches shaped like it.
James Wood LHB WAS vs Sean Manaea LHP NYN
filtered for today’s matchupP = platoon edge (batter faces the opposite hand)
Batters grouped by swing shape — bat speed and swing length for power, attack angle and path tilt for loft — from Statcast bat tracking.
The number beside each metric is the gap to league average across the 610 batters with enough tracked swings to measure.
A description, not a prediction. The model does not use it.
Bat speed, barrel rate, exit velocity and chase rate over the last 30 games against this player's own last 100, so it reads as “is he himself right now” rather than “is he good”.
Flagged only when it has moved further than three quarters of hitters do. Movement in either direction counts.
Descriptive — the model does not use it.
whole-game, not filtered to this arsenal — see the per-pitch sections belowPitchers' arsenals are grouped by pitch shape — velocity, break and spin — and weighted by how often this pitcher throws each, so the number describes the arsenal he will face tonight.
Compared against this batter's own mark across every shape he has faced, so “done well” means well for him.
Descriptive — the model does not read it.
Overall vs LHP
One row per pitch this pitcher throws, ordered by usage. The bar is how this batter has performed against it; the dotted line is his own average from that hand.
Deeper red is better than his usual, deeper blue worse.
Faded rows have too little contact to trust — the count on the right is the sample behind the number.
vs LHP · ordered by usageNo tracked contact against this pitcher's pitches for this batter yet
Left: what the pitcher throws. Right: how this batter has done against that same pitch.
The right-hand columns count only pitches carrying the same label — a slider against a slider — thrown by pitchers with the same handedness.
That is precise but can leave a small sample. The table below groups by how a pitch actually moves instead.
| Pitch | Usage% | Velo | Vert Brk | Horz Brk | Spin | Allowed HR% | Allowed Hard-Hit% | Allowed xwOBA/con | James Wood: BA | James Wood: HR% | James Wood: Hard-Hit% | James Wood: Exit Velo | James Wood: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ST | 36% | 77.3 | 2.2" | -12.3" | 2287 | 2.3% | 29% | 0.365 | 0.213 | 0.0% | 35% | 87.9 | 0.411 |
| FF | 36% | 91.4 | 10.8" | 14.1" | 2047 | 2.4% | 43% | 0.369 | 0.341 | 4.9% | 66% | 98.4 | 0.507 |
| SI | 22% | 90.5 | 4.5" | 18.2" | 2061 | 1.6% | 34% | 0.393 | 0.350 | 4.9% | 64% | 97.1 | 0.442 |
| FC | 5% | 84.6 | 6.4" | -2.3" | 2140 | 0.312 | 6.2% | 40% | 90.9 | 0.432 | |||
| CH | 1% | 82.9 | 1.7" | 14.9" | 1625 | 0.100 | 5.0% | 75% | 97.6 | 0.631 |
The table above, grouped by how the pitch moves rather than what it is called.
Two pitchers can both say “slider” and throw very different pitches. Grouping by speed, break and spin pools everyone throwing something physically similar, so the sample is bigger and steadier.
| Shape (mostly) | Usage% | Velo | Vert Brk | Horz Brk | Allowed xwOBA/con | James Wood: BA | James Wood: HR% | James Wood: Hard-Hit% | James Wood: xwOBA/con |
|---|---|---|---|---|---|---|---|---|---|
| SL/ST/CU | 31% | 77.8 | 2.3" | -10.8" | 0.352 | 0.293 | 6.7% | 50% | 0.511 |
| SI/FF/CH | 31% | 91.8 | 8.7" | 15.9" | 0.355 | 0.318 | 3.4% | 65% | 0.418 |
| CH/SI/FS | 20% | 89.5 | 5.8" | 16.7" | 0.367 | 0.242 | 6.1% | 71% | 0.536 |
| FF/SI/FC | 8% | 91.5 | 12.7" | 12.3" | 0.378 | 8.9% | 53% | 0.524 | |
| EP/FA/SL | 8% | 91.5 | 12.8" | 12.3" | 0.378 | 8.9% | 53% | 0.524 | |
| ST/SL/CU | 6% | 76.7 | 3.5" | -16.8" | 0.107 | 1.8% | 35% | 0.382 | |
| FC/SL/FF | 2% | 85.8 | 7.8" | -1.5" | 0.209 | 4.7% | 48% | 0.475 | |
| FF/SI/FC | 2% | 85.8 | 8.0" | -1.5" | 0.351 | 0.0% | 76% | 0.473 | |
| CU/KC/ST | 1% | 75.2 | -3.9" | -13.8" | 0.100 | 10.0% | |||
| CH/FS/FO | 0% | 81.6 | 1.4" | 12.3" |
One row per plate appearance, newest first. Strikeouts and walks included.
Expected stats say what a batted ball was worth given how hard and at what angle it was hit, whether or not it found a glove.
xBA is blank on strikeouts and walks — there is no batted ball to judge. xwOBA counts them.
101 PA · 30 games · 2026-07-26 to 2026-09-27| Date | Result | Count | Pitch | Velo | Exit Velo | Angle | Dist | Location | xBA | xSLG | xwOBA | Pitcher |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-09-27 | Walk | 3-1 | ST | 85.0 | — | — | — | — | — | — | 0.698 | Austin Warren |
| 2026-09-27 | Strikeout swinging | 3-2 | SI | 89.5 | — | — | — | — | — | — | 0.000 | Sean Manaea |
| 2026-09-27 | Strikeout swinging | 2-2 | SI | 92.0 | — | — | — | — | — | — | 0.000 | Sean Manaea |
| 2026-09-27 | Out ground ball | 0-0 | FF | 92.0 | 111.2 | -3° | 31 | Infield | 0.446 | 0.461 | 0.401 | Sean Manaea |
| 2026-09-26 | Out popup | 1-1 | FF | 92.5 | 89.2 | 84° | 48 | LF corner | 0.003 | 0.003 | 0.003 | Devin Williams |
| 2026-09-26 | Strikeout swinging | 3-2 | FF | 94.4 | — | — | — | — | — | — | 0.000 | Jonah Tong |
| 2026-09-26 | Single line drive | 1-2 | CH | 87.8 | 106.6 | 14° | 273 | LF gap | 0.697 | 1.065 | 0.748 | Jonah Tong |
| 2026-09-26 | Single ground ball | 1-0 | FF | 93.2 | 113.0 | -3° | 35 | CF | 0.449 | 0.462 | 0.404 | Jonah Tong |
| 2026-09-25 | Out ground ball | 3-2 | FF | 91.9 | 87.4 | -38° | 2 | Infield | 0.046 | 0.047 | 0.041 | Nate Lavender |
| 2026-09-25 | Single ground ball | 3-2 | FF | 91.3 | 110.0 | 6° | 127 | CF | 0.706 | 0.848 | 0.684 | Justin Hagenman |
| 2026-09-25 | Walk | 3-1 | CH | 86.0 | — | — | — | — | — | — | 0.698 | Justin Hagenman |
| 2026-09-25 | Walk | 3-0 | SI | 97.1 | — | — | — | — | — | — | 0.698 | Jefry Yan |
| 2026-09-25 | Single ground ball | 1-1 | SI | 99.0 | 112.9 | -5° | 22 | LF gap | 0.397 | 0.397 | 0.357 | Jefry Yan |
| 2026-09-23 | Out ground ball | 0-2 | CH | 84.0 | 96.9 | -12° | 11 | Infield | 0.183 | 0.208 | 0.165 | Jacob Waguespack |
| 2026-09-23 | Out ground ball | 1-0 | SI | 93.8 | 87.8 | -14° | 7 | Infield | 0.137 | 0.138 | 0.123 | Framber Valdez |
| 2026-09-22 | Strikeout swinging | 1-2 | ST | 80.5 | — | — | — | — | — | — | 0.000 | Brant Hurter |
| 2026-09-22 | Single ground ball | 1-2 | FF | 94.4 | 103.5 | 6° | 144 | LF gap | 0.649 | 0.732 | 0.603 | Drew Anderson |
| 2026-09-22 | Out ground ball | 0-1 | CH | 87.7 | 82.9 | -18° | 9 | Infield | 0.062 | 0.069 | 0.056 | Drew Anderson |
| 2026-09-22 | Strikeout swinging | 0-2 | CH | 89.4 | — | — | — | — | — | — | 0.000 | Drew Anderson |
| 2026-09-21 | Single ground ball | 0-2 | FF | 95.3 | 111.0 | -6° | 21 | CF | 0.403 | 0.413 | 0.363 | Drew Sommers |
| 2026-09-21 | Strikeout swinging | 2-2 | CH | 88.3 | — | — | — | — | — | — | 0.000 | River Ryan |
| 2026-09-21 | Strikeout swinging | 1-2 | CH | 92.0 | — | — | — | — | — | — | 0.000 | River Ryan |
| 2026-09-20 | Out line drive | 0-0 | SI | 92.2 | 103.9 | 17° | 359 | CF | 0.477 | 0.870 | 0.563 | Quinn Mathews |
| 2026-09-20 | Strikeout swinging | 2-2 | FF | 93.4 | — | — | — | — | — | — | 0.000 | Quinn Mathews |
| 2026-09-20 | Out ground ball | 0-0 | SI | 93.5 | 105.9 | -4° | 28 | Infield | 0.410 | 0.431 | 0.369 | Quinn Mathews |
| 2026-09-20 | Strikeout swinging | 2-2 | FF | 93.3 | — | — | — | — | — | — | 0.000 | Quinn Mathews |
| 2026-09-19 | Out ground ball | 1-2 | CH | 89.4 | 89.5 | -25° | 5 | Infield | 0.060 | 0.064 | 0.056 | George Soriano |
| 2026-09-19 | Single line drive | 2-2 | ST | 84.0 | 110.6 | 10° | 206 | RF gap | 0.906 | 1.186 | 0.906 | Michael McGreevy |
| 2026-09-18 | Double ground ball | 3-2 | FF | 90.2 | 87.9 | 12° | 180 | RF corner | 0.711 | 0.840 | 0.701 | Cooper Hjerpe |
| 2026-09-18 | Out ground ball | 0-2 | ST | 78.0 | 78.8 | 6° | 78 | Infield | 0.308 | 0.365 | 0.283 | Cooper Hjerpe |
| 2026-09-18 | Walk | 3-1 | FF | 94.8 | — | — | — | — | — | — | 0.698 | Kyle Leahy |
| 2026-09-16 | Out line drive | 2-1 | SI | 97.8 | 102.2 | 8° | 149 | Infield | 0.654 | 0.737 | 0.608 | José Alvarado |
| 2026-09-16 | Out ground ball | 1-0 | FC | 93.6 | 106.7 | -25° | 7 | Infield | 0.117 | 0.124 | 0.105 | Zack Wheeler |
| 2026-09-16 | Out ground ball | 1-0 | FF | 94.9 | 108.4 | -10° | 14 | Infield | 0.369 | 0.379 | 0.339 | Zack Wheeler |
| 2026-09-16 | Out line drive | 0-0 | FF | 94.9 | 107.0 | 16° | 341 | LF gap | 0.626 | 1.124 | 0.737 | Zack Wheeler |
| 2026-09-15 | Strikeout looking | 2-2 | FF | 97.0 | — | — | — | — | — | — | 0.000 | Jonathan Bowlan |
| 2026-09-13 | Out ground ball | 2-2 | ST | 81.5 | 69.9 | 3° | 51 | Infield | 0.158 | 0.179 | 0.149 | Tayler Saucedo |
| 2026-09-13 | Single line drive | 3-2 | CH | 82.8 | 79.9 | 14° | 181 | RF | 0.763 | 0.825 | 0.701 | Grayson Rodriguez |
| 2026-09-13 | Single ground ball | 2-2 | FF | 98.1 | 97.3 | 4° | 107 | LF | 0.503 | 0.561 | 0.461 | Grayson Rodriguez |
| 2026-09-13 | Walk | 3-1 | FF | 96.4 | — | — | — | — | — | — | 0.699 | Grayson Rodriguez |
| 2026-09-12 | Strikeout looking | 3-2 | FF | 102.4 | — | — | — | — | — | — | 0.000 | Ben Joyce |
| 2026-09-12 | Strikeout looking | 3-2 | SI | 99.9 | — | — | — | — | — | — | 0.000 | Walbert Ureña |
| 2026-09-12 | Walk | 3-2 | CH | 92.8 | — | — | — | — | — | — | 0.698 | Walbert Ureña |
| 2026-09-12 | Single ground ball | 3-1 | CH | 91.4 | 48.7 | -48° | 1 | Infield | 0.234 | 0.235 | 0.211 | Walbert Ureña |
| 2026-09-12 | Strikeout swinging | 1-2 | CH | 91.1 | — | — | — | — | — | — | 0.000 | Walbert Ureña |
| 2026-09-11 | Strikeout swinging | 3-2 | ST | 86.5 | — | — | — | — | — | — | 0.000 | Ryan Watson |
| 2026-09-11 | Single ground ball | 1-2 | FF | 97.6 | 104.8 | -4° | 37 | LF gap | 0.422 | 0.451 | 0.380 | Yusei Kikuchi |
| 2026-09-11 | Out ground ball | 1-0 | FF | 96.5 | 104.5 | -19° | 7 | Infield | 0.210 | 0.231 | 0.195 | Yusei Kikuchi |
| 2026-09-11 | Walk | 3-0 | FF | 93.2 | — | — | — | — | — | — | 0.699 | Yusei Kikuchi |
| 2026-09-09 | Single ground ball | 3-2 | SI | 95.8 | 105.6 | -10° | 11 | RF | 0.338 | 0.351 | 0.304 | Wandy Peralta |
| 2026-09-09 | Out ground ball | 1-1 | SI | 91.6 | 76.4 | -12° | 15 | Infield | 0.076 | 0.086 | 0.074 | Kyle Hart |
| 2026-09-09 | Walk | 3-1 | FC | 92.5 | — | — | — | — | — | — | 0.699 | Walker Buehler |
| 2026-09-09 | Strikeout looking | 3-2 | SI | 95.1 | — | — | — | — | — | — | 0.000 | Walker Buehler |
| 2026-09-08 | Strikeout looking | 2-2 | FF | 93.1 | — | — | — | — | — | — | 0.000 | Casey Mize |
| 2026-09-08 | Out ground ball | 0-0 | FF | 93.3 | 113.0 | -3° | 32 | RF corner | 0.449 | 0.462 | 0.404 | Casey Mize |
| 2026-09-07 | Out ground ball | 1-1 | SI | 99.9 | 107.2 | -23° | 5 | RF gap | 0.140 | 0.147 | 0.126 | Adrian Morejon |
| 2026-09-07 | Out ground ball | 1-0 | SI | 93.2 | 112.8 | 1° | 70 | CF | 0.623 | 0.699 | 0.590 | Kyle Hart |
| 2026-09-07 | Double line drive | 3-1 | FF | 94.5 | 114.3 | 20° | 328 | RF | 0.957 | 3.176 | 1.701 | Nick Pivetta |
| 2026-09-07 | Out ground ball | 0-1 | FF | 93.8 | 100.9 | -6° | 26 | Infield | 0.287 | 0.302 | 0.258 | Nick Pivetta |
| 2026-09-06 | Walk | 3-1 | SI | 101.2 | — | — | — | — | — | — | 0.698 | Edgardo Henriquez |
| 2026-09-06 | Walk | 3-2 | ST | 84.2 | — | — | — | — | — | — | 0.698 | Brock Stewart |
| 2026-09-06 | Out ground ball | 2-2 | SI | 95.0 | 85.2 | -33° | 4 | Infield | 0.050 | 0.054 | 0.045 | Justin Wrobleski |
| 2026-09-06 | Single ground ball | 1-2 | FF | 96.5 | 109.3 | -4° | 29 | LF | 0.429 | 0.442 | 0.386 | Justin Wrobleski |
| 2026-09-05 | Single ground ball | 0-0 | FF | 97.1 | 109.4 | 0° | 52 | RF | 0.491 | 0.512 | 0.442 | Tanner Scott |
| 2026-09-05 | Out ground ball | 2-1 | FF | 92.0 | 62.5 | -32° | 6 | Infield | 0.057 | 0.058 | 0.051 | Alex Vesia |
| 2026-09-05 | Out fly ball | 1-0 | SI | 95.5 | 104.7 | 40° | 360 | LF gap | 0.386 | 1.505 | 0.784 | Tyler Glasnow |
| 2026-09-04 | Out line drive | 0-1 | CH | 89.2 | 94.0 | 19° | 328 | RF gap | 0.386 | 0.519 | 0.369 | Kyle Hurt |
| 2026-09-04 | Double ground ball | 1-2 | FF | 96.5 | 87.0 | -10° | 13 | LF corner | 0.130 | 0.151 | 0.117 | Blake Snell |
| 2026-09-02 | Force Out ground ball | 1-1 | FF | 95.6 | 101.6 | -4° | 30 | Infield | 0.410 | 0.443 | 0.369 | Didier Fuentes |
| 2026-09-02 | Single line drive | 1-2 | ST | 81.6 | 101.2 | 9° | 152 | RF | 0.660 | 0.749 | 0.614 | Elieser Hernández |
| 2026-09-02 | Strikeout swinging | 0-2 | FC | 84.3 | — | — | — | — | — | — | 0.000 | Dylan Dodd |
| 2026-09-02 | Out ground ball | 1-0 | SI | 91.9 | 97.4 | -4° | 19 | Infield | 0.308 | 0.346 | 0.277 | Grant Holmes |
| 2026-08-03 | Out ground ball | 1-0 | ST | 77.2 | 89.5 | 4° | 69 | Infield | 0.423 | 0.501 | 0.409 | Kyle Backhus |
| 2026-08-03 | Grounded Into DP ground ball | 1-0 | FF | 90.4 | 75.9 | -8° | 14 | Infield | 0.111 | 0.126 | 0.114 | Aaron Nola |
| 2026-08-03 | Single ground ball | 2-2 | FF | 94.1 | 88.1 | -9° | 12 | RF gap | 0.183 | 0.214 | 0.179 | Aaron Nola |
| 2026-08-01 | Walk | 3-0 | SI | 92.9 | — | — | — | — | — | — | 0.698 | Danny Young |
| 2026-08-01 | Strikeout looking | 3-2 | SI | 90.0 | — | — | — | — | — | — | 0.000 | Martín Pérez |
| 2026-08-01 | Out line drive | 1-1 | CH | 80.6 | 100.6 | 10° | 171 | RF gap | 0.840 | 1.024 | 0.816 | Martín Pérez |
| 2026-08-01 | Out popup | 2-1 | CH | 81.1 | 87.6 | 72° | 136 | LF corner | 0.003 | 0.003 | 0.003 | Martín Pérez |
| 2026-07-31 | Strikeout looking | 0-2 | FF | 89.6 | — | — | — | — | — | — | 0.000 | Elieser Hernández |
| 2026-07-31 | Single ground ball | 2-2 | CH | 79.7 | 92.3 | 6° | 87 | RF | 0.471 | 0.533 | 0.429 | Elieser Hernández |
| 2026-07-31 | Out ground ball | 2-2 | SI | 90.8 | 91.6 | -19° | 8 | Infield | 0.108 | 0.121 | 0.097 | Bryce Elder |
| 2026-07-31 | Strikeout looking | 3-2 | FF | 93.8 | — | — | — | — | — | — | 0.000 | Bryce Elder |
| 2026-07-31 | Out ground ball | 2-2 | SI | 91.1 | 98.8 | -6° | 21 | RF corner | 0.305 | 0.334 | 0.274 | Bryce Elder |
| 2026-07-30 | Walk | 3-2 | CH | 89.7 | — | — | — | — | — | — | 0.698 | Raisel Iglesias |
| 2026-07-30 | Walk | 3-2 | FC | 92.0 | — | — | — | — | — | — | 0.698 | Victor Mederos |
| 2026-07-30 | Out ground ball | 0-1 | CH | 87.5 | 89.1 | -18° | 8 | Infield | 0.079 | 0.083 | 0.071 | Grant Holmes |
| 2026-07-30 | Out ground ball | 0-0 | SI | 94.0 | 100.4 | -13° | 12 | Infield | 0.276 | 0.283 | 0.253 | Grant Holmes |
| 2026-07-29 | Out ground ball | 0-1 | FF | 100.8 | 100.7 | -2° | 38 | RF corner | 0.384 | 0.432 | 0.347 | Louis Varland |
| 2026-07-29 | Double line drive | 0-0 | SI | 83.7 | 109.6 | 10° | 195 | RF | 0.911 | 1.244 | 0.941 | Tyler Rogers |
| 2026-07-29 | Out line drive | 2-2 | FF | 93.4 | 91.8 | 18° | 265 | LF | 0.594 | 0.729 | 0.560 | Trey Yesavage |
| 2026-07-29 | Walk | 3-0 | FF | 93.9 | — | — | — | — | — | — | 0.698 | Trey Yesavage |
| 2026-07-29 | Single line drive | 1-1 | FF | 93.8 | 83.4 | 23° | 269 | LF gap | 0.354 | 0.408 | 0.319 | Trey Yesavage |
| 2026-07-28 | Out ground ball | 2-2 | FC | 89.7 | 110.3 | -9° | 10 | Infield | 0.375 | 0.404 | 0.338 | CJ Van Eyk |
| 2026-07-28 | Strikeout swinging | 1-2 | FC | 92.1 | — | — | — | — | — | — | 0.000 | Mason Fluharty |
| 2026-07-28 | Out ground ball | 2-2 | SI | 95.1 | 85.0 | -8° | 18 | Infield | 0.095 | 0.124 | 0.086 | Brendon Little |
| 2026-07-28 | Walk | 3-2 | FF | 93.3 | — | — | — | — | — | — | 0.698 | Shane Bieber |
| 2026-07-27 | Strikeout looking | 0-2 | SI | 85.3 | — | — | — | — | — | — | 0.000 | Tyler Rogers |
| 2026-07-27 | Out ground ball | 2-2 | ST | 84.2 | 75.4 | 10° | 110 | Infield | 0.289 | 0.289 | 0.260 | Mason Fluharty |
| 2026-07-27 | Walk | 3-2 | FF | 92.4 | — | — | — | — | — | — | 0.698 | Max Scherzer |
| 2026-07-27 | Single ground ball | 0-0 | FF | 95.0 | 90.0 | 2° | 63 | LF gap | 0.338 | 0.400 | 0.317 | Max Scherzer |