Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Wimbledon | 2024/25 – 2026/27 | 66 | 18 | 3 |
| Oxford | 2018/19 – 2023/24 | 119 | 19 | 6 |
| Middlesbrough | 2019/20 – 2021/22 | 22 | 2 | 1 |
| West Ham | 2015/16 – 2019/20 | 2 | 0 | — |
| West Ham United U23 | 2016 – 2017 | 15 | 6 | — |
| West Ham United U21 | 2017 | 1 | 0 | — |
| Wigan | 2016/17 | 1 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 31 Jan 2022 | Middlesbrough | Oxford United | — |
| 1 Aug 2020 | Oxford United | Middlesbrough | — |
| 9 Jan 2020 | Middlesbrough | Oxford United | Loan |
| 26 Jul 2019 | West Ham | Middlesbrough | — |
| 1 Jul 2019 | Oxford United | West Ham | — |
| 24 Jul 2018 | West Ham | Oxford United | Loan |
| 20 Jan 2017 | West Ham | Wigan | Loan |
| 14 Jan 2025 | Oxford United | AFC Wimbledon | Free Agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Wimbledon | 1 | 1 | 100 | 0 | 0 | 0 | 0 | 6.50 |
| 2026/27 | EFL Trophy | Wimbledon | 1 | 1 | 45 | 0 | 0 | 0 | 0 | 6.21 |
| 2026/27 | League One | Wimbledon | 4 | 2 | 239 | 0 | 0 | 1 | 0 | 6.22 |
| 2025/26 | EFL Trophy | Wimbledon | 2 | 1 | 89 | 2 | 0 | 0 | 0 | 7.70 |
| 2025/26 | League One | Wimbledon | 36 | 33 | 2725 | 12 | 2 | 6 | 1 | 6.88 |
| 2024/25 | League Two | Wimbledon | 22 | 19 | 1224 | 4 | 1 | 4 | 0 | 6.82 |
| 2023/24 | League One | Oxford | 14 | 5 | 489 | 0 | — | 1 | 0 | 6.70 |
| 2023/24 | FA Cup | Oxford | 1 | 0 | 12 | 0 | — | 0 | 0 | — |
| 2022/23 | League One | Oxford | 34 | 29 | 2380 | 4 | 3 | 6 | 0 | 6.75 |
| 2022/23 | League Cup | Oxford | 1 | 0 | 28 | 0 | — | 1 | 0 | 6.30 |
| 2022/23 | EFL Trophy | Oxford | 2 | 0 | 62 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | FA Cup | Oxford | 2 | 1 | 114 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | Oxford | 5 | 2 | 168 | 1 | — | 0 | 0 | 6.90 |
| 2020/21 | Championship | Middlesbrough | 5 | 1 | 138 | 2 | 1 | 0 | 0 | 6.96 |
| 2020/21 | League Cup | Middlesbrough | 2 | 1 | 107 | 0 | — | 0 | 0 | 6.95 |
| 2020/21 | FA Cup | Middlesbrough | 1 | 1 | 45 | 0 | — | 0 | 0 | 6.30 |
| 2019/20 | League One | Oxford | 14 | 11 | 1019 | 5 | 3 | 4 | 0 | 7.26 |
| 2019/20 | Championship | Middlesbrough | 13 | 5 | 420 | 0 | — | 2 | 1 | 6.24 |
| 2019/20 | FA Cup | Oxford | 2 | 2 | 152 | 0 | — | 0 | 0 | 6.50 |
| 2019/20 | League Cup | Middlesbrough | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2018/19 | League One | Oxford | 34 | 25 | 2111 | 6 | — | 10 | 1 | — |
| 2018/19 | League Cup | Oxford | 1 | 1 | 63 | 1 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Oxford | 5 | 3 | 292 | 1 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Oxford | 4 | 3 | 293 | 1 | — | 1 | 0 | — |
| 2017 | Premier League 2 | West Ham United U23 | 12 | 11 | 940 | 6 | — | 4 | 0 | — |
| 2017 | EFL Trophy | West Ham United U21 | 1 | 0 | 20 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Wigan | 1 | 0 | 14 | 0 | — | 0 | 0 | 6.50 |
| 2016 | EFL Trophy | West Ham United U23 | 3 | 3 | 270 | 0 | — | 1 | 0 | — |
| 2016/17 | UEFA Europa League | West Ham | 1 | 0 | 15 | 0 | — | 0 | 0 | — |
| 2016/17 | Club Friendlies | West Ham | 1 | 0 | 7 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Red Card | 18 Dec 2019 | 26 Dec 2019 | 8 |
| Muscle Injury | 4 Nov 2019 | 12 Dec 2019 | 38 |
| Injury | 1 Apr 2025 | 24 Apr 2025 | 23 |
| Injury | 9 Jan 2021 | 24 Feb 2022 | 411 |
| Injury | 7 Nov 2020 | 27 Dec 2020 | 50 |
Trophies
No trophies recorded.
