After playing for seven years with minor-league affiliates of the Blue Jays, from 2002 through 2008, Kratz signed a minor league contract with the Pittsburgh Pirates in 2009. He made his Major League Baseball debut on July 17, 2010. Before the 2011 season, Kratz signed a minor-league deal with the Philadelphia Phillies and played with the Triple-A Lehigh Valley IronPigs, appearing several times in 2011 and 2012 at the Major-League level and ultimately winning the backup catcher job on the Phillies' 2013 roster. He was dealt back to the Toronto Blue Jays organization prior to the 2014 season, dividing his playing time between Toronto and the Triple-A Buffalo Bisons before being traded to the Kansas City Royals in July. He returned to the Phillies in 2015, and played for the Houston Astros and Pirates in 2016.
Kratz graduated from Christopher Dock Mennonite High School in Lansdale, Pennsylvania, and Eastern Mennonite University (EMU) in Harrisonburg, Virginia. While playing college baseball for the Eastern Mennonite Royals from 1999 to 2002, he caught every at-bat for every game he played and was named the Old Dominion Athletic Conference Player of the Year twice.
Kratz was selected by the Blue Jays in the 29th round of the 2002 Major League Baseball draft. He was the first player to be drafted out of Eastern Mennonite University.
After the draft, Kratz worked his way up through the minor leagues over the course of 3 years with the Medicine Hat Blue Jays, Auburn Doubledays, Charleston AlleyCats, New Haven Ravens, and Dunedin Blue Jays. He then played the 2005 season with the New Hampshire Fisher Cats, the Double-A affiliate of the Toronto Blue Jays. There, he had a .205 batting average, 11 home runs, and 34 runs batted in. From 2006 to 2008, Kratz alternated between the Fisher Cats and the Triple-A Syracuse Chiefs. In 2006, he had a combined .228 average, 7 home runs, and 34 RBIs; in 2007, he had a combined .235 average, 13 home runs, and 49 RBIs; in 2008, he had a combined .239 average, 16 home runs, and 43 RBIs. On June 9, 2008, he was named the International League Player of the Week.
In 2009, Kratz signed with the Pirates, who were in need of a primary Triple-A catcher after the call up of Robinzon Diaz to replace the injured Ryan Doumit. He played the 2009 season with the Indianapolis Indians and finished with a .273 batting average, 11 home runs, and 43 RBIs. He was named the International League Mid-Season All-Star and the International League Triple-A All-Star Game Top Star on July 15 and the International League Post-Season All-Star on September 1.
Kratz began the 2010 season with the Indianapolis and finished his minor league season with a .274 batting average, 9 home runs, and 41 RBIs. On July 14, he was named the International League Mid-Season All-Star for the second time.
On July 12, 2010 the Pirates optioned catcher Jason Jaramillo to the Triple-A Indianapolis Indians and the team announced Kratz would be called up to replace him.
He made his Major League debut on July 17, 2010 against the Houston Astros. He batted 7th and recorded his first hit against Astros starter Bud Norris, a single to right center field and drove in his first run later in the game. He finished the night hitting 2-for-5 with a run scored and an RBI. Kratz appeared in 9 games over a two-week period, batting .118.
Kratz signed a minor league deal with the Philadelphia Phillies prior to the 2011 season. He spent the season with their Triple-A affiliate Lehigh Valley IronPigs, where he batted a .288 BA with 15 home runs and 53 RBIs. On July 13, he won his third International League Mid-Season All-Star award. He was called up to the big league club on September 16, and went on to play two games with the Phillies, recording two hits in six at-bats.
Kratz opened the 2012 season with Lehigh Valley, but had several stints on the Phillies' active roster. He hit his first career Major League home run on May 22, a solo shot against Washington Nationals pitcher Tom Gorzelanny that landed in the center field bushes at Citizens Bank Park. Acting initially as a pinch hitter to replace the injured Jim Thome, Kratz later assumed a catching job following injuries to backup catcher Brian Schneider and All-Star starter Carlos Ruiz.
He quickly began producing offensively, registering a 1.395 OPS in his first 16 games. Ultimately, Kratz hit .248 with 9 home runs in 50 games and 141 at-bats.
Kratz made his first Major League Opening Day roster with the Phillies in 2013. He served as the team's primary catcher while Ruiz served a 25-day drug suspension, but was placed on the disabled list on June 9 with a torn medial meniscus and underwent surgery. He returned to the club on July 21, and continued as backup catcher thereafter. Kratz finished the season with a .213 batting average, 42 hits, 9 home runs, and 26 RBIs.
On December 3, 2013, Kratz, along with pitcher Rob Rasmussen, was traded to the Toronto Blue Jays for pitcher Brad Lincoln. Kratz had a strong spring, batting .400 before being demoted to minor-league camp in favor of Josh Thole. On March 30, he was recalled from Triple-A after Casey Janssen was placed on the disabled list. Kratz appeared in 6 games for the Blue Jays and batted .200 before being optioned to the Triple-A Buffalo Bisons to make room for J. A. Happ. He was later recalled and played in 34 total games with the Blue Jays, batting .198 with 3 home runs and 10 RBI before being traded.
On July 28, 2014, Kratz was traded with Liam Hendriks to the Kansas City Royals in exchange for Danny Valencia. He had his first career multi-homer game on August 18 in a 6-4 win over the Minnesota Twins.
On June 11, 2015, Kratz was designated for assignment.
On June 21, 2015, Kratz was claimed off waivers by the Boston Red Sox. He was designated for assignment on June 25, and elected free agency on June 29.
Kratz signed a minor league deal with the Seattle Mariners on July 2, 2015. He was released on the July 15.
On July 17, 2015, Kratz signed a minor league deal with the Phillies. He was added to the active roster on September 1 and made his first appearance with the team since 2013 the following day, hitting a pinch-hit, two-run double against Matt Harvey of the New York Mets.
On December 11, 2015, Kratz signed a minor league contract with the San Diego Padres.
On March 28, 2016, Kratz was traded to the Houston Astros for pitcher Dan Straily. On April 26 he was pressed into service as a pitcher during a blowout with the Astros. He was designated for assignment on May 16 and released on May 22.
On May 27, 2016, Kratz agreed to a minor league contract with the Los Angeles Angels of Anaheim.
On June 11, 2016, Kratz was traded to the Pittsburgh Pirates, who added him to their 40-man roster. On June 21, Kratz became the first player since 1879 to pitch and catch for two different major league teams in a single year. He tossed a scoreless inning while forced into relief for the Pirates in a 15-4 loss to the Giants. He allowed two hits and struck out Brandon Belt for his first out of the inning. His previous outing on the mound took place on April 26 for the Astros, against the Mariners, in which he allowed two runs (one earned) on three hits over one inning in an 11-1 loss. He was designated for assignment on July 19, and elected free agency on July 22.
On July 28, 2016, Kratz signed a minor league contract with the Toronto Blue Jays. In 19 games with the Buffalo Bisons, Kratz hit .155 with one RBI. On November 7, he elected free agency.
On December 1, 2016, Kratz signed a minor league contract with the Cleveland Indians.
The Indians sold Kratz to the New York Yankees on August 31. The Yankees promoted him to the major leagues the next day. He appeared in his first game for the Yankees as a pinch hitter on September 10, hitting an RBI double.
Kratz is a devout member of the Souderton, Pennsylvania Mennonite Church. Up until 2009, Kratz worked a construction job in the winter to support his family. He has a wife named Sarah and two sons named Brayden and Ethan; he also has a daughter named Avery.