kvlak limn

Sport & Culture · MLB Statcast · Baseball Savant

What the Pitch
Was Doing

Since 2015, a camera-and-radar rig in every big-league park has measured every pitch in flight: the speed out of the hand, the spin on the ball, the exact inch it crossed the plate. This page reads that ledger - how hard the game now throws, what shapes it throws, and the gap the tracking keeps exposing between the best stuff and the best results.

700K pitches tracked every season
2015-present
Illustrative 700,000+ pitches per season, each measured

Thirty Labs

I · The Installation

Statcast is not a sample. The rig sits in all thirty major-league parks, so every pitch in every game is measured the same way, by the same instrument. Here each installation is sized by its home staff's season strikeouts - the loudest thing a pitch can do. Seattle and the Bronx run big; Denver, where the thin air flattens every breaking ball, runs quietest in the league.

T-Mobile Park (SEA) - 1,608 K, 94.9 mph avg four-seam, 2,371 rpm Dodger Stadium (LAD) - 1,544 K, 94.5 mph avg four-seam, 2,352 rpm Yankee Stadium (NYY) - 1,533 K, 94.8 mph avg four-seam, 2,356 rpm Progressive Field (CLE) - 1,523 K, 95.1 mph avg four-seam, 2,360 rpm Citizens Bank Park (PHI) - 1,519 K, 94.3 mph avg four-seam, 2,344 rpm Truist Park (ATL) - 1,512 K, 94.4 mph avg four-seam, 2,341 rpm Petco Park (SD) - 1,498 K, 94.4 mph avg four-seam, 2,340 rpm American Family Field (MIL) - 1,497 K, 94.4 mph avg four-seam, 2,347 rpm Comerica Park (DET) - 1,488 K, 94.2 mph avg four-seam, 2,329 rpm Minute Maid Park (HOU) - 1,476 K, 94.3 mph avg four-seam, 2,336 rpm Tropicana Field (TB) - 1,471 K, 94.6 mph avg four-seam, 2,349 rpm Camden Yards (BAL) - 1,466 K, 94.1 mph avg four-seam, 2,325 rpm Target Field (MIN) - 1,461 K, 94.7 mph avg four-seam, 2,338 rpm Great American Ball Park (CIN) - 1,454 K, 94.6 mph avg four-seam, 2,333 rpm Wrigley Field (CHC) - 1,431 K, 94 mph avg four-seam, 2,312 rpm Citi Field (NYM) - 1,420 K, 94 mph avg four-seam, 2,309 rpm loanDepot Park (MIA) - 1,408 K, 94.2 mph avg four-seam, 2,318 rpm Chase Field (ARI) - 1,402 K, 93.9 mph avg four-seam, 2,298 rpm Globe Life Field (TEX) - 1,394 K, 94 mph avg four-seam, 2,307 rpm Fenway Park (BOS) - 1,389 K, 93.7 mph avg four-seam, 2,287 rpm Oracle Park (SF) - 1,387 K, 93.8 mph avg four-seam, 2,296 rpm PNC Park (PIT) - 1,372 K, 94.1 mph avg four-seam, 2,301 rpm Rogers Centre (TOR) - 1,359 K, 93.7 mph avg four-seam, 2,288 rpm Kauffman Stadium (KC) - 1,341 K, 93.6 mph avg four-seam, 2,281 rpm Busch Stadium (STL) - 1,316 K, 93.5 mph avg four-seam, 2,276 rpm Guaranteed Rate Field (CWS) - 1,298 K, 93.5 mph avg four-seam, 2,270 rpm Angel Stadium (LAA) - 1,279 K, 93.8 mph avg four-seam, 2,293 rpm Nationals Park (WSH) - 1,263 K, 93.6 mph avg four-seam, 2,272 rpm Oakland Coliseum (ATH) - 1,224 K, 93.3 mph avg four-seam, 2,258 rpm Coors Field (COL) - 1,187 K, 93.4 mph avg four-seam, 2,244 rpm
One bubble per ballpark, placed at curator-authored stadium coordinates and sized by area (radius = square root of strikeouts). Alaska and Hawaii insets are empty - no MLB club plays there; Toronto sits just above the border.
Bubble size = staff strikeouts 900 1,300 1,600
Most strikeouts
  1. 01 T-Mobile Park SEA 1,608
  2. 02 Dodger Stadium LAD 1,544
  3. 03 Yankee Stadium NYY 1,533
  4. 04 Progressive Field CLE 1,523
  5. 05 Citizens Bank Park PHI 1,519
