Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Barnet | 2024/25 – 2025/26 | 24 | 0 | 0 |
| Cheltenham | 2019/20 – 2024/25 | 56 | 0 | 0 |
| Walsall | 2022/23 – 2023/24 | 79 | 0 | — |
| Wigan | 2016/17 – 2020/21 | 6 | 0 | — |
| Macclesfield | 2019/20 | 27 | 0 | — |
| Wales U21 | 2019 | 2 | 0 | — |
| Sutton Utd | 2017/18 | 4 | 0 | — |
| North Ferriby United | 2016/17 | 6 | 0 | — |
| Rhyl | 2016/17 | 22 | 0 | — |
| Wales U19 | 2015 | 3 | 0 | — |
| Hereford United | 2013/14 | 0 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 3 Jul 2024 | Walsall | Cheltenham | Free |
| 21 Jun 2022 | Cheltenham | Walsall | — |
| 1 Jul 2021 | Wigan | Cheltenham | Free |
| 1 Jul 2020 | Cheltenham | Wigan | — |
| 9 Jan 2020 | Wigan | Cheltenham | Loan |
| 25 Jul 2019 | Wigan | Macclesfield | Loan |
| 1 Jul 2018 | Sutton Utd | Wigan | — |
| 3 Jan 2018 | Wigan | Sutton Utd | Loan |
| 1 Jul 2017 | North Ferriby United | Wigan | — |
| 31 Mar 2017 | Wigan | North Ferriby United | Loan |
| 1 Jan 2017 | Rhyl | Wigan | — |
| 2 Jan 2025 | Cheltenham | Barnet | Loan |
| 1 Jul 2025 | Cheltenham | Barnet | Free Transfer |
| 8 Jan 2020 | Macclesfield | Wigan | — |
| 30 Jun 2026 | Barnet | Altrincham | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025/26 | EFL Trophy | Barnet | 2 | 2 | 97 | 0 | 0 | 0 | 0 | 6.00 |
| 2025/26 | League Two | Barnet | 3 | 3 | 270 | 0 | 0 | 0 | 0 | 6.43 |
| 2024/25 | National League | Barnet | 18 | 18 | 1620 | 0 | — | 3 | 0 | — |
| 2024/25 | League Two | Cheltenham | 11 | 11 | 990 | 0 | 0 | 0 | 0 | 6.85 |
| 2024/25 | FA Trophy | Barnet | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2023/24 | League Two | Walsall | 25 | 25 | 2189 | 0 | — | 3 | 1 | 6.87 |
| 2023/24 | FA Cup | Walsall | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2022/23 | League Two | Walsall | 45 | 45 | 4006 | 0 | — | 7 | 0 | 6.73 |
| 2022/23 | League Cup | Walsall | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.10 |
| 2022/23 | EFL Trophy | Walsall | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Walsall | 4 | 4 | 360 | 0 | — | 0 | 0 | 7.30 |
| 2021/22 | League One | Cheltenham | 27 | 27 | 2430 | 0 | — | 1 | 0 | 6.69 |
| 2021/22 | EFL Trophy | Cheltenham | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2021/22 | League Cup | Cheltenham | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.60 |
| 2020/21 | League One | Wigan | 1 | 1 | 90 | 0 | — | 0 | 0 | 5.30 |
| 2020/21 | FA Cup | Wigan | 1 | 1 | 120 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Wigan | 3 | 3 | 270 | 0 | — | 0 | 0 | 6.80 |
| 2019/20 | League Two | Cheltenham | 13 | 13 | 1170 | 0 | — | 0 | 0 | 6.83 |
| 2019/20 | League Two | Macclesfield | 24 | 24 | 2160 | 0 | — | 3 | 0 | 6.83 |
| 2019/20 | League Cup | Macclesfield | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.75 |
| 2019/20 | FA Cup | Macclesfield | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2019 | UEFA U21 Championship | Wales U21 | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | National League | Sutton Utd | 2 | 2 | 180 | 0 | — | 1 | 0 | — |
| 2017/18 | FA Trophy | Sutton Utd | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | League Cup | Wigan | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2016/17 | National League | North Ferriby United | 6 | 6 | 540 | 0 | — | 1 | 0 | — |
| 2016/17 | Premier League | Rhyl | 20 | 20 | 1740 | 0 | — | 3 | 1 | — |
| 2016/17 | League Cup | Rhyl | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2015 | UEFA U19 Championship | Wales U19 | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
No trophies recorded.
