
David Festa
Bats/Throws: R/RAge: 26Born: Verona, NJ, United StatesDebut: Jun 27, 2024Draft: 2021

David Festa is a pitcher for the Minnesota Twins. Festa was born on March 8, 2000 in Verona, NJ, United States and debuted in the major leagues on June 27, 2024. Festa bats right and throws right. The Minnesota Twins drafted Festa in 2021 (round 13, pick 399 overall) out of Seton Hall. In 2025, Festa had an ERA of 5.40 with a WHIP of 1.28 and 53 strikeouts over 53.1 innings in 11 games. MLBDB has 2 seasons of statistics for Festa, from 2024 to 2025.
2 seasons of pitching across 1 club. Season totals, oldest first. The team shown identifies the player's club when the totals were recorded.
| Season | Team | W | L | W-L% | ERA | G | GS | SV | IP | H | R | ER | HR | BB | SO | WHIP |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 2 | 6 | .250 | 4.90 | 14 | 13 | 0 | 64.1 | 62 | 36 | 35 | 9 | 23 | 77 | 1.32 | |
| 2025MIN | 3 | 4 | .429 | 5.40 | 11 | 10 | 0 | 53.1 | 49 | 35 | 32 | 10 | 19 | 53 | 1.28 |
| Season | Team | GS | CG | SHO | QS | QS% | GF | SV | SVO | BS | HLD | SV+HLD | IR | IRS | IS% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 13 | 0 | 0 | 1 | 7.7% | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0.0% | |
| 2025MIN | 10 | 0 | 0 | 1 | 10.0% | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | N/A |
| Season | Team | IP | BF | IBB | HBP | BK | WP | SB | CS | CS% | Pick | RA9 | H/9 | HR/9 | BB/9 | K/9 | K/BB | Strike% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 64.1 | 277 | 0 | 2 | 1 | 2 | 10 | 0 | 0.0% | 0 | 5.04 | 8.67 | 1.26 | 3.22 | 10.77 | 3.35 | 64.9% | |
| 2025MIN | 53.1 | 229 | 0 | 4 | 0 | 1 | 5 | 3 | 37.5% | 2 | 5.91 | 8.27 | 1.69 | 3.21 | 8.94 | 2.79 | 64.3% |
| Season | Team | IP | BF | ERA | FIP | BABIP | K% | BB% | K−BB% | HR% | Opp AVG | Opp OBP | Opp SLG | Opp OPS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 64.1 | 277 | 4.90 | 3.76 | .319 | 27.8% | 8.3% | 19.5% | 3.2% | .247 | .314 | .434 | .748 | |
| 2025MIN | 53.1 | 229 | 5.40 | 4.88 | .275 | 23.1% | 8.3% | 14.8% | 4.4% | .240 | .316 | .422 | .737 |
Read advanced measures alongside playing time. N/A means the required inputs or season calculations are unavailable.
2 seasons of fielding across 1 club. Fielding is shown by recorded position; games at different positions can overlap.
| Season | Team | Pos | G | GS | INN | TC | PO | A | E | DP | FLD% | RF/9 | RF/G |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | P | 14 | 13 | 64.1 | 5 | 1 | 4 | 0 | 0 | 1.000 | 0.70 | 0.36 | |
| 2025MIN | P | 11 | 10 | 53.1 | 11 | 3 | 8 | 0 | 1 | 1.000 | 1.86 | 1.00 |
Recorded measurements and MLBDB estimates from the pitches thrown and the balls put in play against this pitcher. Each table's note says which.
MLBDB calculates these numbers from recorded game measurements. EV balls and LA balls show the sample sizes. EV+LA balls have both measurements and are used for barrel percentage. Seasons without these measurements show N/A.
| Season | Team | BBE | EV+LA balls | MLBDB barrels | MLBDB Barrel% | EV balls | Avg EV balls | Avg EV | Max EV | Hard-hit% | LA balls | Avg LA balls | Avg LA | Sweet-spot% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 175 | 175 | 15 | 8.6% | 175 | 174 | 89.5 | 111.8 | 38.9% | 175 | 174 | 15.0 | 41.7% | |
| 2025MIN | 153 | 153 | 18 | 11.8% | 153 | 151 | 90.4 | 113.4 | 40.5% | 153 | 151 | 19.8 | 35.9% |
Direction is estimated from recorded hit locations and the hand used to bat on each play. Rates divide by Located balls and show N/A below 95% location coverage. Unmapped balls are left out. Higher is not always better.
| Season | Team | Located balls | Location coverage | Pull% | Center% | Oppo% | Pull balls | Center balls | Oppo balls | Unmapped balls |
|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 175 | 100.0% | 42.3% | 33.7% | 24.0% | 74 | 59 | 42 | 0 | |
| 2025MIN | 152 | 99.3% | 40.8% | 41.4% | 17.8% | 62 | 63 | 27 | 1 |
Pitches counts every pitch actually thrown; automatic balls and strikes are left out. Swings include bunt attempts, and caught foul tips count as whiffs. Whiff% divides misses by swings; SwStr% divides misses by pitches. Zone rates need a recorded location for at least 95% of pitches. Missing results show N/A. For 2018 through 2024, inside or outside the zone is an MLBDB estimate from recorded pitch locations and batter zone heights; from 2025, MLB's recorded zone labels are used.
| Season | Team | Pitches | Swings | Whiff% | SwStr% | Contact% | Swing% | Chase% | Zone% | Z-Swing% | Z-Contact% | O-Contact% | First delivered strike% | Called% | CSW% | Zone coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 1099 | 535 | 28.4% | 13.8% | 71.6% | 48.7% | 31.7% | 48.0% | 67.0% | 80.2% | 54.7% | 63.9% | 16.2% | 30.0% | 100.0% | |
| 2025MIN | 882 | 452 | 27.4% | 14.1% | 72.6% | 51.2% | 29.8% | 50.9% | 71.9% | 82.0% | 48.8% | 63.9% | 13.0% | 27.1% | 100.0% |
MLBDB estimates these from recorded ball speed and angle, for seasons from 2018. A season or period shows N/A if any batted ball it needs is missing a measurement or falls outside what the model covers. That is common over a full season, and in 2018 and 2019 no regular player has complete measurements. Estimated ERA also needs the estimated wOBA to be inside the range its equation was checked on; the 2026 equation is provisional. Differences use actual results from the same completed games. These describe recorded contact, not future performance.
| Season | Team | IP | ERA | MLBDB xERA | ERA − MLBDB xERA | Model balls | Measured% | MLBDB xBA | AVG − MLBDB xBA | MLBDB xSLG | SLG − MLBDB xSLG | MLBDB xwOBA | wOBA − MLBDB xwOBA | Missing pairs |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 64.1 | 4.90 | 4.01 | 0.89 | 175 | 100.0% | .235 | 0.012 | .410 | 0.024 | .314 | 0.011 | 0 | |
| 2025MIN | 53.1 | 5.40 | 4.78 | 0.62 | 153 | 100.0% | .241 | -0.001 | .461 | -0.040 | .337 | -0.015 | 0 |
Usage shows each pitch type thrown as a share of all pitches. Pitches without a recognized type stay in the total.
| Season | Team | All pitches | FF % | SI % | SL % | CH % | Unknown | Type coverage |
|---|---|---|---|---|---|---|---|---|
| 2024MIN | 1099 | 40.2% | 0.0% | 31.8% | 28.0% | 0 | 100.0% | |
| 2025MIN | 882 | 31.5% | 12.7% | 26.8% | 29.0% | 0 | 100.0% |
Movement is in inches. Sideways: positive is to the pitcher's right, negative is left, when looking toward home plate. Vertical: positive is upward, negative is downward from the initial flight direction. No-grav removes gravity's effect; it does not mean the ball rose. Counts show how many pitches were measured.
| Season | Team | FF pitches | FF % | FF mph | FF max mph | FF rpm | FF ext ft | FF side in | FF vert in | FF no-grav in | FF whiff% | FF swings | FF speed count | FF spin count | FF ext count | FF side count | FF vert count | FF no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 442 | 40.2% | 94.7 | 97.4 | 2349 | 7.0 | 1.5 | -12.5 | 18.0 | 19.4% | 201 | 442 | 442 | 442 | 442 | 442 | 442 | 100.0% | |
| 2025MIN | 278 | 31.5% | 94.1 | 96.7 | 2417 | 7.0 | 3.0 | -12.7 | 18.3 | 14.2% | 148 | 278 | 278 | 278 | 278 | 278 | 278 | 100.0% |
| Season | Team | SI pitches | SI % | SI mph | SI max mph | SI rpm | SI ext ft | SI side in | SI vert in | SI no-grav in | SI whiff% | SI swings | SI speed count | SI spin count | SI ext count | SI side count | SI vert count | SI no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 0 | 0.0% | N/A | N/A | N/A | N/A | N/A | N/A | N/A | N/A | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 100.0% | |
| 2025MIN | 112 | 12.7% | 93.9 | 96.5 | 2297 | 7.0 | 12.3 | -16.4 | 14.6 | 12.7% | 55 | 112 | 112 | 112 | 112 | 112 | 112 | 100.0% |
| Season | Team | SL pitches | SL % | SL mph | SL max mph | SL rpm | SL ext ft | SL side in | SL vert in | SL no-grav in | SL whiff% | SL swings | SL speed count | SL spin count | SL ext count | SL side count | SL vert count | SL no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 349 | 31.8% | 86.1 | 88.8 | 2564 | 6.8 | -2.7 | -37.1 | -0.3 | 29.1% | 179 | 349 | 349 | 349 | 349 | 349 | 349 | 100.0% | |
| 2025MIN | 236 | 26.8% | 87.6 | 90.6 | 2595 | 6.9 | -1.6 | -32.8 | 2.9 | 32.2% | 115 | 236 | 236 | 236 | 236 | 236 | 236 | 100.0% |
| Season | Team | CH pitches | CH % | CH mph | CH max mph | CH rpm | CH ext ft | CH side in | CH vert in | CH no-grav in | CH whiff% | CH swings | CH speed count | CH spin count | CH ext count | CH side count | CH vert count | CH no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024MIN | 308 | 28.0% | 88.4 | 90.6 | 1839 | 6.8 | 13.6 | -25.4 | 9.5 | 39.4% | 155 | 308 | 308 | 308 | 308 | 308 | 308 | 100.0% | |
| 2025MIN | 256 | 29.0% | 87.8 | 90.8 | 1758 | 6.9 | 12.7 | -28.2 | 7.3 | 44.0% | 134 | 256 | 256 | 256 | 256 | 256 | 256 | 100.0% |
| Date | Game | Result | IP | H | R | ER | BB | SO |
|---|---|---|---|---|---|---|---|---|
| Jul 21, 2025 | L 2-5 | 5.1 | 4 | 4 | 4 | 1 | 5 | |
| Jul 9, 2025 | W 4-2 | 5.1 | 3 | 2 | 2 | 2 | 3 | |
| Jul 3, 2025 | L 1-4 | 6.0 | 5 | 4 | 4 | 1 | 7 | |
| Jun 27, 2025 | W 4-1 | 5.2 | 2 | 0 | 0 | 0 | 6 | |
| Jun 22, 2025 | L 8-9 | 4.2 | 12 | 8 | 8 | 3 | 3 |
2 recorded moves.
Status Change
Minnesota Twins transferred RHP David Festa from the 15-day injured list to the 60-day injured list. Right shoulder impingement.
Status Change
Minnesota Twins placed RHP David Festa on the 15-day injured list retroactive to March 22, 2026. Right shoulder impingement.