Every park, in a table
Ballpark Club K 4-seam mph Spin rpm
American Family Field Milwaukee, WI MIL 1,497 94.4 2,347
Angel Stadium Anaheim, CA LAA 1,279 93.8 2,293
Busch Stadium St. Louis, MO STL 1,316 93.5 2,276
Camden Yards Baltimore, MD BAL 1,466 94.1 2,325
Chase Field Phoenix, AZ ARI 1,402 93.9 2,298
Citi Field Queens, NY NYM 1,420 94 2,309
Citizens Bank Park Philadelphia, PA PHI 1,519 94.3 2,344
Comerica Park Detroit, MI DET 1,488 94.2 2,329
Coors Field Denver, CO COL 1,187 93.4 2,244
Dodger Stadium Los Angeles, CA LAD 1,544 94.5 2,352
Fenway Park Boston, MA BOS 1,389 93.7 2,287
Globe Life Field Arlington, TX TEX 1,394 94 2,307
Great American Ball Park Cincinnati, OH CIN 1,454 94.6 2,333
Guaranteed Rate Field Chicago, IL CWS 1,298 93.5 2,270
Kauffman Stadium Kansas City, MO KC 1,341 93.6 2,281
loanDepot Park Miami, FL MIA 1,408 94.2 2,318
Minute Maid Park Houston, TX HOU 1,476 94.3 2,336
Nationals Park Washington, DC WSH 1,263 93.6 2,272
Oakland Coliseum Oakland, CA ATH 1,224 93.3 2,258
Oracle Park San Francisco, CA SF 1,387 93.8 2,296
Petco Park San Diego, CA SD 1,498 94.4 2,340
PNC Park Pittsburgh, PA PIT 1,372 94.1 2,301
Progressive Field Cleveland, OH CLE 1,523 95.1 2,360
Rogers Centre Toronto, ON TOR 1,359 93.7 2,288
T-Mobile Park Seattle, WA SEA 1,608 94.9 2,371
Target Field Minneapolis, MN MIN 1,461 94.7 2,338
Tropicana Field St. Petersburg, FL TB 1,471 94.6 2,349
Truist Park Atlanta, GA ATL 1,512 94.4 2,341
Wrigley Field Chicago, IL CHC 1,431 94 2,312
Yankee Stadium Bronx, NY NYY 1,533 94.8 2,356

Illustrative stand-in figures in the real Statcast shape. When the pitch-level export is ingested, strikeouts, average four-seam velocity and spin roll up per home staff (pitching team = home club in the top of the inning). Coordinates are curator-authored - see Methodology.

The Nastiest Stuff

II · The Leaderboard

Rank the arsenals by Stuff+, the model's read on raw pitch quality from velocity, spin and movement alone - 100 is league average, every 10 points above it is roughly a tier nastier. This is pure process: what the pitch is doing, before a batter has anything to say.

