Barton, the No. 6-rated player in the nation in 2010, attended four schools in five years. He started his basketball career at Baltimore City College, a public college preparatory high school, for two years before reclassifying and transferring to National Christian Academy in Fort Washington, Maryland to repeat his sophomore year. Barton then enrolled at Baltimore's Lake Clifton Eastern High School for his junior year. Then as a senior in 2009–10, he attended Brewster Academy. Barton was rated the best shooting guard by Scout.com and ESPN.com in 2010. Barton chose Memphis over Arizona, Maryland, Kentucky, Indiana, and Villanova.
Barton was invited to play in the Jordan Brand Classic in 2010.
Barton came to Memphis in 2010 and played every game in his freshman season, leading the Tigers in minutes per game at 30.6 and scoring with 12.3 points per game. Barton had a breakout sophomore season, leading the Tigers in points per game (18.0) and rebounds per game (8.0) en route to winning C-USA Player of the Year.
In March 2012, Barton decided to forgo his final two years of eligibility and declare for the 2012 NBA draft. He was selected by the Portland Trail Blazers with the 40th overall pick. On December 7, 2012, he was assigned to the Idaho Stampede of the NBA Development League. He was recalled on December 9, reassigned on January 6, and recalled again on January 9. He made his first NBA start on April 10, 2013 against the Los Angeles Lakers.
On February 26, 2014, Barton recorded a season-high 20 points and a career-high 11 rebounds in 124–80 win over the Brooklyn Nets. In a televised interview following the game, when asked by a reporter about a spontaneous "Will Barton" chant that had broken out late in the contest, the guard replied, "I like to think I'm the people's champ," thereby instantly giving birth to a new nickname and a Trail Blazers meme. He went on to record 17 points and six rebounds on May 12 to help Portland win Game 4 of their semi-final match-up against the San Antonio Spurs.
On February 19, 2015, Barton was traded, along with Víctor Claver, Thomas Robinson and a lottery-protected 2016 first-round pick, to the Denver Nuggets in exchange for Arron Afflalo and Alonzo Gee.
On August 7, 2015, Barton re-signed with the Nuggets. On November 13, 2015, he scored a career-high 26 points in a 107–98 win over the Houston Rockets. He topped that mark on December 20 with 32 points against the New Orleans Pelicans. Barton's strong pre-Christmas play earned him recognition as a possible contender for the 2015–16 Sixth Man of the Year award. Over the Nuggets' first 29 games of the season, Barton averaged 15.7 points, 6.1 rebounds, 2.3 assists and 1.1 steals in 29.0 minutes per game off the bench.
Barton appeared in just six of the Nuggets' first 18 games of the 2016–17 season. He played in the first three games before missing the next nine after spraining his left ankle. He then returned for three before missing another for personal reasons, and then a further two with another left ankle complaint. On January 17, 2017, he had season highs of 26 points and eight assists in a 127–121 win over the Los Angeles Lakers. On February 6, 2017, he scored a then season-high 31 points and hit five three-pointers in a 110–87 win over the Dallas Mavericks. On March 13, 2017, in a 129–101 win over the Los Angeles Lakers, Barton scored 22 points and went 3 of 4 behind the arc and 6 of 9 overall in his most productive outing since the All-Star break. Prior to the game against the Lakers, Barton had made just five of his previous 21 three-point tries. On March 16, 2017, he scored a career-high 35 points in a 129–114 win over the Los Angeles Clippers.