Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Doncaster | 2022/23 – 2026/27 | 140 | 5 | 10 |
| Hartlepool | 2020/21 – 2022/23 | 102 | 4 | 4 |
| South Shields | 2020/21 | 1 | 0 | — |
| Newcastle | 2014/15 – 2019/20 | 8 | 0 | — |
| Newcastle United U21 | 2017 – 2019 | 7 | 0 | — |
| Newcastle United U23 | 2017 – 2019 | 3 | 0 | — |
| Crewe | 2017/18 – 2018/19 | 10 | 0 | — |
| Coventry | 2016/17 | 20 | 1 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jul 2023 | Hartlepool | Doncaster | Free |
| 1 Jul 2020 | Newcastle | South Shields | Free |
| 26 Jan 2019 | Newcastle | Crewe | Loan |
| 1 Jul 2018 | Crewe | Newcastle | — |
| 31 Jan 2018 | Newcastle | Crewe | Loan |
| 4 Jan 2017 | Coventry | Newcastle | — |
| 31 Aug 2016 | Newcastle | Coventry | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Doncaster | 2 | 2 | 141 | 0 | 0 | 0 | 0 | 6.60 |
| 2026/27 | League One | Doncaster | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 6.75 |
| 2025/26 | EFL Trophy | Doncaster | 2 | 2 | 45 | 0 | 0 | 0 | 0 | 6.70 |
| 2025/26 | FA Cup | Doncaster | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 6.70 |
| 2025/26 | League One | Doncaster | 32 | 28 | 2422 | 0 | 1 | 5 | 0 | 6.73 |
| 2024/25 | League Two | Doncaster | 41 | 41 | 3385 | 3 | 5 | 6 | 0 | 7.04 |
| 2024/25 | FA Cup | Doncaster | 1 | 1 | 80 | — | 0 | 0 | 0 | 6.70 |
| 2024/25 | League Cup | Doncaster | 2 | 2 | 34 | — | 0 | 0 | 0 | 6.30 |
| 2024/25 | EFL Trophy | Doncaster | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.90 |
| 2023/24 | League Two | Doncaster | 28 | 25 | 2207 | 0 | 3 | 7 | 0 | 6.80 |
| 2023/24 | EFL Trophy | Doncaster | 2 | 1 | 103 | 0 | — | 0 | 0 | 6.80 |
| 2022/23 | League Two | Hartlepool | 26 | 23 | 1919 | 2 | 1 | 3 | 1 | 6.55 |
| 2022/23 | League Two | Doncaster | 25 | 25 | 1872 | 2 | 1 | 3 | 1 | 6.55 |
| 2022/23 | EFL Trophy | Hartlepool | 2 | 1 | 134 | 0 | — | 1 | 0 | — |
| 2021/22 | League Two | Hartlepool | 37 | 37 | 3179 | 2 | 3 | 6 | 2 | 6.85 |
| 2021/22 | EFL Trophy | Hartlepool | 3 | 3 | 270 | 0 | — | 0 | 0 | 7.10 |
| 2021/22 | League Cup | Hartlepool | 1 | 1 | 90 | 0 | — | 0 | 0 | 8.30 |
| 2021/22 | FA Cup | Hartlepool | 3 | 3 | 270 | 0 | — | 0 | 0 | 7.20 |
| 2020/21 | National League | Hartlepool | 30 | 30 | 2638 | 0 | — | 2 | 0 | — |
| 2020/21 | FA Cup | South Shields | 1 | 1 | 89 | 0 | — | 0 | 0 | — |
| 2019 | EFL Trophy | Newcastle United U21 | 3 | 3 | 270 | 0 | — | 1 | 0 | — |
| 2019 | Premier League International Cup | Newcastle United U23 | 2 | 2 | 180 | 0 | — | 1 | 0 | — |
| 2019/20 | Premier League Asia Trophy | Newcastle | 2 | 2 | 92 | 0 | — | 0 | 0 | — |
| 2018/19 | League Two | Crewe | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018 | EFL Trophy | Newcastle United U21 | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | League Cup | Newcastle | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2018/19 | FA Cup | Newcastle | 2 | 2 | 210 | 0 | — | 0 | 0 | 6.60 |
| 2017/18 | League Two | Crewe | 9 | 9 | 799 | 0 | — | 1 | 0 | — |
| 2017 | EFL Trophy | Newcastle United U21 | 3 | 3 | 252 | 0 | — | 0 | 0 | — |
| 2017/18 | League Cup | Newcastle | 1 | 1 | 58 | 0 | — | 0 | 0 | — |
| 2017 | Premier League International Cup | Newcastle United U23 | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2016/17 | League One | Coventry | 16 | 16 | 1403 | 0 | — | 4 | 0 | — |
| 2016/17 | FA Cup | Coventry | 2 | 2 | 180 | 1 | — | 1 | 0 | — |
| 2016/17 | EFL Trophy | Coventry | 2 | 2 | 136 | 0 | — | 0 | 0 | — |
| 2016/17 | League Cup | Newcastle | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | Premier League | Newcastle | 1 | 0 | 6 | 0 | — | 0 | 0 | 6.20 |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Facial Injury | 3 Aug 2025 | Ongoing | 447 |
| Knock | 5 Oct 2018 | 28 Dec 2018 | 84 |
| Groin Injury | 8 May 2017 | 17 Aug 2017 | 101 |
Trophies
| Competition | Season | Place |
|---|---|---|
| Championship (England) | 2016/2017 | Winner |
| Premier League Cup (England) | 2018/2019 | 2nd Place |
| League Two (England) | 2024/2025 | Winner |