Rk Pitcher Primary Velo Whiff% Stuff+
01 Mason Miller ATH · RHP Four-Seam 100.9 40.1 145
02 Jhoan Duran MIN · RHP Four-Seam 100.8 33.6 140
03 Paul Skenes PIT · RHP Four-Seam 98.9 31.7 138
04 Hunter Greene CIN · RHP Four-Seam 99 30.2 135
05 Garrett Crochet CWS · LHP Four-Seam 97.2 33.9 132
06 Emmanuel Clase CLE · RHP Cutter 99.6 29.8 131
07 Tarik Skubal DET · LHP Four-Seam 96.8 32.8 128
08 Dylan Cease SD · RHP Slider 87.1 33.4 126
09 Chris Sale ATL · LHP Slider 84.6 34.7 122
10 Cole Ragans KC · LHP Four-Seam 96.1 31.1 120
11 Zack Wheeler PHI · RHP Four-Seam 95.9 27.6 118
12 Logan Gilbert SEA · RHP Four-Seam 96.4 26.9 115
13 Aaron Nola PHI · RHP Curveball 79.4 24.8 108
14 Framber Valdez HOU · LHP Sinker 93.5 18.4 105
15 Seth Lugo KC · RHP Curveball 78.2 21.6 98
16 Kyle Hendricks LAA · RHP Sinker 88.1 14.2 82

Bars share one scale; the hairline marks the league-average 100. Whiff% is whiffs per swing on the pitcher's whole mix. Illustrative stand-in figures - the physical inputs come straight from the pitch feed; Stuff+ is Baseball Savant's model (see Methodology).

Stuff Is Not Results

III · The Gap

The tracking measures the pitch; the scoreboard measures the outcome. They do not always agree. Every pitcher below is placed by Stuff+ (how nasty, going right) against the xwOBA they allow (how much damage, better going up). The parade of triple-digit fastballs clusters to the right - but plenty of them sit low, giving up more than their stuff says they should. That distance is the whole story.

avg stuff (100) avg results 80100120140 .250.280.310.340 STUFF+ → nastier better results (xwOBA) → Mason Miller (ATH) - Stuff+ 145, xwOBA .251 Miller Emmanuel Clase (CLE) - Stuff+ 131, xwOBA .244 Clase Jhoan Duran (MIN) - Stuff+ 140, xwOBA .268 Duran Paul Skenes (PIT) - Stuff+ 138, xwOBA .247 Skenes Hunter Greene (CIN) - Stuff+ 135, xwOBA .291 Greene Garrett Crochet (CWS) - Stuff+ 132, xwOBA .271 Crochet Tarik Skubal (DET) - Stuff+ 128, xwOBA .255 Skubal Dylan Cease (SD) - Stuff+ 126, xwOBA .286 Cease Chris Sale (ATL) - Stuff+ 122, xwOBA .258 Sale Cole Ragans (KC) - Stuff+ 120, xwOBA .267 Ragans Zack Wheeler (PHI) - Stuff+ 118, xwOBA .262 Wheeler Logan Gilbert (SEA) - Stuff+ 115, xwOBA .272 Gilbert Aaron Nola (PHI) - Stuff+ 108, xwOBA .295 Nola Framber Valdez (HOU) - Stuff+ 105, xwOBA .278 Valdez Seth Lugo (KC) - Stuff+ 98, xwOBA .284 Lugo Kyle Hendricks (LAA) - Stuff+ 82, xwOBA .331 Hendricks
Bottom-right = elite stuff, ordinary results (the gap). Top-left = beating the stuff. The diagonal cluster is where process and outcome agree.
Stuff outruns results Results outrun stuff The two agree
Best stuff, still waiting on results Hunter Greene Stuff+ 135 · nastiness rank #4 · results rank #14

A top-4 arsenal that hitters have squared up more than the raw stuff suggests they should - the widest process-to-outcome gap in the set.

Beating the stuff Emmanuel Clase Stuff+ 131 · nastiness rank #6 · results rank #1

Middling grades on velocity and spin, but the results land near the top - command, sequencing and deception the model does not fully price.

Illustrative stand-in figures. xwOBA (expected wOBA) rolls up straight from the pitch feed's batted-ball model; Stuff+ is the pitch-quality model - see Methodology.

Line up any two arms, side by side.

Open the compare tool →

The Arms Race

IV · Over Time

Two trends the tracking caught in the act. The league keeps throwing harder: the average four-seamer is up 1.7 mph since 2015, a tenth or two every season, no plateau in sight. And the mix keeps bending away from the heat that defines it - the four-seam recedes year over year while the sweeper, not even a named pitch a decade ago, floods in.

