The Washington Redskins signed Williams as an undrafted free agent on April 28, 2013.[3] He was released during final cuts,[4] but signed to the practice squad a few days later.[5] On November 8, Williams was promoted to the active roster in place of Chris Thompson.[6] He made his NFL debut in Week 11 against the Philadelphia Eagles, where he had a five-yard reception and scored a two-point conversion.[7]
Williams was signed to the team's practice squad on August 31, 2014, after being waived the day before.[8] He was waived by the team on September 9, 2014.[9]
Atlanta Falcons
On February 24, 2015, Williams signed with the Atlanta Falcons.[10] Williams played in 14 games with the Falcons in 2015, catching 17 passes for 159 yards and two touchdowns.[11]
On September 4, 2016, Williams was released by the Falcons and was signed to the practice squad the next day.[12][13] He was promoted to the active roster on December 9, 2016.[14]
Williams only played in one game for the Falcons in 2017, recording three receptions for 30 yards in a Week 4 loss to the Buffalo Bills.[17]
Tennessee Titans
On May 16, 2018, Williams signed with the Tennessee Titans.[18] He was released on September 1, 2018.[19] He was re-signed on September 18, 2018.[20] Following a Week 5 game in which he dropped a potential go-ahead touchdown from Marcus Mariota, Williams was released by the Titans on October 9, 2018.[21]
Los Angeles Rams
On October 16, 2018, Williams was signed by the Los Angeles Rams.[22] He was released on November 30, 2018.[23]
Denver Broncos
On July 26, 2019, Williams was signed by the Denver Broncos.[24] He was released on August 26, 2019.[25]
San Francisco 49ers
On August 27, 2019, Williams was signed by the San Francisco 49ers.[26] He was placed on injured reserve on August 31.[27] He was released from injured reserve with an injury settlement on September 6.[28]