Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Barnet | 2025/26 | 13 | 2 | 0 |
| Forest Green | 2023/24 – 2024/25 | 68 | 5 | — |
| Bradford | 2022/23 – 2023/24 | 33 | 2 | — |
| Walsall | 2020/21 – 2021/22 | 91 | 8 | 9 |
| Macclesfield | 2019/20 | 30 | 4 | 2 |
| Cambridge | 2017/18 – 2018/19 | 23 | 1 | — |
| Newport | 2017/18 | 3 | 0 | — |
| Gillingham | 2015/16 – 2016/17 | 52 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 18 Jan 2024 | Bradford | Forest Green | — |
| 10 Jun 2022 | Walsall | Bradford | — |
| 1 Jul 2019 | Cambridge United | Macclesfield | Free |
| 1 Jun 2018 | Newport County | Cambridge United | — |
| 18 Jan 2018 | Cambridge United | Newport County | Loan |
| 1 Jul 2017 | Gillingham | Cambridge United | Free |
| 1 Jul 2025 | Forest Green | Barnet | Free Transfer |
| 3 Sept 2020 | Macclesfield | Walsall | — |
| 30 Jun 2026 | Barnet | Sutton Utd | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025/26 | League Cup | Barnet | 1 | 1 | 45 | 0 | 0 | 0 | 0 | 6.20 |
| 2025/26 | EFL Trophy | Barnet | 3 | 3 | 187 | 1 | 0 | 1 | 0 | 6.75 |
| 2025/26 | League Two | Barnet | 9 | 1 | 200 | 1 | 0 | 1 | 1 | 6.51 |
| 2024/25 | National League | Forest Green | 42 | 24 | 2296 | 2 | — | 10 | 0 | — |
| 2024/25 | FA Trophy | Forest Green | 3 | 2 | 198 | 0 | — | 0 | 0 | — |
| 2024/25 | FA Cup | Forest Green | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2024/25 | National League Cup | Forest Green | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2023/24 | League Two | Forest Green | 20 | 20 | 1737 | 3 | — | 5 | 0 | 6.51 |
| 2023/24 | League Two | Bradford | 17 | 5 | 578 | 1 | — | 0 | 0 | 6.51 |
| 2023/24 | League Cup | Bradford | 1 | 1 | 73 | 0 | — | 0 | 0 | 6.90 |
| 2023/24 | FA Cup | Bradford | 1 | 1 | 58 | 0 | — | 0 | 0 | — |
| 2023/24 | EFL Trophy | Bradford | 2 | 1 | 97 | 1 | — | 0 | 1 | 6.75 |
| 2022/23 | League Two | Bradford | 12 | 1 | 217 | 0 | — | 1 | 0 | 6.41 |
| 2021/22 | League Two | Walsall | 43 | 35 | 3128 | 3 | 7 | 1 | 0 | 6.76 |
| 2021/22 | EFL Trophy | Walsall | 4 | 3 | 298 | 1 | — | 0 | 0 | 6.77 |
| 2021/22 | League Cup | Walsall | 1 | 1 | 90 | 0 | — | 1 | 0 | 7.30 |
| 2021/22 | FA Cup | Walsall | 2 | 2 | 149 | 1 | — | 0 | 0 | 6.20 |
| 2020/21 | League Two | Walsall | 38 | 26 | 2279 | 3 | 2 | 3 | 0 | 6.64 |
| 2020/21 | EFL Trophy | Walsall | 3 | 3 | 211 | 0 | — | 2 | 0 | 6.05 |
| 2019/20 | League Two | Macclesfield | 25 | 22 | 2036 | 4 | 1 | 4 | 0 | 6.87 |
| 2019/20 | EFL Trophy | Macclesfield | 3 | 1 | 118 | 0 | — | 0 | 0 | — |
| 2019/20 | League Cup | Macclesfield | 2 | 2 | 160 | 0 | 1 | 0 | 0 | 7.00 |
| 2018/19 | League Two | Cambridge | 12 | 1 | 225 | 0 | — | 2 | 0 | — |
| 2018/19 | League Cup | Cambridge | 1 | 1 | 82 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Cambridge | 3 | 3 | 255 | 1 | — | 0 | 0 | — |
| 2017/18 | League Two | Newport | 3 | 0 | 81 | 0 | — | 0 | 0 | — |
| 2017/18 | League Two | Cambridge | 4 | 0 | 85 | 0 | — | 0 | 0 | — |
| 2017/18 | League Cup | Cambridge | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Cambridge | 2 | 1 | 123 | 0 | — | 0 | 0 | — |
| 2016/17 | League One | Gillingham | 24 | 12 | 1274 | 1 | — | 2 | 0 | — |
| 2016/17 | League Cup | Gillingham | 3 | 2 | 270 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Gillingham | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Gillingham | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Gillingham | 18 | 10 | 900 | 2 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Gillingham | 2 | 1 | 134 | 0 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Gillingham | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
No trophies recorded.
