Edwards began his career with Aston Villa and then Bristol City, where he rose through the youth ranks to graduate from the club's academy. He made his professional debut for the club in February 2011 following a loan spell at Conference Premier side Bath City. He was again loaned out in the 2011–12 season to Stockport County and Yeovil Town. Following a second loan spell with Yeovil in the 2012–13 season, he joined the club permanently in January 2013. He helped the club reach the Championship for the first time in their history, but suffered relegation after just one season. He was appointed captain for the 2014–15 season, but the club were relegated for the second season in succession. Following their relegation to League Two, he joined League One side Colchester United.
Born in Gloucester, Edwards progressed through Bristol City academy from the age of ten, having spent the three years prior with Aston Villa. Naturally a full-back who could play on both the left or right, Edwards was awarded his first professional deal by the club in April 2009, and signed a 12-month contract extension with the club in May 2010.
After what teammate Cole Skuse described as a "fantastic pre-season" for Edwards, the club sent Edwards out on loan to Conference Premier side Bath City in September 2010. He made his debut for the club on 18 September in Bath's 2–2 draw with Darlington before being replaced after 75 minutes by Hector Mackie. After making four appearances, his loan was extended for a further month in October. He made his first FA Cup appearance in the third qualifying round as Bath were knocked out by Swindon Supermarine in a 4–3 home defeat. After making nine league appearances for Bath, Edwards returned to Bristol City in November after Conference emergency loan regulations ruled out an extension.
An injury crisis meant that City manager Keith Millen needed to draft Edwards onto the substitutes bench for a number of games during January and February 2011. On 5 February, Edwards was brought on during a 4–0 away win over Preston North End in the 88th minute to make his professional debut. Following a further injury crisis, Millen decided to give Edwards his full debut in the final Championship game of the season, a home tie with Hull City on 7 May. He played the full 90 minutes in the 3–0 win. After making his full debut, Edwards signed a new one-year contract extension with the club.
Stockport County signed Edwards in a one-month emergency loan deal on 28 September 2011. He made his debut in County's 2–1 home defeat to York City on 1 October. He made eleven appearances for Stockport through to 1 January 2012 after having his loan deal extended.
Immediately after his Stockport loan, Edwards became Gary Johnson's first signing on 12 January 2012 since his return to the club. He scored on his debut for the club with his first professional goal, scoring from the edge of the area to level scores at 1–1 in a 2–1 home win against Tranmere Rovers on 14 January. In the match, Edwards was utilised in a role higher up the pitch than his usual full-back role for the first time in a competitive game. After playing four League One games for Yeovil, Edwards returned to Bristol City after picking up an injury, but Johnson hoped the club would be able to re-sign him once he had recovered fully.
Once recovered, Edwards made the bench on numerous occasions for City before making his third league outing for the club. He was introduced as a 78th-minute substitute for Hogan Ephraim during a 1–1 draw at Middlesbrough after Ryan McGivern was sent off two minutes earlier. He then made his second and what would be final start for City on 28 April in their trip to face Burnley. His first start in almost one year, Edwards played the full 90 minutes in the 1–1 draw. Edwards was again offered a one-year contract extension by the club in May 2012, which he finally signed in June.
Edwards joined Yeovil Town for a second loan spell on 21 September 2012, signing for an initial month. This came after manager Gary Johnson had ruled out a move for Edwards in August 2012, remarking that "we have got our cover for that position". He was brought on as a substitute for Sam Foley in Yeovil's 1–0 home defeat by Sheffield United the following day. He received the first red card of his career on 13 October in Yeovil's 3–2 defeat at Tranmere Rovers after collecting two yellow cards for clumsy fouls. He scored his first goal of the season on 10 November as Yeovil beat Hartlepool United 1–0 at Huish Park. Having made 15 loan appearances for Yeovil and with the end of his loan edging closer, Edwards announced that he "would be happy to come back" to the club in January. Having been utilised across the defence and in the centre of midfield, Edwards' loan ended following the 4–1 win over Oldham Athletic on 22 December after making 16 League One appearances and one appearance in the Football League Trophy.
Yeovil Town signed Edwards from Bristol City for an undisclosed fee on 17 January 2013, where he signed an eighteen-month contract. The transfer fee offered by Yeovil was "five-figures". Edwards said that he was "delighted to sign at an exciting time for the club".
Edwards made what was his third debut for the club on 29 January 2013, as a Paddy Madden double sealed a 2–1 win over Milton Keynes Dons. He scored his second goal of the season on 20 April with a goal after 51 seconds in a 1–0 win over Crewe Alexandra. He helped Yeovil reach the play-offs at the end of the season, where they lost 1–0 to Sheffield United at Bramall Lane, but overcame the Blades 2–0 at Huish Park on 6 May to send them into the play-off final at Wembley Stadium. Edwards played start-to-finish in the game as his side beat Brentford 2–1 to earn promotion to the second tier of English football for the first time in Yeovil Town's history.
At the end of the season, having spent most of his time since his permanent move as a central midfielder, Edwards admitted that "I didn't know if it was the right move or if stepping down a division was going to help me, but it couldn't have worked out any better", after his former club were relegated to League One while Yeovil stepped up to the Championship.
Ahead of Yeovil's maiden season in the Championship, Edwards hoped that he could hold down a regular starting role in his new-found central midfield position. He began the season at full-back but returned to his now more familiar central midfield role towards the end of August 2013, before signing a new contract that would see him remain with the club until the summer of 2015. Edwards scored his only goal of the season in the dying moments of only his sides third win of the season on 30 November when they beat Watford 3–0 at Vicarage Road. He also provided an assist in the game. Despite suffering relegation back to League One at the end of the season, Edwards notched 50 appearances across the season for Yeovil. He was awarded the Western Gazette and the Yeovil Town Community Sports Trust 'Player of the Season' award for the 2013–14 campaign.
Despite having suffered relegation just days earlier, Edwards revealed his excitement at the prospect of the league fixtures against his former club Bristol City in the 2014–15 season. Following the departure of captain Jamie McAllister and vice-captain Byron Webster, Edwards hoped to be named Yeovil's latest club captain after leading the team out for their pre-season friendly 1–1 draw with Reading and 2–0 win over Bristol Rovers. He was then revealed as club captain on 8 August ahead of their season opening game with Doncaster Rovers. With the club struggling for league form, an FA Cup run to the third round produced a dream tie for Edwards as Yeovil were drawn against Manchester United at Huish Park. Yeovil put in a valiant display, but lost 2–0 to the Premier League side, with Edwards captaining the club and playing for the full match.
Following the cup tie with Manchester United, Edwards wanted to see his side transfer the performance they put in against the Premier League club into their own relegation battle. He described the 2–0 defeat by saying "we're massively disappointed but extremely proud of everyone... we tried our hardest". During the January 2015 transfer window, Edwards was linked with a move away from Huish Park, with Championship sides Birmingham City and Charlton Athletic, and his boyhood club Bristol City all reportedly interested, with his contract set to expire in the summer. Manager Gary Johnson said "I can understand the interest but there's certainly no contact with our club".
With the club bottom of League One, Gary Johnson was dismissed as manager, and with Terry Skiverton replacing Johnson, Edwards said that the players were backing the new management team. Edwards suffered an ankle injury during Yeovil's 1–0 defeat at Crewe Alexandra on 10 February, requiring to be replaced at half-time. It was the first time that he had missed a Football League game in one-and-a-half seasons. After missing six matches, Edwards returned for the 3–0 defeat at Leyton Orient on 14 March, before suffering another injury blow during a 2–0 defeat to Colchester United at the Colchester Community Stadium three days later. He returned to action with Yeovil already relegated to League Two and a new manager in the shape of Paul Sturrock on 25 April as a half-time substitute in their 2–1 home defeat by Port Vale.
Edwards admitted that he was not sure if he would remain with Yeovil following their relegation, with ambitions to play at the highest level possible. He started in the final game of the season on 3 May as his side were thrashed 5–1 against League One runners-up Milton Keynes Dons.
Days after the final game of the campaign, Edwards had held initial talks with the club over his contract, but decided to move on, leaving the club having made 132 appearances in all competitions including his previous loan spells.
On leaving Yeovil Town, Edwards was once more linked with a move to his boyhood club Bristol City on the back of their promotion to the Championship, and then in July 2015, he teamed up with former manager Gary Johnson at Cheltenham Town in a bid to maintain his fitness. On 6 July, it was announced that League One side Colchester United had signed Edwards on a free transfer, joining on a one-year contract with the option of a further year. He made his debut for the club on 8 August in Colchester's 2–2 home draw with Blackpool.
In his 30th appearance for Colchester, Edwards scored his first goal for the club on 13 February 2016. His 64th-minute half-volleyed effort reduced Colchester's deficit in their 4–1 home defeat by Swindon Town. He was shown a red card in Colchester's 3–0 home defeat to Burton Albion on 23 April for a challenge on Matt Palmer, a result which saw Edwards experience his third successive relegation as Colchester were relegated to League Two. Edwards' red card was later rescinded on 26 April. After scoring two goals in 45 games for Colchester, the club announced that Edwards would not be offered a new contract for the 2016–17 season following their relegation to League Two.
He signed for Walsall in June 2016.As of 26 September 2017.
Edwards' father is from the Greater Manchester area, with his family originally from North Wales. He is a Manchester United fan, with both his parents also fans of the club.
In July 2012, Edwards was banned from driving for 20 months and received a £900 fine for drink driving in June 2012, eleven days after signing a contract extension with Bristol City. He was found to a breath alcohol reading more than twice the legal limit. He pleaded guilty at Bristol Magistrates Court and said his actions left him "ashamed and embarrassed".
In July 2017 he graduated from the University of Salford with a degree in physiotherapy as part of a scheme between the University and the Professional Footballers Association aimed at preparing current and former footballers for careers after football.Yeovil Town
2013 Football League One play-off Final winner