Average four-seam velocity, mph
92.5 93.0 93.5 94.0 94.5 151719212325 2015: 92.6 mph2016: 92.8 mph2017: 93 mph2018: 93.2 mph2019: 93.4 mph2020: 93.5 mph2021: 93.7 mph2022: 93.9 mph2023: 94 mph2024: 94.2 mph2025: 94.3 mph 92.6 94.3
Pitch mix, share of all pitches (%)
0 10 20 30 40 151719212325 Four-seam 32.5Sinker 16.6Sweeper 6.8
Four-seam Sinker Sweeper (classified from 2023)
Every season, in a table
Year 4-seam mph 4-seam % Sinker % Sweeper %
2015 92.6 36.2 21.5 -
2016 92.8 35.9 21.0 -
2017 93 35.6 20.4 -
2018 93.2 35.2 19.9 -
2019 93.4 34.9 19.3 -
2020 93.5 34.5 18.8 -
2021 93.7 34.1 18.3 -
2022 93.9 33.6 17.9 -
2023 94 33.2 17.4 4.6
2024 94.2 32.7 16.9 6.1
2025 94.3 32.5 16.6 6.8

The charted series only; the full eight-pitch mix by season sits in the table under The Whole Repertoire. The sweeper is blank before 2023 because Statcast bucketed it inside the slider until then. Illustrative stand-in figures in the real Statcast shape.

Ninety-Five Is the New Ninety

V · The Distribution

Averages flatter the change; the distribution shows it. In 2015 the league's four-seamers piled up at 91 and 92, and 15.4 percent cleared 95. In 2025 the whole curve has slid right and 38.4 percent sit at 95 or better. What used to be a scouting-report exclamation point is now the third pitch of an average inning.

Four-seam velocity, share of all four-seamers by 1-mph bin (%)
0 5 10 15 20 95 mph → 38.4% of four-seamers live here now 87-88 mph, 2015: 2.3% of four-seamers 87-88 mph, 2025: 0.2% of four-seamers 87 88-89 mph, 2015: 3.8% of four-seamers 88-89 mph, 2025: 0.6% of four-seamers 88 89-90 mph, 2015: 7.2% of four-seamers 89-90 mph, 2025: 1.8% of four-seamers 89 90-91 mph, 2015: 11.4% of four-seamers 90-91 mph, 2025: 4.2% of four-seamers 90 91-92 mph, 2015: 15.1% of four-seamers 91-92 mph, 2025: 8.0% of four-seamers 91 92-93 mph, 2015: 16.8% of four-seamers 92-93 mph, 2025: 12.6% of four-seamers 92 93-94 mph, 2015: 15.7% of four-seamers 93-94 mph, 2025: 16.4% of four-seamers 93 94-95 mph, 2015: 12.2% of four-seamers 94-95 mph, 2025: 17.5% of four-seamers 94 95-96 mph, 2015: 8.0% of four-seamers 95-96 mph, 2025: 15.5% of four-seamers 95 96-97 mph, 2015: 4.3% of four-seamers 96-97 mph, 2025: 11.2% of four-seamers 96 97-98 mph, 2015: 2.0% of four-seamers 97-98 mph, 2025: 6.7% of four-seamers 97 98-99 mph, 2015: 0.8% of four-seamers 98-99 mph, 2025: 3.3% of four-seamers 98 99-100 mph, 2015: 0.2% of four-seamers 99-100 mph, 2025: 1.3% of four-seamers 99 100-101 mph, 2015: 0.1% of four-seamers 100-101 mph, 2025: 0.4% of four-seamers 100 16.8 17.5 RELEASE SPEED, MPH
2015 2025

Each pair of columns is one 1-mph bin; heights are the share of that season's four-seamers, so both series sum to 100. The hairline marks 95 mph. Illustrative stand-in distribution shaped to the real drift - the real one bins straight off the pitch feed's release_speed column (see Methodology).

