Methods
How every column is computed, what it reads, where the eras break, and what has changed. Columns marked recorded only are shown but never compared against Savant.
Percentile bars are always computed against Baseball Savant's qualified population -- 2.1 plate appearances per team game for batters, 1.25 batters faced per team game for pitchers -- regardless of any minimum you set in the Explorer above. A percentile whose population moved with whoever is looking would not be a percentile two people could discuss, and a link shared between two readers would mean different things to each of them.
A pitcher's arsenal only shows a pitch type thrown at least 25 times in the season shown -- fewer than that is a misclassification or an experiment, not a real pitch. The league shadow behind each dot is grouped into three velocity bands (lo, mid, hi): under 90 mph, 90 to 95 mph, and over 95 mph. The bands are coarse and editorial -- a reading aid chosen for legibility, not a model of how velocity actually relates to movement.
Every ball in play in the regular season is plotted here, including untracked contact and bunts -- the same population batted_balls stores, chosen so this chart shows where the ball actually went rather than a tracked subset of it. Setting an exit-velocity or launch-angle filter necessarily narrows that population further: a ball with no recorded launch_speed or launch_angle has no measurement to compare against the threshold, so it drops out of a filtered view even though it is drawn without one. hc_x/hc_y, the coordinates a spray chart plots, cover 94.0-97.0% of batted balls in 2015-2018 and 99.7-100% from 2019 on. A 2016 spray chart is quietly missing about one batted ball in twenty-five. That is a coverage caveat, not the cliff arm_angle has (0% for 2015-2019) -- every ball plotted is real, and none is estimated to fill the gap. Ball positions are computed by fitting hc_x/hc_y to feet from home plate against hit_distance_sc, not read from a published location, and the outfield outline drawn around them is a fixed 400-foot schematic rather than the batter's actual parks; that fit's accuracy is measured against fly balls and popups — the only hit types whose recorded distance marks where the ball actually came down — where median absolute error is 4.18 ft in play and 4.26 ft on home runs, with a p95 of about 34 ft; ground balls and line drives are plotted through the same fit, but its accuracy for them hasn't been separately measured.
A pitch type appears on the release chart only if the pitcher threw it at least 25 times in the regular season shown, counting pitches whose movement was tracked -- the same arsenal floor the pitch-movement note on this page states more briefly, since both charts read the same rows. Its point is the average of the release positions recorded for that pitch type over the season, horizontal position and height averaged separately, converted from the feet Statcast reports into inches. The ellipse around the point is one standard deviation of those same release positions, again taken separately on each axis, so what it shows is how much the release point itself moved from pitch to pitch: an ellipse twice as wide as another's marks a pitch type whose release wandered about twice as far from side to side, and one twice as tall, twice as far up and down. The axes are read one at a time, so the wider of two ellipses can be the shorter. It is not a statement about how precisely the average is known -- that uncertainty is smaller, by a factor of the square root of the number of pitches, and this chart does not draw it. A pitch type whose spread could not be measured keeps its point and is drawn with no ellipse at all, rather than one of zero size, which would claim a release point that never moved. No era caveat applies here: release tracking was measured across all twelve seasons, for exactly the pitch types this chart can draw, and no group in any season is missing it outright. The gap before 2020 belongs to arm angle, which this chart does not use.
Each point is the mean release speed, in mph, of one pitch type in one game. The horizontal axis is the pitcher's own appearances in order, not calendar dates -- two games on the same date are ordered by MLB's game id, because this warehouse records no game number, so that within-date order is deterministic but not verified to match the order the games were actually played. Every panel is a pitch type the pitcher threw at least 25 times in the season shown, counting pitches whose movement was tracked -- the same arsenal the pitch-movement and release-point charts on this page show. The pitch count shown for a game (n) counts every pitch of that type thrown in it; the mean velocity is taken over only the ones among them with a recorded velocity, so the two numbers can have different denominators. A game with no recorded velocity for a pitch type breaks that pitch type's line rather than plotting it as zero. Velocity coverage at this per-game grain is not measured here.
- Player — Batter name from the Chadwick register; the raw MLBAM id when unmapped. (recorded only)
- Season — Regular-season year. Postseason and spring training are excluded throughout. (recorded only)
- PA — Plate appearances: a pitch carrying an events value, excluding truncated_pa and game_advisory. (recorded only)
- BF — Batters faced: a pitch carrying an events value, excluding truncated_pa and game_advisory. (recorded only)
- BIP — Balls in play against, measured or not. This is Savant's bip; BBE is the measured subset the exit-velocity columns are taken over.
- BBE — Batted-ball events with a measured exit velocity. Not the same as Savant's BIP, which counts every ball in play whether tracked or not. (recorded only)
- Avg EV — Mean exit velocity in mph over measured batted-ball events.
- HardHit% — Share of balls in play with an exit velocity of 95 mph or more. The denominator is bip, not bbe — every ball in play, tracked or not. (recorded only)
- Barrel% — Share of balls in play classified as barrels (launch_speed_angle = 6). The denominator is bip, not bbe — every ball in play, tracked or not.
- xwOBA — Expected wOBA: the mean of Savant's per-pitch estimate over wOBA-denominator plate appearances that carry an estimate. See runbook section 10.
- xBA — Expected batting average: Savant's per-batted-ball estimate divided by at-bats, excluding at-bats whose batted ball carries no estimate. See runbook section 22.
- xSLG — Expected slugging: Savant's per-batted-ball estimate divided by at-bats, excluding at-bats whose batted ball carries no estimate. See runbook section 22.
- HR — Home runs. A count of home_run events in regular-season plate appearances.
- AVG — Batting average: hits divided by at-bats. At-bats exclude walks, intentional walks, hit-by-pitch, sacrifice flies, sacrifice bunts and catcher's interference. See runbook section 19 for the measurement that settled the at-bat definition.
- OBP — On-base percentage: (hits + walks + hit-by-pitch) divided by (at-bats + walks + hit-by-pitch + sacrifice flies). Sacrifice bunts and catcher's interference sit outside both halves.
- SLG — Slugging: total bases divided by at-bats, where a single is 1 and a home run 4.
- K% — Strikeouts as a share of plate appearances, counting strikeout_double_play.
- BB% — Walks, including intentional walks, as a share of plate appearances. See runbook section 19 for the measurement that settled it.
- wOBA — Weighted on-base average: each way of reaching base weighted by its run value in that season, over plate appearances less intentional walks, sacrifice bunts and catcher's interference. See runbook section 27 for where the weights come from.
- Barrels — Barrels: batted balls in the exit-velocity and launch-angle combination Savant classifies as launch_speed_angle = 6. A count, not a share — Barrel% divides this by balls in play.
- Hard Hit — Hard-hit balls: batted balls with an exit velocity of 95 mph or more. A count, not a share. Savant publishes it as ev95plus; the matching rate, HardHit%, is computed over a denominator we cannot reconstruct exactly — see runbook section 16.
- Brl/PA — Barrels as a share of plate appearances, rather than of balls in play.
- Max EV — Hardest batted ball of the span, in mph. Bunts are excluded, matching Savant's exit-velocity convention. A batted ball with no measured exit velocity cannot win.
- Avg LA — Average launch angle in degrees over batted balls carrying a measured angle, bunts excluded. Its denominator is not the exit-velocity denominator: a small number of batted balls each season carry an angle with no speed, or the reverse. Recorded rather than parity-enforced — it agrees with Savant on 86.8% of qualified batters and the cause of the rest is not yet known. (recorded only)
- FB/LD EV — Average exit velocity in mph on fly balls and line drives, bunts excluded. This is a velocity, not the share of batted balls that were fly balls or line drives — Savant publishes it under the bare name 'fbld', which reads as a share and is not one.
- GB EV — Average exit velocity in mph on ground balls, bunts excluded. This is a velocity, not ground-ball rate — Savant publishes it under the bare name 'gb'.
- Sweet Spot% — Share of batted balls with a measured launch angle between 8 and 32 degrees, bunts excluded. Not parity-checked against Savant: launch angles are whole degrees at source, so the two sides disagree on boundary balls. (recorded only)
- Avg Dist (ft) — Mean projected distance of tracked batted balls, in feet, bunts included -- the population Savant's own average reconciles on. Untracked balls carry no distance.
- Max Dist (ft) — Longest tracked batted ball of the span, in feet.
- Avg HR Dist (ft) — Mean projected distance of home runs, in feet. Home runs are tracked in every season.
- Pitches — Pitches seen. Automatic balls and strikes are excluded because nothing was thrown; pitches in at-bats that never completed are included, matching Savant.
- Whiff% — Swings and misses divided by swings. A foul tip counts as a miss and a bunt attempt counts as a swing, both matching Savant. Rolling and span values cover completed plate appearances only.
- Chase% — Swings at pitches outside the strike zone divided by pitches outside the zone (Savant zones 11-14), intentional balls and pitchouts included. Untracked pitches are in neither half. Rolling values cover completed plate appearances only.
- Zone Seen% / Zone% — Share of zone-tracked pitches seen that were inside the strike zone (Savant zones 1-9). Zone is Savant's discrete zone column, not a geometric test. Not comparable across the 2026 ABS boundary, where plate position was re-measured.
- Swing% — Swings divided by pitches. Bunt attempts count as swings, matching Savant.
- Comp Swings — Competitive swings: tracked swings at or above the batter's own 10th-percentile bat speed for the season, plus slower swings of at least 60 mph that still produced a 90+ mph exit velocity. A bunt attempt is not a swing here, unlike on the plate-discipline columns. The denominator of every bat-tracking average. See runbook section 58.
- Bat Speed — Mean bat speed in mph over competitive swings. Tracked from 2023-07-14; a 2023 figure covers the second half of that season only.
- Fast Swing% — Share of competitive swings at 75 mph or faster. Savant judges 75.0 on the unrounded speed, so the published figure can differ by the swings at exactly 75.0.
- Squared Up% — Squared-up batted balls as a share of competitive contact (competitive swings that were not whiffs, fouls included). A batted ball is squared up when its exit velocity is at least 80% of the most it could have been from that bat speed and the pitch's speed at the front of the plate. See runbook section 58.
- Blast% — Blasts as a share of competitive contact. A blast is a squared-up batted ball whose squared-up ratio, capped at 100%, plus its bat speed reaches 164.
- Swing Length (ft) — Mean swing length in feet over competitive swings: the distance the sweet spot of the bat travels to the point of contact. A longer swing is a shape, not a grade.
- Attack Angle — Mean vertical angle of the bat's path at contact, in degrees, over competitive swings; positive is upward. Not a quality axis: the ideal band is 5 to 20 degrees, and both tails are worse than the middle.
- Attack Dir — Mean horizontal direction of the bat's path at contact, in degrees, over competitive swings. Savant's sign convention as published, not flipped for batter handedness.
- Swing Tilt — Mean tilt of the swing plane from horizontal, in degrees, over competitive swings.
- Ideal AA% — Share of competitive swings with an attack angle between 5 and 20 degrees, inclusive.