Josh Ruffels
|
Ruffels in 2025. | |||
| Personal information | |||
|---|---|---|---|
| Full name | Joshua Andrew Bernard Ruffels[1] | ||
| Date of birth | 23 October 1993[2] | ||
| Place of birth | Oxford, England | ||
| Height | 5 ft 10 in (1.78 m)[3] | ||
| Position | Left-back[4] | ||
| Team information | |||
Current team | Shrewsbury Town | ||
| Number | 25 | ||
| Youth career | |||
| –2011 | Coventry City | ||
| Senior career* | |||
| Years | Team | Apps | (Gls) |
| 2011–2013 | Coventry City | 1 | (0) |
| 2013–2021 | Oxford United | 257 | (21) |
| 2021–2025 | Huddersfield Town | 74 | (3) |
| 2025– | Shrewsbury Town | 6 | (1) |
| * Club domestic league appearances and goals as of 23:33, 2 December 2025 (UTC) | |||
Joshua Andrew Bernard Ruffels (born 23 October 1993) is an English professional footballer who plays as a left-back for EFL League Two club Shrewsbury Town.
Early life
[edit | edit source]Ruffels was born in Oxford, Oxfordshire.[5]
Career
[edit | edit source]Coventry City
[edit | edit source]Ruffels made his first-team debut for Coventry City as a substitute on 16 August 2011 in a 2–1 defeat to Crystal Palace in the Championship, coming on to replace injured Gary McSheffrey after 18 minutes.[6][7] He was released by Coventry at the end of the 2012–13 season.[8]
Oxford United
[edit | edit source]
Oxford United signed Ruffels on a free transfer on 30 July 2013.[9] He made his debut as a substitute in a 3–1 league win over Torquay United on 17 August 2013[10] and his first starting appearance in a 2–1 home defeat to Portsmouth in the Football League Trophy on 8 October 2013.[11] He scored his first senior goal in a 1–1 League Two draw versus Bury on 4 February 2014.[12] On 17 April 2014, Ruffels signed a new contract keeping him at the club for a further two years.[13] Nine days later, he was voted 'Young Player of the Year' after he established himself in the first team in his first full season for the club.[14] On 20 October 2017, Ruffles agreed a new contract keeping him at Oxford until the end of the 2019–20 season, with an additional one-year option available.[15] Ruffels won the Supporters' Player of the Year Award for the 2018–19 season.[16] Signed as a midfielder, he now plays at left back.[17]
Huddersfield Town
[edit | edit source]Ruffels agreed to join EFL Championship club Huddersfield Town on 1 July 2021.[18] After contracting COVID-19 just as the season was about to commence in August 2021, Ruffels had to miss a lot of the early part of the season, but he finally made his Terriers debut as a substitute in their 3–2 win over Blackburn Rovers on 28 September 2021, where he also became the 1,000th player to play for Huddersfield Town.[19]
He scored his first goals for Huddersfield when he scored twice in a 2–1 win at Queens Park Rangers on 8 November 2022.[20]
He was released by the club at the end of the 2024–25 season.[21]
Shrewsbury Town
[edit | edit source]Following his release from Huddersfield, Ruffles joined League Two side Shrewsbury Town in October 2025,[22] reuniting with manager Michael Appleton, after their spell together at Oxford United.
Career statistics
[edit | edit source]- As of match played 11 November 2023
| Club | Season | League | FA Cup | League Cup | Other | Total | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Division | Apps | Goals | Apps | Goals | Apps | Goals | Apps | Goals | Apps | Goals | ||
| Coventry City | 2010–11[23] | Championship | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | |
| 2011–12[24] | Championship | 1 | 0 | 1 | 0 | 0 | 0 | — | 2 | 0 | ||
| 2012–13[25] | League One | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| Total | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | ||
| Oxford United | 2013–14[26] | League Two | 29 | 1 | 5 | 0 | 0 | 0 | 1[a] | 0 | 35 | 1 |
| 2014–15[27] | League Two | 33 | 0 | 1 | 0 | 2 | 0 | 1[a] | 0 | 37 | 0 | |
| 2015–16[28] | League Two | 16 | 0 | 1 | 0 | 2 | 0 | 3[a] | 0 | 22 | 0 | |
| 2016–17[29] | League One | 20 | 2 | 3 | 1 | 1 | 0 | 6[b] | 0 | 30 | 3 | |
| 2017–18[30] | League One | 38 | 5 | 1 | 0 | 1 | 0 | 5[b] | 0 | 45 | 5 | |
| 2018–19[31] | League One | 44 | 4 | 3 | 0 | 2 | 0 | 3[b] | 0 | 52 | 4 | |
| 2019–20[32] | League One | 35 | 3 | 4 | 0 | 4 | 0 | 5[c] | 0 | 48 | 3 | |
| 2020–21[33] | League One | 42 | 6 | 1 | 1 | 1 | 0 | 4[d] | 0 | 48 | 7 | |
| Total | 257 | 21 | 19 | 2 | 13 | 0 | 28 | 0 | 317 | 23 | ||
| Huddersfield Town | 2021–22[34] | Championship | 8 | 0 | 3 | 0 | 0 | 0 | 0 | 0 | 11 | 0 |
| 2022–23[35] | Championship | 33 | 3 | 0 | 0 | 0 | 0 | — | 33 | 3 | ||
| 2023–24[36] | Championship | 11 | 0 | 0 | 0 | 0 | 0 | — | 11 | 0 | ||
| Total | 52 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 55 | 3 | ||
| Career total | 310 | 24 | 23 | 2 | 13 | 0 | 28 | 0 | 374 | 26 | ||
- ^ a b c Appearance(s) in Football League Trophy
- ^ a b c Appearances in EFL Trophy
- ^ Two appearances in EFL Trophy, three appearances in League One play-offs
- ^ Two appearances in EFL Trophy, two appearances in League One play-offs
Honours
[edit | edit source]Oxford United
- Football League/EFL Trophy runner-up: 2015–16,[37] 2016–17[38]
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- Profile Archived 16 July 2019 at the Wayback Machine at the Oxford United F.C. website
- Josh Ruffels at SoccerbaseLua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).Lua error in Module:WikidataCheck at line 29: attempt to index field 'wikibase' (a nil value).