Every bin, in a table
Bin, mph 2015 share % 2025 share % Change
87-88 2.3 0.2 -2.1
88-89 3.8 0.6 -3.2
89-90 7.2 1.8 -5.4
90-91 11.4 4.2 -7.2
91-92 15.1 8.0 -7.1
92-93 16.8 12.6 -4.2
93-94 15.7 16.4 +0.7
94-95 12.2 17.5 +5.3
95-96 8.0 15.5 +7.5
96-97 4.3 11.2 +6.9
97-98 2.0 6.7 +4.7
98-99 0.8 3.3 +2.5
99-100 0.2 1.3 +1.1
100-101 0.1 0.4 +0.3

The Whole Repertoire

VI · The Mix

The book still opens on a fastball: nearly six pitches in ten are four-seamers, sinkers or cutters. But the book is being rewritten one percentage point a season. Every fastball's share is drifting down, every bender's is drifting up, and the sweeper went from unclassified to 6.8 percent of all pitches in three seasons. Eight panels, one scale - the flat lines are the story as much as the moving ones.

Share of all pitches by family, 2025 (%)
Fastballs (FF SI FC) - 58.5% of all pitches Fastballs 58.5% FF SI FC Breaking (SL CU ST) - 27.7% of all pitches Breaking 27.7% SL CU ST Offspeed (CH FS) - 13.8% of all pitches Offspeed 13.8% CH FS
FF Four-Seam -3.7 since '15
32.5
SI Sinker -4.9 since '15
16.6
SL Slider -2.9 since '15
11.9
CH Changeup +0.6 since '15
11.2
CU Curveball -0.9 since '15
9.2
FC Cutter +3.1 since '15
9.0
ST Sweeper +2.2 since '23
6.8
FS Splitter +1.9 since '15
2.8
Fastballs (FF SI FC) Breaking (SL ST CU) Offspeed (CH FS)

All eight panels share one 0-40% scale, so a flat low line really is a flat low line; the faint hairline in each panel is 20%. The end figure is the 2025 share. The sweeper panel starts in 2023, when Statcast first split it from the slider. Illustrative stand-in figures (see Methodology).

Every season's full mix, in a table
Year FF SI FC SL ST CU CH FS
2015 36.2 21.5 5.9 14.8 - 10.1 10.6 0.9
2016 35.9 21.0 6.3 15.2 - 10.0 10.6 1.0
2017 35.6 20.4 6.7 15.6 - 9.9 10.7 1.1
2018 35.2 19.9 7.0 16.0 - 10.0 10.7 1.2
2019 34.9 19.3 7.3 16.3 - 10.2 10.6 1.4
2020 34.5 18.8 7.6 16.6 - 10.3 10.6 1.6
2021 34.1 18.3 7.9 16.8 - 10.4 10.7 1.8
2022 33.6 17.9 8.3 16.9 - 10.5 10.9 1.9
2023 33.2 17.4 8.6 12.9 4.6 9.8 11.0 2.5
2024 32.7 16.9 8.9 12.2 6.1 9.4 11.1 2.7
2025 32.5 16.6 9.0 11.9 6.8 9.2 11.2 2.8

Usage share of all pitches, percent. Codes are Statcast's own pitch_type classification; the sweeper (ST) is blank before 2023 because it lived inside the slider until then.

The Shape of Deception

VII · The Movement

Radar guns flatter velocity; the cameras also see shape. Every pitch here is placed by how far it moves versus a ball thrown without spin - ride up, run to the arm side, sweep away. The four-seam lives alone at the top because its backspin fights gravity; the sweeper lives alone at the far left because sixteen inches of sideways is the whole trick. A repertoire is really a set of distances between these dots.

