Crawford was born in Prattville, Alabama and went to Prattville High School, where he led his team to an Alabama state record with 47 wins and a state 6A runner-up. He threw two no-hitters, was the team's best hitter his senior year, and Perfect Game USA ranked him #88 out of the top 1000 HS players, and was the eighth-best left-handed pitcher. Despite this, he was not drafted out of high school, and went on to Auburn University. In his 2006 freshman year at Auburn, he went 5-8 with a 4.35 ERA. After his freshman year, he played collegiate summer baseball in the Cape Cod Baseball League with the Yarmouth-Dennis Red Sox, going 0-1 with a 6.43 ERA. In his sophomore year, he went 5-6 with a 5.91 ERA for Auburn, and again played in the Cape Cod League, going 1-0 with a 0.67 ERA in 16 relief appearances for the Harwich Mariners. In his junior season at Auburn, he went 3-0 with a 2.42 ERA in 29 appearances, exclusively in relief. He was drafted in the eighth round of the 2008 MLB Draft, 249th overall, by the Blue Jays.
He was assigned to the Low-AAuburn Doubledays, going 0-2 with a 3.03 ERA. He played for Auburn again in 2009, going 1-5 with a 4.06 ERA. He started 2010 with the Single-ALansing Lugnuts, going 3-2 with a 4.01 ERA before being promoted to the High-ADunedin Blue Jays, where he went 1-2 with a 2.04 ERA and 3 saves. He played 2011 with the Double-ANew Hampshire Fisher Cats, going 3-5 with a 3.35 ERA and 2 saves. On November 18, he was promoted to the big league roster to be protected from the Rule 5 draft. Crawford did not make the Blue Jays out of spring training, but on April 13, 2012, he was called up to the active roster to fill the vacancy created when Sergio Santos took a three-day paternity leave. Upon Santos's return, left hander Aaron Laffey was optioned to Triple-A, allowing Crawford to remain on the active roster. Crawford made his first career appearance on Jackie Robinson day, pitching a scoreless 9th inning in an 8-2 win over the Baltimore Orioles. He recorded his first career strikeout against third baseman Wilson Betemit. After his second appearance on the 19th, Crawford was sent down to the minors immediately after the game to make room for Drew Hutchison. However, he was recalled to the big leagues only two days later when Sergio Santos went on the disabled list. Crawford made three further appearances, giving up 2 runs over 2 innings, before being sent to the minors again on May 2. On May 14, Crawford was called up to the Jays for the third time in just over a month. He got into that night's game, pitching a scoreless inning against the Tampa Bay Rays. After appearing in two more games as a reliever, he was sent down to the minors again on May 25. On June 11, Crawford was called back up to Toronto for the fourth time in just under two months. He made one appearance on June 12, then was sent back to the minors on June 18. Crawford was recalled to the Blue Jays yet again on July 26. He pitched one-third of an inning on July 29, then was sent back to Triple-A on July 31 following the Jays trading for pitchers Brad Lincoln and Steve Delabar. Two weeks later on August 14, after having made several appearances with the Triple-A Las Vegas 51s, Crawford was placed on the disabled list retroactive to August 12. This effectively ended his season, as Crawford did not pitch again in 2012, and was not amongst the Blue Jays September call-ups. After spending the first part of the 2013 season in the minor leagues, Crawford was designated for assignment by the Blue Jays on June 8, 2013 to make room for Dustin McGowan on the roster. After clearing waivers, Crawford was assigned to the Double-A New Hampshire Fisher Cats on June 10.