Clubs
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jul 2021 | Coventry | Shrewsbury | — |
| 1 Jul 2019 | Doncaster | Coventry | Free |
| 7 Aug 2014 | Wigan | Doncaster | Free |
| 14 Jan 2025 | Plymouth | Cambridge United | Transfer |
| 21 Feb 2026 | Tranmere | Port Vale | Return from loan |
| 28 Feb 2026 | Tranmere | Port Vale | Return from loan |
| 30 Jun 2025 | Cambridge United | Port Vale | Free agent |
| 3 Mar 2026 | Tranmere | Port Vale | Return from loan |
| 5 Feb 2026 | Port Vale | Tranmere | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | EFL Trophy | Mansfield | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.38 |
| 2026/27 | EFL Trophy | Port Vale | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.19 |
| 2026/27 | League Two | Port Vale | 4 | 4 | 360 | 0 | 0 | 0 | 0 | 7.25 |
| 2025/26 | League Cup | Port Vale | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 7.20 |
| 2025/26 | EFL Trophy | Port Vale | 1 | 1 | — | 0 | 0 | 0 | 0 | — |
| 2025/26 | League One | Port Vale | 5 | 5 | 450 | 0 | 0 | 0 | 0 | 6.82 |
| 2025/26 | League Two | Tranmere | 16 | 16 | 1440 | 0 | 0 | 2 | 0 | 6.83 |
| 2024/25 | League One | Cambridge | 2 | 2 | 130 | 0 | 0 | 0 | 0 | 6.50 |
| 2023/24 | League One | Shrewsbury | 43 | 43 | 3855 | 0 | — | 6 | 0 | 6.86 |
| 2023/24 | League Cup | Shrewsbury | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.00 |
| 2023/24 | EFL Trophy | Shrewsbury | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.90 |
| 2023/24 | FA Cup | Shrewsbury | 3 | 3 | 270 | 0 | — | 1 | 0 | 7.20 |
| 2022/23 | League One | Shrewsbury | 44 | 44 | 3960 | 0 | — | 4 | 0 | 6.76 |
| 2022/23 | League Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | FA Cup | Shrewsbury | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | Shrewsbury | 46 | 46 | 4140 | 0 | — | 1 | 0 | 6.92 |
| 2021/22 | League Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.80 |
| 2021/22 | FA Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 0 | 0 | 5.90 |
| 2020/21 | Championship | Coventry | 20 | 20 | 1800 | 0 | — | 2 | 0 | 6.59 |
| 2020/21 | League Cup | Coventry | 1 | 1 | 90 | 0 | — | 0 | 0 | 8.30 |
| 2019/20 | League One | Coventry | 34 | 34 | 3060 | 0 | — | 3 | 0 | 6.88 |
| 2019/20 | FA Cup | Coventry | 6 | 6 | 570 | 0 | — | 0 | 0 | — |
| 2018/19 | League One | Doncaster | 38 | 38 | 3443 | 0 | — | 2 | 1 | 6.90 |
| 2018/19 | League Cup | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Doncaster | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.30 |
| 2017/18 | League One | Doncaster | 13 | 12 | 1080 | 0 | — | 2 | 0 | — |
| 2017/18 | League Cup | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Doncaster | 4 | 4 | 360 | 0 | — | 0 | 0 | — |
| 2016/17 | League Two | Doncaster | 25 | 24 | 2093 | 0 | — | 2 | 0 | — |
| 2016/17 | League Cup | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Doncaster | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Doncaster | 1 | 0 | 42 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Doncaster | 1 | 0 | 44 | 0 | — | 0 | 0 | — |
| 2014/15 | League One | Doncaster | 3 | 2 | 240 | 0 | — | 0 | 0 | — |
| 2014/15 | FA Cup | Doncaster | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2019/2020 | Winner |
