Swansea City After spells with clubs including Aberystwyth Town and Cardiff City, Edwards joined Swansea City Football Club as an U15. Rising up through the Swansea youth system, Edwards signed his first professional contract, a 3-year deal, with Swansea City after a successful 2010–11 season. He went on to help Swansea win the
FAW Welsh Youth Cup and was a permanent fixture in Swansea Reserve team, winning Reserve Team Player of the Year in 2011–12. On 9 May 2012, Edwards signed a new three-year contract with Swansea, keeping him at the club until June 2015. He featured on the bench for the first team on 13 May 2012, in a 1–0 win over
Liverpool at the
Liberty Stadium. He was called by Swansea manager
Brendan Rodgers to be subbed on during stoppage time but did not make it onto the field due to the ball not going out of play before the final whistle.
St Johnstone (loans) On 31 January 2013, Edwards moved to
Scottish Premier League side
St Johnstone on loan for the remainder of the 2012–13 season. He made his professional debut by coming off the bench in the 72nd minute in a 2–0 defeat to
St Mirren in the
Scottish Cup. Edwards made his
SPL debut by coming off the bench in a 1–1 draw with
Celtic on 19 February. Edwards made a return to St Johnstone in July 2013, joining on loan until January 2014. Edwards made his Europa League debut in St Johnstone's 1–0 victory away vs Rosenborg on 18 July 2013 coming on in the 66th minute. In the
third round of the second leg of the Europa League against
Minsk, Edwards was among two players to see their penalty successfully converted, which Minsk won, eliminating St Johnstone from the competition. Edwards then scored his first professional goal in a 3–0 win for St Johnstone against
Hamilton Academical in the
Scottish League Cup. By the end of his second loan spell with St Johnstone, Edwards had made a total of 24 appearances in all competitions, scoring 1 goal.
Crawley Town On 27 March 2014, Edwards joined
League One side
Crawley Town on a one-month loan. On 15 April 2014, Edwards enjoyed a goalscoring-debut for Crawley as a 76th-minute substitute in their 2–0 win against
Tranmere Rovers. In his second appearance, Edwards scored again for Crawley in their 2–1 victory against
Leyton Orient. After impressing Crawley manager
John Gregory, Edwards' loan was extended to the end of the 2013–14 season. On 11 July 2014, Edwards signed for
Crawley Town on a two-year contract for an undisclosed fee. Edwards' first game after signing for the club on a permanent basis came in the opening game of the season, as Crawley Town beat
Barnsley 1–0. He went on to make 93 appearances in all competitions over three seasons at the
Broadfield Stadium, scoring 15 goals.
Peterborough United On 24 June 2016, Edwards joined League One side
Peterborough United on a three-year deal for an undisclosed fee. He scored the winner on his debut in a 3–2 win over
Rochdale on 6 August 2016. He won the club's goal of the season award for the 2016–17 season for an individual effort in a 2–0 win over
Charlton Athletic on 17 December. Edwards made 74 appearances for Peterborough during two seasons at the club, scoring 16 goals, Edwards scored his first goal for the club on his debut in a 2–2 draw with
Blackburn Rovers at
Portman Road, on the opening day of the season. Edwards went on to score 6 goals in 34 appearances in his debut season at
Portman Road, including scoring in the
East Anglian Derby at Portman Road on 2 September 2018. He scored his first goal of the 2019–20 season on 24 August, netting the second goal in a 0–5 away win against
Bolton Wanderers at the
University of Bolton Stadium. He featured regularly throughout the season, often filling in at
right wing-back and
right-back due to an injury to
Kane Vincent-Young. On 18 May 2020, Ipswich took up the one-year option in his contract, extending his stay at the club until 2021. Edwards scored in the opening game of the 2020–21 season, scoring the second goal in a 2–0 home win over
Wigan Athletic. He continued his goal scoring form throughout September and October, scoring 5 goals in the opening 6 games of the season, including a brace in a 4–1 away win over
Blackpool on 10 October.
Wigan Athletic On 10 June 2021, Edwards completed a move to
Wigan Athletic, signing a two-year deal with the club. He scored on his debut for Wigan in a 2–1 defeat at
Sunderland on 7 August 2021. He was released by Wigan at the end of the
2022–23 season.
Morecambe On 3 January 2024, Edwards signed for
Morecambe on a contract until the end of the 2023-2024 season. On 17 May 2024, Edwards signed a new two-year deal with the option for a further year. ==International career==