Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Wrexham | 2024/25 – 2026/27 | 45 | 0 | 2 |
| Salford | 2026/27 | 7 | 0 | 0 |
| Plymouth | 2021/22 – 2024/25 | 109 | 5 | 2 |
| Walsall | 2018/19 – 2020/21 | 96 | 7 | 1 |
| Birmingham | 2018/19 | 1 | 0 | — |
| Wycombe | 2017/18 | 26 | 1 | — |
| Stourbridge | 2015/16 – 2016/17 | 10 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 2 Aug 2024 | Plymouth | Wrexham | 352K |
| 11 Jun 2021 | Walsall | Plymouth | Free |
| 21 Jan 2019 | Birmingham | Walsall | — |
| 1 Jul 2018 | Wycombe | Birmingham | — |
| 31 Aug 2017 | Birmingham | Wycombe | Loan |
| 23 Jan 2017 | Stourbridge | Birmingham | — |
| 31 Aug 2026 | Wrexham | Salford City | Transfer |
| 30 Aug 2026 | Wrexham | Salford City | Transfer |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Two | Salford | 7 | 6 | 551 | 0 | 0 | 0 | 0 | 7.07 |
| 2025/26 | League Cup | Wrexham | 3 | 3 | 276 | 0 | 0 | 0 | 0 | 7.23 |
| 2025/26 | FA Cup | Wrexham | 1 | 1 | 120 | 0 | 0 | 0 | 0 | 7.00 |
| 2025/26 | Championship | Wrexham | 20 | 15 | 1360 | 0 | 1 | 4 | 0 | 6.76 |
| 2024/25 | League One | Wrexham | 14 | 12 | 1081 | 0 | 0 | 3 | 0 | 7.15 |
| 2024/25 | FA Cup | Wrexham | 1 | 1 | — | — | — | 0 | 0 | — |
| 2024/25 | League Cup | Wrexham | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 7.00 |
| 2024/25 | EFL Trophy | Wrexham | 5 | 5 | 450 | 0 | 0 | 0 | 0 | 7.03 |
| 2023/24 | Championship | Plymouth | 28 | 25 | 2217 | 1 | — | 6 | 1 | 6.78 |
| 2023/24 | League Cup | Plymouth | 1 | 1 | 90 | 0 | — | 1 | 0 | 6.70 |
| 2023/24 | FA Cup | Plymouth | 2 | 1 | 105 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | League One | Plymouth | 32 | 30 | 2601 | 2 | — | 4 | 1 | 7.02 |
| 2022/23 | FA Cup | Plymouth | 1 | 1 | 41 | 0 | — | 0 | 0 | — |
| 2022/23 | EFL Trophy | Plymouth | 3 | 3 | 226 | 0 | — | 1 | 0 | — |
| 2021/22 | League One | Plymouth | 35 | 35 | 3150 | 2 | 1 | 5 | 0 | 7.01 |
| 2021/22 | League Cup | Plymouth | 2 | 2 | 180 | 0 | 1 | 0 | 0 | 7.00 |
| 2021/22 | FA Cup | Plymouth | 5 | 5 | 510 | 0 | — | 0 | 0 | 7.25 |
| 2020/21 | League Two | Walsall | 35 | 34 | 3050 | 4 | 1 | 2 | 0 | 6.94 |
| 2020/21 | League Cup | Walsall | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.20 |
| 2020/21 | FA Cup | Walsall | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Walsall | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.90 |
| 2019/20 | League Two | Walsall | 33 | 32 | 2925 | 0 | — | 6 | 0 | 6.95 |
| 2019/20 | EFL Trophy | Walsall | 4 | 4 | 326 | 2 | — | 0 | 0 | 6.70 |
| 2019/20 | FA Cup | Walsall | 3 | 1 | 124 | 0 | — | 1 | 0 | 6.30 |
| 2018/19 | League One | Walsall | 17 | 17 | 1502 | 1 | — | 2 | 0 | — |
| 2018/19 | League Cup | Birmingham | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | League Two | Wycombe | 22 | 19 | 1647 | 1 | — | 2 | 0 | — |
| 2017/18 | FA Cup | Wycombe | 3 | 2 | 186 | 0 | — | 0 | 0 | 6.70 |
| 2017/18 | EFL Trophy | Wycombe | 1 | 1 | 63 | 0 | — | 1 | 0 | — |
| 2016/17 | FA Cup | Stourbridge | 5 | 5 | 450 | 2 | — | 1 | 0 | — |
| 2015/16 | FA Trophy | Stourbridge | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Stourbridge | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Red Card | 14 Dec 2023 | 26 Dec 2023 | 12 |
| Thigh Injury | 11 Jul 2018 | 25 Jul 2018 | 14 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2022/2023 | Winner |
| League One (England) | 2024/2025 | 2nd Place |
| EFL Trophy (England) | 2022/2023 | 2nd Place |
