Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Reading | 2023/24 – 2026/27 | 158 | 32 | 32 |
| Wycombe | 2021/22 – 2023/24 | 63 | 11 | 6 |
| Sheffield Wed | 2021/22 | 24 | 1 | — |
| Middlesbrough | 2017/18 – 2020/21 | 92 | 14 | 7 |
| Rotherham | 2020/21 | 20 | 2 | — |
| Middlesbrough U21 | 2017 – 2018 | 2 | 0 | — |
| Yeovil Town | 2017/18 | 22 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 21 Jul 2023 | Wycombe | Reading | Free |
| 31 Jan 2022 | Middlesbrough | Wycombe | — |
| 30 Jan 2022 | Sheffield Wednesday | Middlesbrough | — |
| 27 Jul 2021 | Middlesbrough | Sheffield Wednesday | Loan |
| 1 Jul 2021 | Rotherham | Middlesbrough | — |
| 1 Feb 2021 | Middlesbrough | Rotherham | Loan |
| 1 Jul 2018 | Yeovil Town | Middlesbrough | — |
| 5 Jan 2018 | Middlesbrough | Yeovil Town | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Reading | 1 | 1 | 101 | 0 | 0 | 0 | 0 | 3.45 |
| 2026/27 | League One | Reading | 11 | 11 | 990 | 0 | 2 | 0 | 0 | 7.18 |
| 2025/26 | Friendlies Clubs | Reading | 1 | 1 | 90 | — | 1 | 0 | 0 | 9.30 |
| 2025/26 | League Cup | Reading | 1 | 0 | 24 | 0 | 0 | 0 | 0 | 6.90 |
| 2025/26 | League One | Reading | 46 | 46 | 4076 | 11 | 11 | 5 | 0 | 7.43 |
| 2024/25 | League One | Reading | 46 | 46 | 4140 | 9 | 6 | 4 | 0 | 7.49 |
| 2024/25 | FA Cup | Reading | 1 | 1 | 90 | — | 1 | 0 | 0 | 9.30 |
| 2024/25 | League Cup | Reading | 1 | 1 | 90 | 1 | 0 | 0 | 0 | 7.90 |
| 2024/25 | EFL Trophy | Reading | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 9.30 |
| 2023/24 | League One | Reading | 42 | 39 | 3561 | 10 | 8 | 5 | 0 | 7.37 |
| 2023/24 | EFL Trophy | Reading | 4 | 2 | 180 | 0 | 1 | 0 | 0 | 7.40 |
| 2023/24 | FA Cup | Reading | 2 | 1 | 122 | 1 | 1 | 0 | 0 | 7.30 |
| 2023/24 | League Cup | Reading | 1 | 1 | 46 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | League One | Wycombe | 44 | 41 | 3639 | 9 | 6 | 5 | 0 | 7.26 |
| 2022/23 | League Cup | Wycombe | 2 | 0 | 45 | 0 | — | 0 | 0 | 6.60 |
| 2022/23 | EFL Trophy | Wycombe | 1 | 0 | 52 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Wycombe | 1 | 1 | 64 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | Wycombe | 15 | 11 | 985 | 2 | — | 2 | 1 | 6.87 |
| 2021/22 | League One | Sheffield Wed | 18 | 15 | 1286 | 0 | — | 1 | 0 | 6.87 |
| 2021/22 | League Cup | Sheffield Wed | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.90 |
| 2021/22 | FA Cup | Sheffield Wed | 2 | 2 | 180 | 0 | — | 1 | 0 | — |
| 2021/22 | EFL Trophy | Sheffield Wed | 3 | 3 | 250 | 1 | — | 0 | 0 | 7.30 |
| 2020/21 | Championship | Rotherham | 20 | 18 | 1637 | 2 | — | 1 | 0 | 6.51 |
| 2020/21 | League Cup | Middlesbrough | 2 | 2 | 163 | 0 | 1 | 0 | 0 | 6.80 |
| 2020/21 | FA Cup | Middlesbrough | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.30 |
| 2020/21 | Championship | Middlesbrough | 12 | 4 | 370 | 2 | — | 0 | 0 | 6.51 |
| 2019/20 | Championship | Middlesbrough | 40 | 28 | 2742 | 7 | 2 | 6 | 0 | 6.83 |
| 2019/20 | FA Cup | Middlesbrough | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2018/19 | Championship | Middlesbrough | 28 | 19 | 1798 | 3 | 3 | 3 | 0 | 6.93 |
| 2018 | EFL Trophy | Middlesbrough U21 | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | League Cup | Middlesbrough | 3 | 3 | 270 | 1 | — | 0 | 0 | 7.35 |
| 2018/19 | FA Cup | Middlesbrough | 3 | 2 | 224 | 1 | 1 | 0 | 0 | 7.20 |
| 2017/18 | League Two | Yeovil Town | 20 | 18 | 1657 | 3 | — | 1 | 0 | — |
| 2017/18 | FA Cup | Yeovil Town | 2 | 1 | 95 | 0 | — | 0 | 0 | 6.50 |
| 2017 | EFL Trophy | Middlesbrough U21 | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | League Cup | Middlesbrough | 2 | 1 | 73 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Head Injury | 27 Nov 2018 | 29 Nov 2018 | 2 |
| Groin Injury | 23 Feb 2019 | 28 Feb 2019 | 5 |
| Muscle Injury | 8 Dec 2018 | 13 Dec 2018 | 5 |
| Hernia | 2 Apr 2019 | 25 Apr 2019 | 23 |
Trophies
No trophies recorded.
