Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Mansfield | 2023/24 – 2026/27 | 92 | 3 | 1 |
| Port Vale | 2026/27 | 1 | 0 | 0 |
| Burton | 2021/22 – 2023/24 | 133 | 12 | 6 |
| Charlton | 2019/20 – 2020/21 | 47 | 1 | 1 |
| Wimbledon | 2014/15 – 2018/19 | 103 | 4 | 1 |
| Gillingham | 2015/16 – 2016/17 | 55 | 5 | — |
| Cardiff | 2011/12 – 2015/16 | 3 | 0 | — |
| Sheffield Wed | 2013/14 | 2 | 0 | — |
| Newport | 2013/14 | 12 | 1 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 17 Jun 2024 | Burton Albion | Mansfield Town | Free |
| 1 Jul 2021 | Charlton | Burton Albion | Free |
| 22 Jul 2019 | AFC Wimbledon | Charlton | Free |
| 1 Jul 2017 | Cardiff | AFC Wimbledon | Free |
| 1 Jun 2017 | Gillingham | Cardiff | — |
| 6 Jul 2016 | Cardiff | Gillingham | Loan |
| 1 Jun 2016 | Gillingham | Cardiff | — |
| 14 Mar 2016 | Cardiff | Gillingham | Loan |
| 3 Jan 2016 | Gillingham | Cardiff | — |
| 24 Jul 2015 | Cardiff | Gillingham | Loan |
| 1 Jun 2015 | AFC Wimbledon | Cardiff | — |
| 8 Jan 2015 | Cardiff | AFC Wimbledon | Loan |
| 1 Jun 2014 | Sheffield Wednesday | Cardiff | — |
| 8 Feb 2014 | Cardiff | Sheffield Wednesday | Loan |
| 7 Jan 2014 | Newport County | Cardiff | — |
| 31 Oct 2013 | Cardiff | Newport County | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Mansfield | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.30 |
| 2026/27 | League One | Mansfield | 10 | 10 | 899 | 0 | 0 | 1 | 0 | 6.61 |
| 2026/27 | EFL Trophy | Port Vale | 1 | 1 | 45 | 0 | 0 | 0 | 0 | 6.56 |
| 2025/26 | FA Cup | Mansfield | 5 | 5 | 270 | 0 | 0 | 1 | 0 | 6.77 |
| 2025/26 | League One | Mansfield | 34 | 34 | 2996 | 0 | 1 | 7 | 0 | 6.82 |
| 2024/25 | League One | Mansfield | 39 | 38 | 3288 | 3 | 0 | 8 | 0 | 7.06 |
| 2024/25 | League Cup | Mansfield | 1 | 0 | 44 | 0 | 0 | 1 | 0 | 6.70 |
| 2024/25 | EFL Trophy | Mansfield | 2 | 0 | 63 | 0 | 0 | 0 | 0 | 6.80 |
| 2023/24 | League One | Burton | 43 | 39 | 3506 | 2 | 2 | 13 | 0 | 6.71 |
| 2023/24 | League Cup | Burton | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.30 |
| 2023/24 | EFL Trophy | Burton | 4 | 4 | 304 | 2 | — | 1 | 0 | 6.87 |
| 2023/24 | FA Cup | Burton | 2 | 2 | 167 | 0 | — | 1 | 0 | — |
| 2022/23 | League One | Burton | 42 | 40 | 3608 | 3 | 3 | 8 | 1 | 6.64 |
| 2022/23 | EFL Trophy | Burton | 5 | 5 | 450 | 2 | — | 0 | 0 | 6.95 |
| 2022/23 | FA Cup | Burton | 3 | 3 | 270 | 3 | 1 | 0 | 0 | 9.70 |
| 2021/22 | League One | Burton | 30 | 30 | 2557 | 0 | — | 10 | 1 | 6.62 |
| 2021/22 | League Cup | Burton | 1 | 1 | 51 | 0 | — | 0 | 0 | 6.30 |
| 2021/22 | FA Cup | Burton | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2020/21 | League One | Charlton | 17 | 16 | 1441 | 1 | 1 | 6 | 0 | 6.84 |
| 2020/21 | League Cup | Charlton | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.65 |
| 2020/21 | EFL Trophy | Charlton | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.00 |
| 2019/20 | Championship | Charlton | 25 | 19 | 1587 | 0 | — | 6 | 0 | 6.65 |
| 2019/20 | League Cup | Charlton | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.30 |
| 2019/20 | FA Cup | Charlton | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.80 |
| 2018/19 | League One | Wimbledon | 25 | 25 | 2242 | 1 | — | 2 | 0 | — |
| 2018/19 | EFL Trophy | Wimbledon | 1 | 0 | 21 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Wimbledon | 4 | 4 | 360 | 0 | 1 | 0 | 0 | 6.88 |
| 2018/19 | League Cup | Wimbledon | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.20 |
| 2017/18 | League One | Wimbledon | 42 | 41 | 3707 | 2 | — | 6 | 0 | — |
| 2017/18 | League Cup | Wimbledon | 1 | 0 | 49 | 0 | — | 1 | 0 | — |
| 2017/18 | EFL Trophy | Wimbledon | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Wimbledon | 3 | 3 | 270 | 0 | — | 0 | 0 | 7.00 |
| 2016/17 | League One | Gillingham | 33 | 31 | 2711 | 2 | — | 10 | 0 | — |
| 2016/17 | League Cup | Gillingham | 3 | 2 | 283 | 0 | — | 1 | 0 | — |
| 2016/17 | EFL Trophy | Gillingham | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Gillingham | 2 | 2 | 210 | 0 | — | 1 | 0 | — |
| 2015/16 | League Cup | Gillingham | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Gillingham | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Gillingham | 12 | 11 | 990 | 3 | — | 5 | 0 | — |
| 2014/15 | League Two | Wimbledon | 23 | 23 | 2038 | 1 | — | 3 | 0 | — |
| 2014/15 | League Cup | Cardiff | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2013/14 | Championship | Sheffield Wed | 2 | 2 | 152 | 0 | — | 0 | 0 | — |
| 2013/14 | League Two | Newport | 8 | 8 | 720 | 0 | — | 3 | 0 | — |
| 2013/14 | EFL Trophy | Newport | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Newport | 2 | 2 | 157 | 0 | — | 1 | 0 | — |
| 2012/13 | League Cup | Cardiff | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2012/13 | FA Cup | Cardiff | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Groin Injury | 8 Aug 2025 | Ongoing | 442 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League Cup (England) | 2011/2012 | 2nd Place |
| Championship (England) | 2012/2013 | Winner |
