
A closer look at all the pitchers, against all the hitters.
After an agonizing one day, the San Francisco Giants have broken their hiatus and have decided to play baseball again today. You can even watch the action on MLB TV, where it’s the free game of the day.
Before that happens, though, let’s wrap up my overly-detailed two-day series of contextualized stats. Yesterday we covered the hitters, and today we’ll cover the pitchers. I could give you some verbose intro about Spring Training stats, or I could just tell you to read yesterday’s intro if you need a refresher.
What follows is a list of all the Giants pitchers in camp, and how they’ve performed against each level of opposing talent.
Giants regulars
Camilo Doval (RHP)
vs. regulars: 2 batters faced, 1 hit
vs. 40-mans: 2 batters faced, 0 hits, 1 walk
vs. NRIs: 6 batters faced, 0 hits, 3 strikeouts
vs. MiLBs: 2 batters faced, 1 hit, 1 double
Total: 3 innings, 2 hits, 1 extra-base hit, 1 walk, 3 strikeouts, 3.00 ERA, 2.70 FIP
Doval has looked good so far this spring. The lone damage done against him was a generously-ruled double that went under the glove of still-learning-first prospect Bryce Eldridge. For the most part, Doval has shown improved control over last year.
Kyle Harrison (LHP)
vs. regulars: 1 batter faced, 0 hits, 1 strikeout
vs. 40-mans: 4 batters faced, 1 hit, 1 double, 1 strikeout
vs. NRIs: 3 batters faced, 1 hit, 1 strikeout
vs. MiLBs: n/a
Total: 2 innings, 2 hits, 1 extra-base hit, 0 walks, 3 strikeouts, 0.00 ERA, 0.70 FIP
Harrison was delayed starting his spring, after dealing with a tough illness, so he’s a game behind most of the the other starters. But my goodness did he pitch well in that one game. His velocity was only sitting in the 91-93 range though, so that’s worth keeping an eye on.
Jordan Hicks (RHP)
vs. regulars: 3 batters faced, 0 hits, 1 walk, 1 hit by pitch
vs. 40-mans: 2 batters faced, 0 hits, 2 strikeouts
vs. NRIs: 2 batters faced, 1 hit, 1 strikeout
vs. MiLBs: n/a
Total: 1.1 innings, 1 hit, 1 walk, 3 strikeouts, 0.00 ERA, 3.70 FIP
The most exciting development for Hicks is that he hit triple digits. After starting the conversion from reliever to starter last year, Hicks’ velocity — which had touched 105 when coming out of the bullpen — was comfortably down in the 90s. New pitching coach J.P. Martinez spoke in the offseason about wanting Hicks to gas himself out rather than pace himself. This could be fun!
Jordan got out of a jam, hit mph and struck out three in 1.1 scoreless innings pic.twitter.com/ZLLkzQ0zSe
— SFGiants (@SFGiants) February 26, 2025
Sean Hjelle (RHP)
vs. regulars: 7 batters faced, 1 hit, 4 strikeouts
vs. 40-mans: 2 batters faced, 2 hits
vs. NRIs: 5 batters faced, 3 hits, 2 strikeouts
vs. MiLBs: n/a
Total: 2.2 innings, 6 hits, 6 strikeouts, 6.75 ERA, -0.80 FIP
Well, that’s a contrast between ERA and FIP that you don’t see every day! Gotta love small sample sizes. Hjelle was utterly dominant in his first two appearances of the spring, before getting small-ball roughed up in his third.
Robbie Ray (LHP)
vs. regulars: 11 batters faced, 1 hit, 1 double, 6 strikeouts
vs. 40-mans: 2 batters faced, 0 hits, 1 hit batter, 1 strikeout
vs. NRIs: 4 batters faced, 1 hit, 2 strikeouts
vs. MiLBs: n/a
Total: 5 innings, 2 hits, 1 extra-base hit, 0 walks, 9 strikeouts, 1 runner caught, 1 stolen base allowed, 0.00 ERA, 0.70 FIP
Pretty much a dream start to the spring for Ray, who has mowed down MLB batters, while debuting a new pitch that he learned from Tarik Skubal. Is it enough to make anyone confident that Ray has returned to his Cy Young form? No. But is it enough to make us all start to think about how exciting that would be? Absolutely.
Tyler Rogers (RHP)
vs. regulars: 5 batters faced, 2 hits
vs. 40-mans: 3 batters faced, 1 hit, 1 double, 1 strikeout
vs. NRIs: 2 batters faced, 1 hit
vs. MiLBs: n/a
Total: 2 innings, 4 hits, 1 extra-base hit, 0 walks, 1 strikeout, 4.50 ERA, 2.70 FIP
I’m sure Giants fans will find a way to overreact to Rogers giving up four hits early in the spring.
Justin Verlander (RHP)
vs. regulars: 3 batters faced, 1 hit, 1 home run, 1 walk, 1 strikeout
vs. 40-mans: 1 batter faced, 0 hits
vs. NRIs: 4 batters faced, 0 hits
vs. MiLBs: n/a
Total: 2 innings, 1 hit, 1 home run, 1 walk, 1 strikeout, 4.50 ERA, 10.70 FIP
We’ve only seen Verlander once, as the Giants had him skip traveling to Camelback Ranch for his second scheduled start, and instead had the three-time Cy Young winner throw a live bullpen in Scottsdale. He seems pretty happy about how his arm is working, though.
Ryan Walker (RHP)
vs. regulars: 3 batters faced, 1 hit, 2 strikeouts
vs. 40-mans: 2 batters faced, 1 hit, 1 double
vs. NRIs: 3 batters faced, 1 hit, 1 double, 1 strikeout
vs. MiLBs: n/a
Total: 2 innings, 3 hits, 2 extra-base hits, 0 walks, 3 strikeouts, 4.50 ERA, 0.70 FIP
I don’t think there’s anything performance-elated that could happen this spring that would make me worried about Walker going into the season, so any good stats are just gravy.
Logan Webb (RHP)
vs. regulars: 5 batters, 1 hit, 1 strikeout
vs. 40-mans: 7 batters, 2 hits, 1 home run, 1 double, 3 strikeouts
vs. NRIs: 6 batters faced, 0 hits, 1 strikeout
vs. MiLBs: n/a
Total: 5 innings, 3 hits, 1 home run, 2 extra-base hits, 0 walks, 5 strikeouts, 1.80 ERA, 4.30 FIP
Just as with Walker, there’s really nothing Webb could do on the mound this spring that would cause concern. Especially after he had an ERA in the 10s last Spring Training.
Giants 40-man roster pitchers
Tristan Beck (RHP)
vs. regulars: 9 batters faced, 3 hits, 3 doubles, 1 walk, 1 strikeout
vs. 40-mans: 1 batter faced, 0 hits
vs. NRIs: 6 batters faced, 2 hits, 1 double, 1 walk
vs. MiLBs: n/a
Total: 3 innings, 5 hits, 4 extra-base hits, 2 walks, 1 strikeout, 9.00 ERA, 5.03 FIP
Beck is firmly just a reliever now, and he’s thankfully healthy. Not pitching wonderfully yet, but we’re dealing with very small samples here.
Hayden Birdsong (RHP)
vs. regulars: 4 batters faced, 1 hit, 1 triple, 2 strikeouts
vs. 40-mans: 6 batters faced, 2 hits, 1 strikeout
vs. NRIs: 5 batters faced, 1 hit, 1 double, 1 hit batter, 2 strikeouts
vs. MiLBs: 1 batter faced, 0 hits, 1 strikeout
Total: 4 innings, 4 hits, 2 extra-base hits, 0 walks, 6 strikeouts, 1 stolen base allowed, 2.25 ERA, 1.45 FIP
Birdsong is fighting for the fifth spot in the rotation, and he is certainly putting his best foot forward. He’s been fantastic in two outings this spring. His fastball in particular has been full of life, hitting 98 mph in his first game.
Spencer Bivens (RHP)
vs. regulars: 2 batters faced, 0 hits
vs. 40-mans: 3 batters faced, 1 hit, 1 triple, 1 hit batter, 1 strikeout
vs. NRIs: 5 batters faced, 0 hits, 1 strikeout
vs. MiLBs: 1 batter faced, 0 hits, 1 strikeout
Total: 3 innings, 1 hit, 1 extra-base hit, 0 walks, 3 strikeouts, 3.00 ERA, 2.70 FIP
Bivens enters camp on the fringe of a roster spot, and so far he’s really shined against all levels of competition.
Mason Black (RHP)
vs. regulars: 15 batters faced, 5 hits, 2 home runs, 2 doubles, 1 hit batter, 2 walks, 3 strikeouts
vs. 40-mans: 1 batter faced, 0 hits, 1 walk
vs. NRIs: 3 batters faced, 0 hits, 1 strikeout
vs. MiLBs: n/a
Total: 3.1 innings, 5 hits, 2 homers, 4 extra-base hits, 3 walks, 4 strikeouts, 2 stolen bases allowed, 13.50 ERA, 12.70 FIP
It’s been a very rough spring for Black so far. He got the call to start early on, as Harrison missed the first week of games, and faced an Angels squad made up largely of everyday players, including Mike Trout and former teammate Jorge Soler (who bashed a massive home run in the first inning). On the one hand, you don’t want to read too much into a small spring sample. On the other hand, Black was already losing his grip on a future as a starter, and games like these could move him closer and closer to being a full-time reliever.
Trevor McDonald (RHP)
vs. regulars: 4 batters faced, 2 hits, 1 home run, 1 double
vs. 40-mans: 6 batters faced, 1 hit
vs. NRIs: 7 batters faced, 2 hits, 2 walks, 2 strikeouts
vs. MiLBs: n/a
Total: 3.1 innings, 5 hits, 1 home run, 2 extra-base hits, 2 walks, 2 strikeouts, 8.10 ERA, 8.20 FIP
Not the best start to the spring for McDonald, who seemed a long shot to make the Opening Day roster anyway. He definitely seems likely to spend plenty of time in the Majors this year, though.
Carson Ragsdale (RHP)
vs. regulars: 3 batters faced, 0 hits, 2 strikeouts
vs. 40-mans: 2 batters faced, 1 hit
vs. NRIs: 3 batters faced, 0 hits, 1 walk, 2 strikeouts
vs. MiLBs: n/a
Total: 2 innings, 1 hit, 1 walk, 4 strikeouts, 1 stolen base allowed, 0.00 ERA, 1.20 FIP
Ragsdale was added to the 40-man roster in the offseason, and so far in spring looks like a player who will take advantage of that opportunity and make his way to the Majors. A very strong start for the powerful righty.
Randy Rodríguez (RHP)
vs. regulars: n/a
vs. 40-mans: 1 batter faced, 0 hits, 1 hit by pitch
vs. NRIs: 7 batters faced, 1 hit, 2 strikeouts
vs. MiLBs: 1 batter faced, 0 hits, 1 hit by pitch
Total: 2 innings, 1 hit, 0 walks, 2 strikeouts, 4.50 ERA, 4.70 FIP
A little bit of a wild start to the spring for Rodríguez, but great to see him healthy after he ended his debut MLB season on the Injured List.
Landen Roupp (RHP)
vs. regulars: 9 batters faced, 0 hits, 1 walk, 3 strikeouts
vs. 40-mans: 3 batters faced, 1 hit, 2 strikeouts
vs. NRIs: 4 batters faced, 0 hits, 2 strikeouts
vs. MiLBs: 1 batter faced, 0 hits, 1 strikeout
Total: 5 innings, 1 hit, 1 walk, 8 strikeouts, 0.00 ERA, 1.10 FIP
Roupp has been absolutely dynamic, and making it clear that he belongs in the discussion with Harrison and Birdsong for the fifth spot in the rotation. Hopefully I’m not jinxing anything, as he’s pitching in the game that’s starting right as I publish this…
Carson Seymour (RHP)
vs. regulars: 9 batters faced, 1 hit, 2 strikeouts
vs. 40-mans: 3 batters faced, 2 hits
vs. NRIs: 4 batters faced, 1 hit
vs. MiLBs: n/a
Total: 4 innings, 4 hits, 0 walks, 2 strikeouts, 1 stolen base allowed, 4.50 ERA, 2.70 FIP
Seymour, who is a recent addition to the 40-man roster, has been given some quality talent to test himself against, and so far, so good.
Keaton Winn (RHP)
vs. regulars: n/a
vs. 40-mans: 2 batters faced, 0 hits, 1 walk
vs. NRIs: 2 batters faced, 0 hits, 1 strikeout
vs. MiLBs: n/a
Total: 1 inning, 0 hits, 1 walk, 1 strikeout, 0.00 ERA, 4.70 FIP
Winn was a late start at Spring Training, but recently made his debut. It’s not quite clear whether the Giants still view him as a starter or not, but if he can stay healthy, there will be a place for him somewhere.
Giants non-roster invitees
Raymond Burgos (LHP)
vs. regulars: n/a
vs. 40-mans: 2 batters faced, 2 hits
vs. NRIs: 8 batters faced, 1 hit, 1 home run, 3 strikeouts
vs. MiLBs: 2 batters faced, 0 hits, 1 walk
Total: 3 innings, 3 hits, 1 home run, 1 extra-base hit, 1 walk, 3 strikeouts, 3.00 ERA, 7.03 FIP
Don’t be surprised if Burgos makes it back to the Majors at some point this year. But I don’t think he’s particularly in the running for an Opening Day spot, despite being a lefty reliever on a team in desperate need of them.
Miguel Del Pozo (LHP)
vs. regulars: n/a
vs. 40-mans: n/a
vs. NRIs: 1 batter faced, 0 hits
vs. MiLBs: 6 batters faced, 1 hit, 2 strikeouts
Total: 2 innings, 1 hit, 0 walks, 2 strikeouts, 0.00 ERA, 1.70 FIP
Del Pozo has pitched well, but the Giants haven’t challenged him against any top talent just yet. That could change as the spring marches on.
Miguel Díaz (RHP)
vs. regulars: n/a
vs. 40-mans: n/a
vs. NRIs: 5 batters faced, 0 hits, 1 walk
vs. MiLBs: 6 batters faced, 2 hits, 1 double, 1 strikeout
Total: 2.1 innings, 2 hits, 1 extra-base hit, 1 walk, 1 strikeout, 1 stolen base allowed, 7.71 ERA, 4.13 FIP
It’s hard to find an opportunity for relievers to get appearances against proven MLB talent this early in the spring, and Díaz is certainly a reflection of that.
Justin Garza (RHP)
vs. regulars: 1 batter faced, 0 hits, 1 walk
vs. 40-mans: 3 batters faced, 1 hit, 1 strikeout
vs. NRIs: 9 batters faced, 4 hits, 4 doubles, 2 strikeouts
vs. MiLBs: 3 batters faced, 1 hit, 1 home run, 1 walk
Total: 2.2 innings, 6 hits, 1 home run, 5 extra-base hits, 2 walks, 3 strikeouts, 13.50 ERA, 8.58 FIP
Garza’s path to the roster was always full of obstacles, as a non-roster invitee who is right-handed. He seems ticketed for AAA after a rough start to the spring.
Antonio Jimenez (LHP)
vs. regulars: n/a
vs. 40-mans: 1 batter faced, 0 hits, 1 strikeout
vs. NRIs: 5 batters faced, 2 hits, 1 home run, 1 hit by pitch, 1 strikeout
vs. MiLBs: 3 batters faced, 1 hit
Total: 1.2 innings, 3 hits, 1 home run, 1 extra-base hit, 0 walks, 2 strikeouts, 16.20 ERA, 10.90 FIP
Jimenez is only 23, and in his first year with the Giants. He’s a very long shot to make the Opening Day roster, but could be a very interesting player in AAA this season.
Joey Lucchesi (LHP)
vs. regulars: n/a
vs. 40-mans: 2 batters faced, 0 hits
vs. NRIs: 4 batters faced, 1 hit
vs. MiLBs: n/a
Total: 1.2 innings, 1 hit, 0 walks, 0 strikeouts, 0.0 ERA, 3.70 FIP
Lucchesi likely has his eyes on a bullpen job, as the Giants desperately need some lefties in there after trading away Taylor Rogers (and Erik Miller has yet to make his spring debut while dealing with a finger issue). So far, so good for the veteran who is converting from the rotation to the bullpen, it seems.
Juan Mercedes (RHP)
vs. regulars: n/a
vs. 40-mans: 5 batters faced, 2 hits, 1 triple
vs. NRIs: 3 batters faced, 1 hit, 1 strikeout
vs. MiLBs: 2 batters faced, 0 hits, 1 walk
Total: 2 innings, 3 hits, 1 extra-base hit, 1 walk, 1 strikeout, 0.00 ERA, 4.20 FIP
Mercedes is another player with essentially no path to the Opening Day roster (though we said that about Roupp last year). But he’s 24 and in his first year with the team, and will be a must-watch player in AAA.
Helcris Olivarez (LHP)
vs. regulars: n/a
vs. 40-mans: 2 batters faced, 0 hits, 1 strikeout
vs. NRIs: 1 batter faced, 0 hits, 1 strikeout
vs. MiLBs: 4 batters faced, 1 hit, 2 strikeouts
Total: 2 innings, 1 hit, 0 walks, 4 strikeouts, 0.00 ERA, -0.30 FIP
It would certainly be surprising if Olivarez nabs the final LHP bullpen spot … he’s only thrown 38 innings in AA, and hasn’t yet pitched in AAA. But he has been impressing, and the reports have been as sterling as the numbers.
Joel Peguero (RHP)
vs. regulars: 1 batter faced, 0 hits, 1 strikeout
vs. 40-mans: 2 batters faced, 1 hit, 1 double, 1 strikeout
vs. NRIs: 2 batters faced, 0 hits, 1 strikeout
vs. MiLBs: n/a
Total: 1.1 innings, 1 hit, 1 extra-base hit, 0 walks, 3 strikeouts, 0.00 ERA, -0.80 FIP
Peguero has lived up to the hype so far, easily hitting triple digits consistently. Hopefully the numbers can keep matching the stuff.
Enny Romero (LHP)
vs. regulars: 2 batters faced, 0 hits, 2 strikeouts
vs. 40-mans: 9 batters faced, 2 hits, 1 triple, 1 double, 1 walk, 2 strikeouts
vs. NRIs: 5 batters faced, 1 hit, 1 double, 1 strikeout
vs. MiLBs: 1 batter faced, 1 hit
Total: 4 innings, 4 hits, 3 extra-base hits, 1 walk, 5 strikeouts, 2 stolen bases allowed, 2.25 ERA, 1.95 FIP
Romero is definitely in play for an Opening Day bullpen job, and his strike-throwing ability has been helping his case. In his first game of the spring, he threw 11 of his 12 pitches for strikes.
Kai-Wei Teng (RHP)
vs. regulars: 4 batters faced, 0 hits, 2 strikeouts
vs. 40-mans: 1 batter faced, 0 hits, 1 strikeout
vs. NRIs: 1 batter faced, 0 hits
vs. MiLBs: n/a
Total: 2 innings, 0 hits, 0 walks, 3 strikeouts, 0.00 ERA, 0.70 FIP
Teng was done in last year by an inability to throw strikes, but so far that hasn’t been an issue this spring. He’s been dynamic, and has had greta control. Like Romero, he threw 11 of 12 pitches for strikes in his first game of the spring.
Lou Trivino (RHP)
vs. regulars: 1 batter faced, 0 hits, 1 strikeout
vs. 40-mans: 2 batters faced, 0 hits, 1 strikeout
vs. NRIs: 1 batter faced, 0 hits
vs. MiLBs: 2 batters faced, 0 hits, 1 strikeout
Total: 2 innings, 0 hits, 0 walks, 3 strikeouts, 0.00 ERA, 0.70 FIP
Hard to argue with that start. We know that Bob Melvin likes Trivino, so a good performance this spring could get him on the roster.
Cole Waites (RHP)
vs. regulars: 2 batters faced, 1 hit, 1 double
vs. 40-mans: 2 batters faced, 0 hits, 1 walk
vs. NRIs: 5 batters faced, 1 hit, 1 hit by pitch
vs. MiLBs: n/a
Total: 1.2 innings, 2 hits, 1 extra-base hit, 1 walk, 0 strikeouts, 10.80 ERA, 7.30 FIP
Waites is back on the mound after a year and a half lost to Tommy John surgery. It’s great seeing him out there, though the Giants will probably slow-play him back into shape.
Carson Whisenhunt (LHP)
vs. regulars: n/a
vs. 40-mans: 1 batter faced, 0 hits
vs. NRIs: 2 batters faced, 0 hits
vs. MiLBs: n/a
Total: 1 inning, 0 hits, 0 walks, 0 strikeouts, 0.00 ERA, 3.70 FIP
Whisenhunt isn’t in play to earn a spot on the Opening Day roster, but he could definitely be in the Majors at some point this season. Hopefully he gets a bigger opportunity later in the spring.