Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| St Johnstone | 2026/27 | 3 | 0 | 0 |
| Harrogate Town | 2022/23 – 2024/25 | 82 | 3 | 3 |
| Bradford | 2020/21 – 2022/23 | 52 | 2 | 3 |
| Como | 2020/21 | 3 | 0 | — |
| Everton U23 | 2016 – 2019 | 59 | 3 | — |
| Everton U21 | 2017 – 2019 | 8 | 0 | — |
| Everton | 2016/17 | 0 | 0 | — |
| Bury | 2015/16 | 2 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 14 Jun 2023 | Bradford | Harrogate Town | — |
| 13 Jun 2023 | Harrogate Town | Bradford | — |
| 17 Jan 2023 | Bradford | Harrogate Town | Loan |
| 16 Jan 2021 | Como | Bradford | Free |
| 14 Oct 2020 | Everton | Como | Free |
| 1 Aug 2016 | Everton | Everton U23 | — |
| 2 Jan 2016 | Bury | Everton | — |
| 3 Jul 2025 | Harrogate Town | ST Johnstone | Free Transfer |
| 1 Jul 2025 | Harrogate Town | ST Johnstone | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | Premiership | St Johnstone | 3 | 3 | 270 | 0 | 0 | 0 | 0 | 4.04 |
| 2024/25 | League Two | Harrogate Town | 15 | 14 | 1242 | 0 | 1 | 2 | 0 | 6.95 |
| 2024/25 | League Cup | Harrogate Town | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 6.50 |
| 2024/25 | EFL Trophy | Harrogate Town | 2 | 0 | 40 | 0 | 0 | 0 | 0 | 6.70 |
| 2024/25 | FA Cup | Harrogate Town | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 7.00 |
| 2023/24 | League Two | Harrogate Town | 37 | 36 | 3255 | 2 | — | 1 | 0 | 7.12 |
| 2023/24 | FA Cup | Harrogate Town | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2023/24 | League Cup | Harrogate Town | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.30 |
| 2023/24 | EFL Trophy | Harrogate Town | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | League Two | Harrogate Town | 21 | 21 | 1815 | 0 | 2 | 2 | 0 | 7.09 |
| 2022/23 | League Two | Bradford | 18 | 18 | 1620 | 0 | 2 | 0 | 0 | 7.09 |
| 2022/23 | EFL Trophy | Bradford | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.20 |
| 2022/23 | FA Cup | Bradford | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2021/22 | League Two | Bradford | 23 | 18 | 1769 | 2 | 1 | 1 | 0 | 6.99 |
| 2021/22 | EFL Trophy | Bradford | 3 | 2 | 197 | 0 | — | 0 | 0 | 6.95 |
| 2021/22 | FA Cup | Bradford | 2 | 1 | 91 | 0 | — | 0 | 0 | — |
| 2020/21 | League Two | Bradford | 3 | 0 | 41 | 0 | — | 0 | 0 | 6.80 |
| 2020/21 | Serie C - Girone C | Como | 3 | 1 | 106 | 0 | — | 1 | 0 | — |
| 2019 | Premier League 2 | Everton U23 | 18 | 18 | 1620 | 1 | — | 2 | 0 | — |
| 2019 | EFL Trophy | Everton U21 | 4 | 4 | 360 | 0 | — | 0 | 0 | — |
| 2019 | Premier League International Cup | Everton U23 | 3 | 3 | 263 | 0 | — | 0 | 0 | — |
| 2018 | Premier League 2 | Everton U23 | 11 | 4 | 443 | 0 | — | 0 | 0 | — |
| 2018 | EFL Trophy | Everton U21 | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018 | Premier League International Cup | Everton U23 | 2 | 2 | 180 | 0 | — | 1 | 0 | — |
| 2017 | Premier League 2 | Everton U23 | 15 | 14 | 1232 | 1 | — | 3 | 0 | — |
| 2017 | EFL Trophy | Everton U21 | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2017 | Premier League International Cup | Everton U23 | 3 | 2 | 224 | 0 | — | 0 | 0 | — |
| 2016 | Premier League 2 | Everton U23 | 4 | 2 | 221 | 1 | — | 2 | 0 | — |
| 2016 | EFL Trophy | Everton U23 | 3 | 3 | 241 | 0 | — | 0 | 0 | — |
| 2015/16 | League Cup | Bury | 1 | 0 | 42 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Bury | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
| Competition | Season | Place |
|---|---|---|
| Premier League 2 (England) | 2018/2019 | Winner |
| Premier League 2 (England) | 2016/2017 | Winner |
| Premier League Cup (England) | 2018/2019 | Winner |
