Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Walsall | 2025/26 – 2026/27 | 54 | 15 | 2 |
| Stevenage | 2023/24 – 2024/25 | 32 | 4 | 1 |
| Barrow | 2024/25 | 21 | 4 | 1 |
| Brentford | 2020/21 – 2023/24 | 4 | 0 | — |
| Accrington | 2022/23 – 2023/24 | 27 | 8 | 1 |
| Scotland U21 | 2023 | 0 | 0 | — |
| Brentford U21 | 2022 | 3 | 1 | — |
| Wimbledon | 2021/22 | 27 | 4 | 1 |
| Aston Villa U21 | 2019 – 2020 | 0 | 0 | — |
| Aston Villa U18 | 2016 – 2019 | 32 | 6 | — |
| Scotland U17 | 2018 | 4 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 2 Aug 2023 | Brentford | Stevenage | — |
| 4 Jan 2023 | Brentford U21 | Accrington ST | Loan |
| 1 Jun 2022 | AFC Wimbledon | Brentford | — |
| 16 Jul 2021 | Brentford | AFC Wimbledon | Loan |
| 1 Jul 2025 | Barrow | Stevenage | — |
| 9 Jan 2025 | Stevenage | Barrow | Loan |
| 26 Jun 2025 | Stevenage | Walsall | Transfer |
| 30 May 2025 | Barrow | Stevenage | Return from loan |
| 24 Jun 2025 | Stevenage | Walsall | Transfer |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Walsall | 2 | 1 | 128 | 1 | 0 | 0 | 0 | 7.20 |
| 2026/27 | EFL Trophy | Walsall | 1 | 0 | 16 | 0 | 0 | 0 | 0 | 6.73 |
| 2026/27 | League Two | Walsall | 10 | 10 | 878 | 7 | 0 | 0 | 0 | 7.19 |
| 2025/26 | FA Cup | Walsall | 2 | 2 | 117 | 0 | 0 | 1 | 0 | 6.40 |
| 2025/26 | League Two | Walsall | 39 | 26 | 2360 | 7 | 2 | 2 | 0 | 6.74 |
| 2024/25 | League Two | Barrow | 21 | 15 | 1260 | 4 | 1 | 1 | 0 | 6.97 |
| 2024/25 | League One | Stevenage | 4 | 0 | 81 | 0 | 0 | 1 | 0 | 6.38 |
| 2024/25 | FA Cup | Stevenage | 1 | 1 | 60 | 0 | — | 0 | 0 | — |
| 2024/25 | EFL Trophy | Stevenage | 2 | 1 | 82 | 0 | 0 | 0 | 0 | 6.40 |
| 2023/24 | League One | Stevenage | 21 | 11 | 947 | 2 | — | 1 | 0 | 6.76 |
| 2023/24 | League Cup | Stevenage | 1 | 1 | 70 | 0 | — | 1 | 0 | 6.90 |
| 2023/24 | EFL Trophy | Stevenage | 1 | 1 | 86 | 2 | 1 | 0 | 0 | 9.90 |
| 2023/24 | FA Cup | Stevenage | 2 | 1 | 75 | 0 | — | 0 | 0 | — |
| 2023/24 | Premier League - Summer Series | Brentford | 1 | 0 | 19 | 0 | — | 0 | 0 | — |
| 2022/23 | League One | Accrington | 22 | 20 | 1634 | 6 | 1 | 0 | 0 | 6.94 |
| 2022/23 | EFL Trophy | Accrington | 2 | 2 | 180 | 2 | — | 2 | 0 | 8.30 |
| 2022/23 | FA Cup | Accrington | 3 | 2 | 187 | 0 | — | 0 | 0 | 6.55 |
| 2022 | Premier League Cup | Brentford U21 | 3 | 1 | 124 | 1 | — | 0 | 0 | — |
| 2021/22 | League One | Wimbledon | 21 | 9 | 902 | 2 | 1 | 2 | 0 | 6.60 |
| 2021/22 | EFL Trophy | Wimbledon | 1 | 1 | 90 | 2 | — | 0 | 0 | 8.20 |
| 2021/22 | League Cup | Wimbledon | 3 | 2 | 192 | 0 | — | 1 | 0 | 6.50 |
| 2021/22 | FA Cup | Wimbledon | 2 | 0 | 47 | 0 | — | 0 | 0 | — |
| 2020/21 | Championship | Brentford | 2 | 0 | 4 | 0 | — | 0 | 0 | — |
| 2020/21 | FA Cup | Brentford | 1 | 0 | 26 | 0 | — | 0 | 0 | 6.30 |
| 2019 | U18 Premier League | Aston Villa U18 | 7 | 6 | 571 | 2 | — | 0 | 0 | — |
| 2019 | FA Youth Cup | Aston Villa U18 | 1 | 1 | 120 | 0 | — | 0 | 0 | — |
| 2018 | U18 Premier League | Aston Villa U18 | 15 | 11 | 986 | 4 | — | 1 | 0 | — |
| 2018 | FA Youth Cup | Aston Villa U18 | 2 | 0 | 16 | 0 | — | 0 | 0 | — |
| 2018 | UEFA U17 Championship | Scotland U17 | 4 | 0 | 64 | 0 | — | 0 | 0 | — |
| 2017 | U18 Premier League | Aston Villa U18 | 4 | 2 | 193 | 0 | — | 0 | 0 | — |
| 2017 | FA Youth Cup | Aston Villa U18 | 1 | 0 | 29 | 0 | — | 0 | 0 | — |
| 2016 | U18 Premier League | Aston Villa U18 | 2 | 1 | 67 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
No trophies recorded.
