Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Swindon | 2026/27 | 10 | 1 | 0 |
| Port Vale | 2018/19 – 2025/26 | 114 | 2 | 1 |
| Fleetwood | 2025/26 | 14 | 0 | 0 |
| Accrington | 2021/22 – 2023/24 | 76 | 1 | 6 |
| Leicester City U23 | 2019 – 2021 | 21 | 1 | — |
| Leicester City U21 | 2019 – 2020 | 6 | 0 | — |
| Wales U19 | 2018 | 3 | 0 | — |
| Aston Villa | 2017/18 | 1 | 0 | — |
| Aston Villa U18 | 2016 | 13 | 4 | — |
| Wales U17 | 2016 | 5 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 2 Jul 2023 | Accrington ST | Port Vale | Free |
| 10 Oct 2020 | Leicester City U23 | Port Vale | Loan |
| 1 Feb 2020 | Leicester | Port Vale | Loan |
| 7 Aug 2019 | Aston Villa | Leicester City U23 | — |
| 1 Jul 2019 | Aston Villa | Leicester | — |
| 18 Aug 2018 | Aston Villa | Port Vale | Loan |
| 30 May 2026 | Fleetwood Town | Port Vale | Return from loan |
| 1 Feb 2026 | Port Vale | Fleetwood Town | Loan |
| 30 Jun 2026 | Port Vale | Swindon Town | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Swindon | 1 | 1 | 64 | 0 | 0 | 0 | 0 | 6.50 |
| 2026/27 | League Two | Swindon | 9 | 9 | 787 | 1 | 0 | 1 | 1 | 6.61 |
| 2025/26 | League Cup | Port Vale | 2 | 0 | 36 | 0 | 0 | 0 | 0 | 6.75 |
| 2025/26 | EFL Trophy | Port Vale | 1 | 0 | 45 | 0 | 0 | 0 | 0 | 7.20 |
| 2025/26 | FA Cup | Port Vale | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 7.60 |
| 2025/26 | League One | Port Vale | 12 | 11 | 921 | 0 | 0 | 2 | 0 | 6.95 |
| 2025/26 | League Two | Fleetwood | 14 | 9 | 871 | 0 | 0 | 2 | 0 | 6.86 |
| 2024/25 | League Two | Port Vale | 20 | 16 | 1438 | 1 | 1 | 4 | 1 | 6.88 |
| 2024/25 | EFL Trophy | Port Vale | 2 | 2 | 95 | 0 | 0 | 0 | 0 | 6.60 |
| 2023/24 | League One | Port Vale | 13 | 7 | 587 | 0 | — | 2 | 0 | 6.69 |
| 2023/24 | EFL Trophy | Port Vale | 2 | 1 | 108 | 0 | — | 1 | 0 | 6.80 |
| 2022/23 | League One | Accrington | 40 | 38 | 3360 | 0 | 6 | 5 | 0 | 6.74 |
| 2022/23 | League Cup | Accrington | 1 | 1 | 90 | 0 | — | 1 | 0 | 6.30 |
| 2022/23 | EFL Trophy | Accrington | 6 | 2 | 347 | 0 | — | 1 | 0 | 7.15 |
| 2022/23 | FA Cup | Accrington | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | Accrington | 25 | 25 | 2165 | 1 | — | 3 | 1 | 6.72 |
| 2021/22 | EFL Trophy | Accrington | 2 | 1 | 124 | 0 | — | 0 | 0 | — |
| 2020/21 | League Two | Port Vale | 11 | 11 | 990 | 1 | — | 1 | 0 | 6.54 |
| 2020/21 | FA Cup | Port Vale | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2020 | EFL Trophy | Leicester City U21 | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2020 | Premier League 2 Division One | Leicester City U23 | 4 | 4 | 360 | 1 | — | 2 | 0 | — |
| 2019/20 | League Two | Port Vale | 4 | 4 | 357 | 0 | — | 1 | 1 | 7.10 |
| 2019 | Premier League 2 | Leicester City U23 | 15 | 14 | 1228 | 0 | — | 2 | 0 | — |
| 2019 | EFL Trophy | Leicester City U21 | 5 | 5 | 450 | 0 | — | 0 | 0 | — |
| 2019 | Premier League International Cup | Leicester City U23 | 2 | 1 | 120 | 0 | — | 0 | 1 | — |
| 2018/19 | League Two | Port Vale | 40 | 39 | 3357 | 0 | — | 7 | 0 | — |
| 2018/19 | EFL Trophy | Port Vale | 4 | 4 | 360 | 0 | — | 1 | 0 | — |
| 2018/19 | FA Cup | Port Vale | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2018 | UEFA U19 Championship | Wales U19 | 3 | 3 | 270 | 0 | — | 1 | 0 | — |
| 2017/18 | League Cup | Aston Villa | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2016 | U18 Premier League | Aston Villa U18 | 13 | 13 | 1104 | 4 | — | 1 | 1 | — |
| 2016 | UEFA U17 Championship | Wales U17 | 5 | 5 | 450 | 0 | — | 2 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Knee Injury | 4 Feb 2025 | 27 Feb 2025 | 23 |
| Red Card | 30 Jan 2025 | 1 Feb 2025 | 2 |
Trophies
| Competition | Season | Place |
|---|---|---|
| Premier League Cup (England) | 2017/2018 | Winner |
| League Two (England) | 2024/2025 | 2nd Place |