Average movement by pitch type, inches vs a zero-spin pitch
-15 -10 -5 0 5 10 15 -10 -5 0 5 10 15 zero spin ← GLOVE SIDE ARM SIDE → HORIZONTAL BREAK, IN RISE → ← DROP Four-Seam (FF) - +7.9 in horizontal, +15.8 in vertical, 94.2 mph FF Four-Seam Sinker (SI) - +15.1 in horizontal, +6.9 in vertical, 93.5 mph SI Sinker Slider (SL) - -5.9 in horizontal, +1.7 in vertical, 85.4 mph SL Slider Changeup (CH) - +13.2 in horizontal, +4.6 in vertical, 85.1 mph CH Changeup Curveball (CU) - -9.3 in horizontal, -8.7 in vertical, 79.6 mph CU Curveball Cutter (FC) - -1.8 in horizontal, +8.4 in vertical, 89.1 mph FC Cutter Sweeper (ST) - -14.6 in horizontal, +2.8 in vertical, 82.1 mph ST Sweeper Splitter (FS) - +9.6 in horizontal, +1.2 in vertical, 86.4 mph FS Splitter
League-average movement per pitch type, catcher's view, mirrored for lefties so arm side always reads right. "Induced" break subtracts gravity: a curveball at -9 falls nine inches more than a spinless ball would.
Fastballs Breaking Offspeed
Every pitch's movement, in a table
Pitch Family Horiz, in Vert, in Velo, mph Spin, rpm
Four-Seam FF fastball +7.9 +15.8 94.2 2,320
Sinker SI fastball +15.1 +6.9 93.5 2,178
Slider SL breaking -5.9 +1.7 85.4 2,431
Changeup CH offspeed +13.2 +4.6 85.1 1,782
Curveball CU breaking -9.3 -8.7 79.6 2,564
Cutter FC fastball -1.8 +8.4 89.1 2,384
Sweeper ST breaking -14.6 +2.8 82.1 2,648
Splitter FS offspeed +9.6 +1.2 86.4 1,497

Illustrative stand-in figures. The real values are the per-type means of the pitch feed's pfx_x / pfx_z movement columns, converted to inches and mirrored to arm-side-positive for left-handers (see Methodology).

The Bat Finds Less

VIII · The Slope

Put the two eras side by side and every line tilts the same way: batters swing through every single pitch type more than they did in 2015. Harder fastballs buy a couple points; the benders buy more; the splitter, thrown by almost nobody, misses nearly two bats in five. This is the arms race scored from the hitter's side of the plate.

Whiffs per swing by pitch type, 2015 vs 2025 (%)
15 20 25 30 35 40 2015 2025 Four-Seam 18.9 22.1 Four-Seam +3.2 Four-Seam: 18.9% in 2015, 22.1% in 2025 Sinker 13.5 15.3 Sinker +1.8 Sinker: 13.5% in 2015, 15.3% in 2025 Cutter 22.4 25.7 Cutter +3.3 Cutter: 22.4% in 2015, 25.7% in 2025 Slider 31.2 34.6 Slider +3.4 Slider: 31.2% in 2015, 34.6% in 2025 Sweeper* 34.8 36.2 Sweeper +1.4 Sweeper: 34.8% in 2023, 36.2% in 2025 Curveball 28.9 31.7 Curveball +2.8 Curveball: 28.9% in 2015, 31.7% in 2025 Changeup 28.1 30.8 Changeup +2.7 Changeup: 28.1% in 2015, 30.8% in 2025 Splitter 33.6 37.9 Splitter +4.3 Splitter: 33.6% in 2015, 37.9% in 2025
Whiffs per swing: of all swings against the pitch, the share that touched nothing. *The sweeper's first classified season is 2023, so its slope covers three seasons, not eleven.
Fastballs Breaking Offspeed
Every slope, in a table
Pitch From Then % Now % Change
Splitter FS 2015 33.6 37.9 +4.3
Sweeper ST 2023 34.8 36.2 +1.4
Slider SL 2015 31.2 34.6 +3.4
Curveball CU 2015 28.9 31.7 +2.8
Changeup CH 2015 28.1 30.8 +2.7
Cutter FC 2015 22.4 25.7 +3.3
Four-Seam FF 2015 18.9 22.1 +3.2
Sinker SI 2015 13.5 15.3 +1.8

Illustrative stand-in figures. The real rates divide swinging strikes by all swings, per pitch type per season, straight off the pitch feed's description column (see Methodology).

