Born: April 4, 1996
Height: 6’3″
Weight: 195
Bats: Right
Throws: Right
Drafted: 2nd Round, 64th Overall, 2014
How Acquired: Draft
High School: Xavier (IA) HS
Agent: Excel Sports Management

Keller moved up rapidly in the draft rankings in his last year of high school as his velocity went from the mid- to upper-80s to 90-92, reaching 95, with good movement.  His curve was described as having average or above-average potential, depending on the source.  Like most high school pitchers, he hadn’t thrown a change much yet.  His delivery is smooth and should help his command.  Baseball America ranked him the 76th best prospect in the draft and rated him 69th.  He was committed to North Carolina, which can be a difficult school to sign players away from, but he signed surprisingly quickly.  His bonus was $1M, which was $113,200 above the slot amount.

Once he was in the Pirates’ system, Keller developed into a top pitching prospect.  His fastball averages 95-96, topping out about 98.  His curve is a plus pitch and, after reaching AAA, he developed a slider that’s a swing-and-miss pitch.  He’s had trouble developing a change, as the pitch comes in a little over 90 mph, leaving too little separation from his fastball.  As a result, he doesn’t throw the change much.

R:  0-0-0, 1.98 ERA, 1.17 WHIP, 27.1 IP, 4.3 BB/9, 9.5 K/9

Keller signed early enough to see a fair amount of action in the GCL.  Despite some bouts with wildness, he was mostly effective, showing very good stuff and an ability to miss bats.  His fastball reached 94 regularly and his curve and change showed potential.

R+:  0-3-0, 8.24 ERA, 2.09 WHIP, 19.2 IP, 7.3 BB/9, 11.4 K/9

The Pirates sent Keller, like Gage Hinsz and Trey Supak, to Bristol.  He didn’t debut there until August 2 due to what the Pirates described as mild forearm tightness.  He mostly pitched badly, struggling to throw strikes, although he at least struck out a lot of batters.

A:  8-5-0, 2.46 ERA, 0.92 ERA, 124.1 IP, 1.3 BB/9, 9.5 K/9
A+:  1-0-0, 0.00 ERA, 1.00 WHIP, 6.0 IP, 1.5 BB/9, 10.5 K/9

The Pirates assigned Keller to West Virginia and he had a breakout season.  He dominated from his first game and was voted the South Atlantic League’s best pitcher by managers and scouts, along with being ranked the league’s second best prospect by Baseball America.  Keller’s fastball sat in the mid-90s and touched higher, his curve developed into a plus pitch and his command improved significantly.  If anything, he suffered at times for lack of a challenge as his fastball was often enough by itself to retire hitters.  In one game he threw the pitch 48 straight times because the hitters couldn’t handle it.  He also experienced no apparent problems from the sharp increase in his workload.  Some of this may have resulted from the fact that he had relatively few high-stress innings, with many of his innings requiring only 10-12 pitches or so.  Keller had a rough stretch at mid-season — his ERA in three June starts was 6.39 — but he bounced back and finished his time with the Power with an 0.83 ERA in six August starts.  Opposing teams tried to stack their lineups against him with left-handed hitters — lefties accounted for over 44% of the plate appearances against him — but he held them to a .456 OPS.  The Pirates moved him up to Bradenton for one regular season start, which went very well, and then the Florida State League playoffs.

A-:  0-0-0, 0.00 ERA, 0.75 WHIP 4.0 IP, 2.3 BB/9, 15.8 K/9
A+:  6-3-0, 3.14 ERA, 1.00 WHIP, 77.1 IP, 2.3 BB/9, 7.4 K/9
AA:  2-2-0, 3.12 ERA, 1.04 WHIP, 34.2 IP, 2.9 BB/9, 11.7 K/9

Keller opened back at Bradenton and continued to show that he’s one of the top pitching prospects in the minors.  His numbers there weren’t overwhelming, but the Pirates had him working on mixing his pitches and using his change more, which meant using his main strikeout pitch — his curve — less.  He missed a month due to a back injury and also came out of one start early due to a bee sting, of all things.  Of the 27 earned runs he allowed in 15 starts at Bradenton, 15 came in three starts:  he first start of the and in two rough starts shortly after he returned from the back injury.  After Keller finished July with three strong starts, the Pirates moved him up to Altoona and he pitched very well, going back to a more standard pitch selection, which greatly increased his K rate.  His xFIP of 2.65 was even better than his ERA.  Keller finished his season with two outstanding post-season starts against good teams.  The first one was a nine-inning, complete game one-hitter.  The other clinched the Eastern League title for Altoona.

A+:  0-0-0, 2.25 ERA, 2.00 WHIP, 4.0 IP, 2.3 BB/9, 4.5 K/9
AA:  9-2-0, 2.72 ERA, 1.12 WHIP, 86.0 IP, 3.3 BB/9, 8.0 K/9
AAA:  3-2-0, 4.82 ERA, 1.55 WHIP, 52.1 IP, 3.8 BB/9, 9.8 K/9

