Charles started his career at Blackpool, before moving to AFC Fylde. In 2016, he joined League One side Fleetwood Town, followed by a short spell at Southport. He later signed with Accrington Stanley, where he was one of the league’s top scorers for the 2020-21 season with 19 goals. He was called up to the Northern Ireland senior team the same year.
On 1 January 2022, Charles joined Bolton Wanderers on a three-year contract and finished the 2021-22 season with 8 goals.
The following season, Charles notched up 23 goals in all competitions.