What Each Pitch Does

IX · The Ledger

The closing ledger: eight pitches, one tradeoff, every number in one place. Sorted fastest to slowest, the pattern reads almost like a law: the hard pitches (amber) are the ones batters put in play, and the slow benders - sweeper, splitter, slider - are where the swings and misses (slate) live. Velocity buys strikes; shape buys whiffs. Every good arsenal is a bet placed somewhere on this line.

Pitch Usage Velocity, mph · Whiff per swing, % xwOBA
FF Four-Seam 32.7% 94.2 22.1 .352
SI Sinker 16.9% 93.5 15.3 .361
FC Cutter 8.9% 89.1 25.7 .312
FS Splitter 2.7% 86.4 37.9 .261
SL Slider 12.2% 85.4 34.6 .281
CH Changeup 11.1% 85.1 30.8 .301
ST Sweeper 6.1% 82.1 36.2 .269
CU Curveball 9.4% 79.6 31.7 .272

Velocity bars share one scale (floored at 74 mph so the spread reads); whiff bars share another. xwOBA is expected wOBA against - lower is nastier. Illustrative stand-in figures pulled to the real per-pitch shape; every value here aggregates directly from the pitch feed (see Methodology).

Methodology

Notes on the Data

The figures on this page derive from MLB Statcast · Baseball Savant (2024 regular season (illustrative stand-in)), the optical-and-radar tracking installed in all thirty major-league parks since 2015. One tracked pitch is one row of the Statcast Search export; a full season runs on the order of 700,000+ pitches, each carrying release speed, spin rate, movement, release point and the plate location where it finished.

What's real, what's a stand-in

This build is badged Illustrative, and that word is doing real work. Every number on the page - the park strikeouts, the leaderboard, the scatter, the velocity distribution, the movement map, the whiff slopes, the mix panels - is a hand-authored stand-in shaped to match the real distributions, not a real ingest. The player names, ballparks and pitch taxonomy are real; the values attached to them are representative. Nothing here should be quoted as fact.

When the real export lands, the physical readings (velocity, spin, movement, usage share, whiff rate, xwOBA, the velocity histogram) aggregate directly from the pitch feed - counting and averaging, no modeling. Two indices are modeled: Stuff+ (pitch quality from velocity and shape, 100 = average) and run value per 100 come from Baseball Savant's own pitch models, joined from their leaderboards rather than computed here. The swap-point and the exact fetch loop live in the repo's HANDOFF.md; components read only derived.json, so nothing on this page changes shape when the data goes real.

On the map

Ballpark coordinates are curator-authored stadium centroids, placed with a US Albers projection (which insets Alaska and Hawaii - both empty here, as no club plays there; Toronto sits just above the border). A bubble is sized by area, radius as the square root of the home staff's strikeouts, so a bubble twice as wide is four times the value. The staff behind a park is the home club, which pitches in the top of each inning.

On movement and whiffs

The movement map plots induced break - the pitch feed's pfx_x / pfx_z columns, gravity subtracted, in inches - with horizontal break mirrored for left-handers so "arm side" always reads to the right. A whiff is a swing that touches nothing: swinging strikes divided by all swings, from the feed's per-pitch description. The velocity histogram bins four-seamers only, 1 mph per bin, each season's bins summing to 100.

What you're not seeing

Statcast begins in 2015, so nothing earlier exists here; the PitchFX era is normalized differently and is not shown. Pitch-type labels are the system's own classification and shift under your feet - most visibly in 2023, when the sweeper was split out from the slider, which is why both lines jump that season and why the sweeper's slope covers three seasons, not eleven. Park and staff totals are regular-season only, and a single elite reliever can swing a bullpen's whole line. Stuff and results are read at the pitcher level; a pitch that looks nasty in a vacuum can still be the wrong pitch in the wrong count. The cameras see everything about the ball and nothing about the plan.


Generated 2026-07-06 00:00 UTC. Source: MLB Statcast · Baseball Savant · https://baseballsavant.mlb.com/statcast_search