Keller’s season wasn’t quite what it was supposed to be.  He returned to Altoona and pitched very well without quite dominating.  The main difference was that he didn’t show the outstanding command he had previously, walking more hitters than usual and having some issues with high pitch counts.  Still, opponents batted only .208 against him.  He moved up to Indianapolis after 14 starts and ran into real problems.  In his first two AAA starts he gave up 13 runs and 16 hits, along with six walks in 8.2 IP.  He partly recovered and pitched better the rest of the season, but was prone to games in which he’d dominate for several innings and then have a bad inning.  He did at least continue to show the ability to miss bats.

AAA:  7-5-0, 3.56 ERA, 1.24 WHIP, 103.2 IP, 3.0 BB/9, 10.7 K/9
MLB:  1-5-0, 7.13 ERA, 1.83 WHIP, 48.0 IP, 3.0 BB/9, 12.2 K/9

Keller opened the season in AAA and pitched decently, with some control problems, through late May.  Due to injuries, the Pirates called him up to make one start near the end of the month and he gave up six runs in the first inning before recovering to throw three scoreless innings.  He returned in mid-June to make two more starts, pitching badly in one and well in the other.  He came back up in mid-August and made eight more starts, pitching well more often than not.  For the season Keller pitched better in AAA than the stats make it appear, due to the offensive explosion with a livelier ball.  He was close to the league lead in both ERA and, despite spending so much time in the majors, strikeouts.  He didn’t walk very many in the end, but got into a lot of deep counts, a problem that persisted at the major league level.  At both levels he had high K rates, probably due in part to his addition of a slider, which at the major league level got a lot of swings and misses.

Keller’s performance in the majors probably wasn’t as alarming as the ERA makes it look.  He was plagued by a stratospheric batting average on balls in play of .475 and a low strand rate of 59.6%.  As a result, his xFIP surprisingly was 3.47.  He gave up some hard contact, but his HR/9 of 1.1 was actually below the NL average of 1.4.  He mixed his pitches a lot, getting away from the fastball-heavy approach that the Pirates pushed until recently.  Keller threw his fastball 60% of the time, and the curve and slider about equally.  He threw his change only sparingly, as he clearly lacks confidence in the pitch.  Although there’s some thought that he needs a change to deal with left-handed hitters, opponents at the two levels combined had exactly the same OPS against him (.780) from both sides of the plate.  It’s possible the slider is a reasonable substitute for a change.  The hard contact came almost entirely on the fastball.

MLB:  1-1-0, 2.91 ERA, 1.25 WHIP, 21.2 IP, 7.5 BB/9, 6.6 K/9

Keller went into 2020 with some questions and didn’t get a meaningful chance to answer them.  He pitched well in his first start, although his velocity was down in the low-90s.  In his second start, he left with an oblique injury.  He returned to make three more starts late in the season.  In the last two, he threw 11 total innings without allowing a hit.  In the second one, though, he walked eight.  His velocity in those starts was back in the mid-90s.  Given how little he pitched, it makes little sense to try to draw any lasting conclusions.

AAA:  1-1-0, 3.21 ERA, 1.43 WHIP, 28.0 IP, 4.2 BB/9, 12.5 K/9
MLB:  5-11-0, 6.17 ERA, 1.79 WHIP, 100.2 IP, 4.4 BB/9, 8.2 K/9

Keller established himself as, by far, the most frustrating player in the organization.  Control remained an issue, but much of the time he simply got hit extremely hard.  His average exit velocity and hard hit percentage were among the highest in MLB, leading to a 322/400/477 opponents’ batting line.  It didn’t help that his fastball velocity was down sharply at times.  When he failed to last three innings in his first two June starts, the Pirates finally sent him to Indianapolis.  He stayed there through late July and didn’t really pitch much better; the ERA is misleading because nearly half the runs he allowed were unearned.  The Pirates brought Keller back up at the beginning of August.  He had several good starts through the end of the season, but more bad or shaky ones.

MLB:  5-12-0, 3.91 ERA, 1.40 WHIP, 159.0 IP, 3.4 BB/9, 7.8 K/9

Keller’s season started off looking like more of the same, but ended very differently.  He created some excitement in spring training by showing upper-90s velocity, but through seven starts his ERA was 6.61.  Around that point, Keller started going more heavily with a sinker.  From the beginning of June until season’s end, in 21 starts he had an ERA of 3.20 and a WHIP of 1.34.  On the season he sharply cut his walk rate.  He had only a mild platoon split and his change, which he still threw only sparingly, got much better results than the previous year.  One possible advantage from the sinker was that Keller got double play gounders in 14% of the opportunities he had, well above the league average of 10%.

Keller’s emergence was arguably the best thing that happened to the Pirates in 2022.  He should be at the top of the rotation in 2023.  Keller is arbitration-eligible for the first time.

2022: Major league minimum
Signing Bonus: $1,000,000
MiLB Debut: 2014
MLB Debut: 5/27/2019
MiLB FA Eligible: N/A
MLB FA Eligible: 2025
Rule 5 Eligible: N/A
Added to 40-Man:
Options Remaining: 1 (USED:  2019, 2021)
MLB Service Time: 3.023
June 5, 2014: Drafted by the Pittsburgh Pirates in the 2nd round, 64th overall pick; signed on June 14.
November 20, 2018: Contract purchased by the Pittsburgh Pirates.