
PitchTrack: Visualizing MLB Pitch Trajectories in 3D
A 3D pitch visualization tool built on Statcast data. See how elite pitchers deceive hitters through tunneling, compare arsenals, and mine pitch outcomes.
I've been watching baseball my whole life and building software for over twenty years. PitchTrack is what happens when those two things finally collide.

Various screenshot from Pitch Tracker
It's a web app that visualizes MLB pitch trajectories in 3D. You pick a pitcher, and their entire arsenal renders as ribbon paths reconstructed from real Statcast game data. Fastballs, sliders, curveballs, changeups, each one traced from release point to the plate. But the feature I'm most proud of is the tunneling visualization. Great pitchers deceive hitters by making different pitches look identical out of the hand. The ball comes out of the same slot, follows the same early path, and only breaks differently in the last 15 to 20 feet, after the hitter has already committed. PitchTrack lets you see that deception in 3D. You can overlay two pitch types, watch where the paths share a tunnel, and pinpoint exactly where they diverge. Rotate the camera to the hitter's eye, the pitcher's back, or straight overhead.
The Gap
Baseball Savant is incredible. The Statcast data they make publicly available is one of the best free datasets in all of sports. But the visualizations are flat. 2D scatter plots and tables. Dense, powerful, and honestly a little intimidating if you're not already deep in the numbers.

Image
On the other end, you've got accounts like Pitching Ninja on social media posting beautiful slow-motion overlays. Great content, but there's no tool behind it. You can't go pick two pitchers and compare their pitch shapes yourself.

Image
PitchTrack sits in that gap. It takes the real Statcast data, reconstructs the full 3D trajectory of every pitch, and renders it in a way that's immediately visual and explorable. Knowledgeable but not intimidating. Closer to the feel of Linear or Vercel than ESPN.
How It Works
The core rendering runs on Three.js via React Three Fiber, sitting inside a Next.js 15 app built with React Server Components and TypeScript. Pitch paths render as ribbon trajectories with emissive materials and bloom post-processing, so they read clearly against the scene even when you're overlaying a dozen pitch types at once. Each pitch type gets a semantic color: red for fastballs, blue for breaking balls, green for offspeed. You know what you're looking at instantly.
The trajectory math uses Statcast's constant-acceleration model. Every pitch in the dataset comes with initial position, initial velocity, and acceleration vectors. From there it's the classic physics equation: `position(t) = p0 + v0t + 0.5at²`. I sample that curve at fine intervals and build the tube geometry from the resulting points. It's not a simulation; it's a reconstruction of what actually happened. The data is that good.
Camera presets let you jump between perspectives. Front view gives you the hitter's eye, which is terrifying when you see a 100 mph fastball and an 88 mph slider sharing the same tunnel for the first 20 feet. Back view shows the pitcher's release. Top view is perfect for studying horizontal break. Side view gives you that classic shape angle you see in broadcast graphics.
The Data Pipeline
The data comes from Statcast via pybaseball, a Python library that wraps Baseball Savant's public data. A daily cron job pulls the previous day's pitches and loads them into Supabase (Postgres under the hood). That gives me a fast, queryable store without running my own database infrastructure. The whole thing deploys on Vercel.
This pipeline means PitchTrack stays current throughout the season. Yesterday's starts show up today.
What's Shipped

Image
The pitch tunneling visualization is live and it's probably the feature I'm most excited about. Tunneling is how elite pitchers make hitters look foolish. A fastball and a slider come out of the same release point, travel the same path for the first 30 feet, and by the time the ball breaks differently, the hitter has already decided to swing or take. PitchTrack renders a translucent cone around those shared paths so you can see exactly how long the deception holds before the pitches split apart. You can measure it, rotate around it, and compare it across pitchers. That's something you could only read about in a FanGraphs article before. Now you can actually see it.

Image
Pitcher-batter filtering is done too. Want to see every at-bat between Ohtani and Judge? Pull it up. You get the full sequence of pitches for each plate appearance with count, runners, leverage, and outcome context.

Image
The homepage has daily rankings: top 5 in velocity, whiff rate, and strikeouts. It's a quick hook that gives casual visitors something to look at even if they don't go deep into the comparison tools.

Image
And then there's the data-mining layer. You can search for pitches matching specific criteria. "Show me every Skubal slider that got a swinging strike against a left-handed batter." That kind of query. It's the thing that makes PitchTrack useful for fantasy players and amateur coaches, not just people who want pretty visuals.
What's Next
The big one on deck is natural language queries powered by AI. Instead of building filters manually, you'd just type what you want to see. "Compare Corbin Burnes and Dylan Cease's arsenals from the last 30 days." The pitch data is structured enough that this is a genuinely tractable problem, not a gimmick.
Beyond that, I want to add at-bat replay animations. Full 3D playback of a plate appearance, pitch by pitch, with the count updating and the camera following the action. Think of it like a 3D pitch-by-pitch replay you can scrub through and rotate.
Why This Project Matters to Me
I'm not building PitchTrack because I think it's going to be a business. I'm genuinely curious about pitch selection and strategic approaches to each batter and visualizing the strategy a pitcher has from the first AB vs a batter to the last. Being able to search and select matchups and pitch results is key to understanding the psychology behind pitching. Being able to construct the 3D visualizations was the key to watching the strategies unfold in real time in pitch sequence.
The technical side is genuinely fun too. Getting Three.js to render hundreds of pitch trajectories at 60fps with bloom effects, making the camera controls feel right on mobile, reconstructing accurate flight paths from acceleration data: this is the kind of work that keeps me up at night because I want to, not because I have to.
If you care about baseball and you've ever wondered what a pitch actually looks like as it moves through space, go try PitchTrack. Pick your favorite pitcher. Rotate the camera. Compare two guys. I think you'll see the game differently.