The St. Louis Cardinals selected Carpenter in the 12th round of the 2006 MLB Draft. Carpenter played for the State College Spikes in 2006, hitting.189 in 37 games. In 2007, he hit.220 for the GCL Cardinals and Batavia Muckdogs. He both caught and pitched in 2008 – he caught for the Quad Cities River Bandits and Palm Beach Cardinals and he pitched for the GCL Cardinals and Johnson City Cardinals. For the 2009 season, he converted to pitching full-time and went 5–3 with a 4.28 ERA in 52 relief appearances for the River Bandits, striking out 77 batters in 67 1/3 innings. In 2010, he began the season with the Palm Beach Cardinals.
Houston Astros
On August 19, 2010, he was traded to the Houston Astros for Pedro Feliz. He finished the season with the Lancaster JetHawks and went a combined 6–4 with a 2.51 ERA in 55 games, finishing 49 and saving 20. Carpenter split the 2011 season between the major and minor leagues. At the minor league level, he went 0–1 with 14 saves and a 1.91 ERA in 33 games for the Corpus Christi Hooks and Oklahoma City RedHawks, while striking out 38 batters in 33 innings. He made his major league debut with the Astros on June 30 of that year, going 1–3 with a 2.93 ERA in 34 games. In 27.2 innings, he had 29 strikeouts.
On October 21, 2012, he was traded to the Red Sox for infielder Mike Avilés, after Avilés had been the agreed-upon compensation for the Red Sox signing incumbent Blue Jays manager John Farrell to fill that role for them. A player cannot in actuality be traded directly for a manager – he must be traded for another player – so this is why the Blue Jays sent Carpenter to Boston. On November 20, Carpenter was designated for assignment with four others.
Atlanta Braves
The Atlanta Braves claimed Carpenter on waivers on November 30, 2012. He was optioned to the Triple-A Gwinnett Braves on March 26. He was recalled on April 20, then optioned back to Gwinnett on April 22. He was recalled again on April 30. Carpenter ended up making his Braves debut on May 10, giving up 2 runs in 2.1 innings against the Giants. Carpenter spent the rest of the year in the Braves bullpen, where in 56 appearances, he was 4–1 with a 1.78 ERA and 12 holds, striking out 74 in 65.2 innings. Carpenter was the losing pitcher in Game 4 of the 2013 NLDS, during which he gave up a two run homer to Juan Uribe that would win the game for the Los Angeles Dodgers, ending the Braves' postseason run. Carpenter began 2014 with Atlanta as their setup man. On June 17, Carpenter was fined an undisclosed amount for throwing at Corey Dickerson on June 12. The incident started after Dickerson hit catcher Gerald Laird twice in one at-bat, once on a foul tip and once with on the backswing of the bat. Carpenter then hit Dickerson on the hip with a fastball. He was also placed on the disabled list that day, and was replaced by Pedro Beato. In 34 appearances before the stint on the disabled list, Carpenter was 4–1 with a 4.23 ERA and 10 holds and 35 strikeouts.
New York Yankees
The Braves traded Carpenter and Chasen Shreve to the New York Yankees for Manny Banuelos on January 1, 2015. On June 3, Carpenter was designated for assignment by the Yankees. He appeared in 22 games for the Yankees with a 4.82 ERA.
Washington Nationals
On June 11, 2015, Carpenter was traded to the Washington Nationals in exchange for Tony Renda. He pitched in eight games for Washington, then missed the rest of the season due to right shoulder inflammation. He became a free agent after the season.
Atlanta Braves (Second Stint)
On November 24, 2015, Carpenter signed a minor league contract with the Atlanta Braves. He was invited to spring training, and released on March 5, 2016.
On July 21, 2017, Carpenter signed a minor league deal with the Arizona Diamondbacks. He became a free agent after the season.
Texas Rangers
On February 5, 2019, Carpenter signed a minor-league contract with the Texas Rangers. He was assigned to the Nashville Sounds on April 12. On May 31, his contract was selected and he was called up to the major league roster. On June 8, he was designated for assignment. He cleared waivers and was outrighted to Nashville on June 10. On August 13, the Rangers selected Carpenter's contract. On August 19, Carpenter was again designated for assignment. On August 21, Carpenter was outrighted to Nashville. He elected free agency after the season.
Cincinnati Reds
On December 19, 2019, Carpenter signed a minor league deal with the Cincinnati Reds.