Collins was drafted tenth overall in the 2016 Major League Baseball draft by the Chicago White Sox.[8] After signing, he made his professional debut with the Arizona League White Sox and was promoted to the Winston-Salem Dash after three games.[9] He was named a Carolina League All-Star with the Dash.[10] Collins ended 2016 with a combined .244 batting average with six home runs and 18 RBIs in 39 games between both teams. After the season, the White Sox assigned Collins to the Glendale Desert Dogs of the Arizona Fall League (AFL).[11] He spent 2017 with both Winston-Salem and the Birmingham Barons, posting a combined .224 batting average with 19 home runs and 53 RBIs in 113 games in total between the two clubs.[12]
Collins spent the 2018 season back with Birmingham where he was named to the Southern League All-Star Game, winning the Southern League Home Run Derby.[13] He finished the year batting .234 with 15 home runs and 68 RBIs in 122 games.
He began 2019 with the Charlotte Knights.[14] On June 18, his contract was purchased and he was called up to the major leagues for the first time.[15] Collins debuted as a pinch hitter against the Cubs where he drew a walk in his only appearance in that game. His first major league hit was a three-run home run versus the Texas Rangers on June 21, 2019. Overall with the 2020 Chicago White Sox, Collins batted .063 with no home runs and 0 RBIs in 9 games.[16]
On April 14, 2021, Collins caught the 20th no-hitter in White Sox history, which Carlos Rodón pitched.[17]
Toronto Blue Jays
On April 3, 2022, Collins was traded to the Toronto Blue Jays in exchange for Reese McGuire.[18] On September 5, 2022, Collins was designated for assignment.
Pittsburgh Pirates
On September 6, 2022, Collins was claimed off waivers by the Pittsburgh Pirates and was optioned to the Triple-A Indianapolis Indians. In 10 games for Pittsburgh, he went 1–for–25 (.040) with 1 RBI. On November 10, Collins was removed from the 40-man roster and sent outright to Triple–A; he elected free agency the same day.[19][20]
Cleveland Guardians
On February 9, 2023, Collins signed a minor league contract with the Cleveland Guardians organization.[21] In 109 games for the Triple–A Columbus Clippers, he batted .255/.364/.437 with 15 home runs and 74 RBI.[22] On August 17, Collins was selected to the 40-man roster and promoted to the major leagues to replace catcher Cam Gallagher, who had been placed on the injured list with a concussion.[23] In two games, he went two–for–four (.500) with two walks. On August 21, he was designated for assignment following the waiver claim of Eric Haase.[24] After clearing waivers, Collins was sent outright to Columbus on August 24. On October 3, Collins elected free agency.[25]