
Ryan Johnson
Bats/Throws: S/RAge: 24Born: Dallas, TX, United StatesDebut: Mar 27, 2025Draft: 2024

Ryan Johnson is a pitcher for the Los Angeles Angels. Johnson was born on August 5, 2002 in Dallas, TX, United States and debuted in the major leagues on March 27, 2025. Johnson bats from both sides and throws right. The Los Angeles Angels drafted Johnson in 2024 (round 2C, pick 74 overall) out of Dallas Baptist. In 2026, Johnson has an ERA of 5.04 with a WHIP of 1.39 and 79 strikeouts over 100.0 innings in 22 games. MLBDB has 2 seasons of statistics for Johnson, from 2025 to 2026.
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 1 | 1 | .500 | 7.36 | 14 | 0 | 1 | 14.2 | 24 | 15 | 12 | 4 | 5 | 16 | 1.98 | |
| 2026LAA | 5 | 9 | .357 | 5.04 | 22 | 19 | 0 | 100.0 | 96 | 61 | 56 | 18 | 43 | 79 | 1.39 |
| Season | Team | GS | CG | SHO | QS | QS% | GF | SV | SVO | BS | HLD | SV+HLD | IR | IRS | IS% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 0 | 0 | 0 | 0 | N/A | 4 | 1 | 3 | 2 | 1 | 2 | 12 | 2 | 16.7% | |
| 2026LAA | 19 | 0 | 0 | 5 | 26.3% | 1 | 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% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 14.2 | 72 | 1 | 0 | 0 | 0 | 0 | 0 | N/A | 0 | 9.20 | 14.73 | 2.45 | 3.07 | 9.82 | 3.20 | 64.2% | |
| 2026LAA | 100.0 | 437 | 1 | 6 | 0 | 4 | 0 | 1 | 100.0% | N/A | 5.49 | 8.64 | 1.62 | 3.87 | 7.11 | 1.84 | 63.5% |
| Season | Team | IP | BF | ERA | FIP | BABIP | K% | BB% | K−BB% | HR% | Opp AVG | Opp OBP | Opp SLG | Opp OPS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 14.2 | 72 | 7.36 | 5.52 | .426 | 22.2% | 6.9% | 15.3% | 5.6% | .364 | .403 | .561 | .963 | |
| 2026LAA | 100.0 | 437 | 5.04 | 5.33 | .269 | 18.1% | 9.8% | 8.2% | 4.1% | .251 | .333 | .426 | .758 |
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | P | 14 | 0 | 14.2 | 3 | 1 | 2 | 0 | 1 | 1.000 | 1.84 | 0.21 | |
| 2026LAA | P | 22 | 19 | 100.0 | 16 | 11 | 5 | 0 | 0 | 1.000 | 1.44 | 0.73 |
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% |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 51 | 51 | 4 | 7.8% | 51 | 51 | 86.7 | 106.0 | 35.3% | 51 | 51 | 13.2 | 37.3% | |
| 2026LAA | 309 | 309 | 29 | 9.4% | 309 | 307 | 87.2 | 113.6 | 35.3% | 309 | 307 | 19.6 | 35.0% |
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 |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 51 | 100.0% | 49.0% | 21.6% | 29.4% | 25 | 11 | 15 | 0 | |
| 2026LAA | 309 | 100.0% | 41.1% | 35.3% | 23.6% | 127 | 109 | 73 | 0 |
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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 274 | 130 | 27.7% | 13.1% | 72.3% | 47.4% | 25.8% | 54.7% | 65.3% | 80.6% | 46.9% | 54.2% | 16.8% | 29.9% | 100.0% | |
| 2026LAA | 1722 | 805 | 23.1% | 10.8% | 76.9% | 46.7% | 28.4% | 49.1% | 65.7% | 84.4% | 60.2% | 62.1% | 16.7% | 27.5% | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 14.2 | 7.36 | 3.56 | 3.80 | 51 | 100.0% | .245 | 0.118 | .394 | 0.166 | .294 | 0.113 | 0 | |
| 2026LAA | 100.0 | 5.04 | 4.82 | 0.22 | 309 | 100.0% | .252 | -0.001 | .435 | -0.009 | .336 | -0.003 | 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 % | FC % | SL % | ST % | FS % | Unknown | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 274 | 0.7% | 21.9% | 43.4% | 5.8% | 22.3% | 5.8% | 0 | 100.0% | |
| 2026LAA | 1722 | 0.1% | 16.8% | 38.7% | 0.2% | 23.5% | 20.6% | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 2 | 0.7% | 94.5 | 94.7 | 2374 | 6.5 | 2.7 | -17.4 | 13.3 | 0.0% | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 100.0% | |
| 2026LAA | 2 | 0.1% | 94.8 | 95.2 | 2241 | 6.3 | 4.6 | -15.0 | 15.5 | 50.0% | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 60 | 21.9% | 94.3 | 96.9 | 2165 | 6.4 | 9.5 | -26.0 | 4.7 | 14.3% | 28 | 60 | 60 | 60 | 60 | 60 | 60 | 100.0% | |
| 2026LAA | 290 | 16.8% | 92.4 | 96.5 | 2238 | 6.3 | 14.1 | -26.0 | 6.1 | 2.4% | 124 | 290 | 290 | 290 | 290 | 290 | 290 | 100.0% |
| Season | Team | FC pitches | FC % | FC mph | FC max mph | FC rpm | FC ext ft | FC side in | FC vert in | FC no-grav in | FC whiff% | FC swings | FC speed count | FC spin count | FC ext count | FC side count | FC vert count | FC no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 119 | 43.4% | 91.0 | 94.3 | 2527 | 6.4 | -4.4 | -26.6 | 6.4 | 31.0% | 58 | 119 | 119 | 119 | 119 | 119 | 119 | 100.0% | |
| 2026LAA | 666 | 38.7% | 89.7 | 93.5 | 2493 | 6.2 | -2.0 | -24.5 | 9.3 | 22.7% | 309 | 666 | 666 | 666 | 666 | 666 | 666 | 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 16 | 5.8% | 86.5 | 87.8 | 2535 | 6.5 | -7.2 | -34.5 | 2.1 | 25.0% | 8 | 16 | 16 | 16 | 16 | 16 | 16 | 100.0% | |
| 2026LAA | 4 | 0.2% | 84.4 | 85.0 | 2619 | 6.4 | -7.4 | -37.3 | 0.9 | 0.0% | 1 | 4 | 4 | 4 | 4 | 4 | 4 | 100.0% |
| Season | Team | ST pitches | ST % | ST mph | ST max mph | ST rpm | ST ext ft | ST side in | ST vert in | ST no-grav in | ST whiff% | ST swings | ST speed count | ST spin count | ST ext count | ST side count | ST vert count | ST no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 61 | 22.3% | 82.7 | 85.8 | 2435 | 6.4 | -11.2 | -34.0 | 6.1 | 40.0% | 30 | 61 | 61 | 61 | 61 | 61 | 61 | 100.0% | |
| 2026LAA | 405 | 23.5% | 80.9 | 85.0 | 2428 | 6.2 | -7.8 | -35.0 | 6.8 | 28.8% | 212 | 405 | 405 | 405 | 405 | 405 | 405 | 100.0% |
| Season | Team | FS pitches | FS % | FS mph | FS max mph | FS rpm | FS ext ft | FS side in | FS vert in | FS no-grav in | FS whiff% | FS swings | FS speed count | FS spin count | FS ext count | FS side count | FS vert count | FS no-grav count | Type coverage |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2025LAA | 16 | 5.8% | 87.6 | 91.1 | 1154 | 6.6 | 7.6 | -33.6 | 2.2 | 0.0% | 5 | 16 | 16 | 16 | 16 | 16 | 16 | 100.0% | |
| 2026LAA | 355 | 20.6% | 84.6 | 88.3 | 1877 | 6.0 | 13.7 | -36.8 | 1.6 | 32.5% | 157 | 355 | 355 | 355 | 355 | 355 | 355 | 100.0% |
| Date | Game | Result | IP | H | R | ER | BB | SO |
|---|---|---|---|---|---|---|---|---|
| Sep 26 | L 4-8 | 5.0 | 7 | 4 | 4 | 4 | 3 | |
| Sep 20 | L 0-8 | 4.2 | 7 | 3 | 3 | 0 | 6 | |
| Sep 15 | W 2-1 | 6.0 | 6 | 1 | 1 | 0 | 7 | |
| Sep 9 | W 6-4 | 6.0 | 5 | 3 | 3 | 1 | 5 | |
| Sep 4 | L 0-1 | 6.0 | 4 | 1 | 1 | 2 | 6 |
7 recorded moves.
RecalledTrade
Los Angeles Angels recalled RHP Ryan Johnson from Salt Lake Bees.
OptionedTrade
Los Angeles Angels optioned RHP Ryan Johnson to Salt Lake Bees.
RecalledTrade
Los Angeles Angels recalled RHP Ryan Johnson from Rocket City Trash Pandas.
OptionedTrade
Los Angeles Angels optioned RHP Ryan Johnson to Rocket City Trash Pandas.
AssignedTrade
Los Angeles Angels sent RHP Ryan Johnson on a rehab assignment to Salt Lake Bees.
AssignedTrade
Los Angeles Angels sent RHP Ryan Johnson on a rehab assignment to Salt Lake Bees.
AssignedTrade
Los Angeles Angels sent RHP Ryan Johnson on a rehab assignment to Rancho Cucamonga Quakes.