Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Bradford | 2023/24 – 2026/27 | 89 | 4 | 1 |
| Notts County | 2022/23 – 2023/24 | 79 | 3 | — |
| MK Dons | 2021/22 | 17 | 0 | — |
| Eastleigh | 2019/20 | 4 | 0 | — |
| Cheltenham | 2018/19 | 5 | 0 | — |
| Weston-super-Mare | 2016/17 – 2017/18 | 35 | 2 | — |
| Bristol City | 2016/17 | 0 | 0 | — |
| Forest Green | 2014/15 – 2015/16 | 1 | 0 | — |
| Bath City | 2015/16 | 6 | 1 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 14 Jun 2024 | Notts County | Bradford | Free |
| 1 Jul 2022 | Milton Keynes Dons | Notts County | Free |
| 13 Jul 2021 | Eastleigh | Milton Keynes Dons | — |
| 3 Aug 2018 | Bristol City | Cheltenham | — |
| 31 Jul 2017 | Bristol City | Weston-super-Mare | Loan |
| 12 Oct 2016 | Bristol City | Weston-super-Mare | Loan |
| 29 Jan 2016 | Forest Green | Bristol City | — |
| 27 Sept 2015 | Bath City | Forest Green | — |
| 21 Aug 2015 | Forest Green | Bath City | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Bradford | 2 | 1 | 117 | 1 | 0 | 0 | 0 | 7.34 |
| 2026/27 | League One | Bradford | 11 | 11 | 984 | 1 | 0 | 1 | 0 | 7.34 |
| 2025/26 | League Cup | Bradford | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 6.65 |
| 2025/26 | EFL Trophy | Bradford | 2 | 1 | 120 | 0 | 0 | 0 | 0 | 7.00 |
| 2025/26 | League One | Bradford | 35 | 31 | 2802 | 2 | 0 | 6 | 1 | 6.88 |
| 2024/25 | League Two | Bradford | 32 | 30 | 2598 | 0 | 1 | 11 | 1 | 6.97 |
| 2024/25 | League Cup | Bradford | 1 | 1 | 90 | 0 | 0 | 1 | 0 | 7.30 |
| 2024/25 | EFL Trophy | Bradford | 4 | 1 | 166 | 0 | 0 | 0 | 0 | 6.45 |
| 2023/24 | League Two | Notts County | 41 | 37 | 3346 | 1 | — | 12 | 0 | 7.04 |
| 2023/24 | EFL Trophy | Notts County | 2 | 1 | 63 | 0 | — | 0 | 0 | 7.10 |
| 2023/24 | FA Cup | Notts County | 2 | 2 | 180 | 0 | — | 1 | 0 | — |
| 2023/24 | League Cup | Notts County | 1 | 1 | 56 | 0 | — | 1 | 0 | 5.30 |
| 2022/23 | National League | Notts County | 32 | 31 | 2784 | 2 | — | 3 | 1 | — |
| 2022/23 | FA Trophy | Notts County | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | MK Dons | 9 | 4 | 411 | 0 | — | 1 | 0 | 6.72 |
| 2021/22 | EFL Trophy | MK Dons | 4 | 4 | 360 | 0 | — | 0 | 0 | 7.20 |
| 2021/22 | League Cup | MK Dons | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2021/22 | FA Cup | MK Dons | 2 | 2 | 210 | 0 | — | 2 | 0 | — |
| 2021/22 | Friendlies Clubs | MK Dons | 1 | 1 | 67 | 0 | — | 0 | 0 | — |
| 2019/20 | National League | Eastleigh | 4 | 4 | 353 | 0 | — | 1 | 0 | — |
| 2018/19 | League Two | Cheltenham | 4 | 3 | 265 | 0 | — | 0 | 0 | — |
| 2018/19 | League Cup | Cheltenham | 1 | 1 | 87 | 0 | — | 0 | 0 | — |
| 2017/18 | National League N / S | Weston-super-Mare | 10 | 10 | 900 | 0 | — | 0 | 0 | — |
| 2016/17 | National League N / S | Weston-super-Mare | 25 | 22 | 1990 | 2 | — | 0 | 0 | — |
| 2015/16 | National League N / S | Bath City | 6 | 6 | 507 | 1 | — | 0 | 0 | — |
| 2015/16 | FA Trophy | Forest Green | 1 | 1 | 77 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Inactive | 5 Apr 2025 | 15 Apr 2025 | 10 |
| Red Card | 1 May 2025 | 3 May 2025 | 2 |
| Illness | 14 Jan 2021 | 28 Jan 2021 | 14 |
Trophies
| Competition | Season | Place |
|---|---|---|
| Somerset Premier Cup (England) | 2017 | 2nd Place |
| National League (England) | 2022/2023 | 2nd Place |
