Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Oxford | 2012/13 – 2026/27 | 309 | 15 | 10 |
| Hampton & Richmond | 2017/18 | 14 | 0 | — |
| Kidderminster Harriers | 2014/15 | 0 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 May 2018 | Hampton & Richmond | Oxford United | — |
| 19 Jan 2018 | Oxford United | Hampton & Richmond | Loan |
| 1 Dec 2014 | Kidderminster Harriers | Oxford United | — |
| 20 Nov 2014 | Oxford United | Kidderminster Harriers | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Oxford | 1 | 1 | 95 | 0 | 0 | 0 | 0 | 6.30 |
| 2026/27 | EFL Trophy | Oxford | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 7.05 |
| 2026/27 | League One | Oxford | 3 | 2 | 190 | 0 | 0 | 1 | 0 | 5.48 |
| 2025/26 | League Cup | Oxford | 2 | 2 | 180 | 0 | 0 | 0 | 0 | 7.05 |
| 2025/26 | FA Cup | Oxford | 1 | 1 | 120 | 0 | 0 | 0 | 0 | 6.30 |
| 2025/26 | Championship | Oxford | 39 | 33 | 3074 | 1 | 1 | 2 | 0 | 6.71 |
| 2024/25 | Championship | Oxford | 24 | 18 | 1658 | 1 | 1 | 2 | 0 | 6.87 |
| 2024/25 | FA Cup | Oxford | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2024/25 | League Cup | Oxford | 2 | 2 | 151 | 0 | 0 | 0 | 0 | 7.00 |
| 2023/24 | League One | Oxford | 29 | 27 | 2381 | 1 | 1 | 4 | 0 | 6.93 |
| 2023/24 | League Cup | Oxford | 1 | 0 | 23 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | League One | Oxford | 43 | 42 | 3731 | 3 | 2 | 3 | 0 | 6.81 |
| 2022/23 | EFL Trophy | Oxford | 2 | 1 | 98 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | FA Cup | Oxford | 2 | 1 | 119 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | League Cup | Oxford | 1 | 1 | 90 | 0 | — | 1 | 0 | 6.30 |
| 2021/22 | League One | Oxford | 36 | 35 | 3151 | 1 | 1 | 3 | 0 | 6.79 |
| 2021/22 | EFL Trophy | Oxford | 1 | 0 | 44 | 0 | — | 0 | 0 | — |
| 2021/22 | FA Cup | Oxford | 2 | 1 | 155 | 0 | — | 0 | 0 | — |
| 2020/21 | League One | Oxford | 36 | 35 | 3039 | 6 | 4 | 3 | 0 | 7.09 |
| 2020/21 | League Cup | Oxford | 2 | 2 | 148 | 0 | — | 0 | 0 | 6.80 |
| 2020/21 | FA Cup | Oxford | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2020/21 | EFL Trophy | Oxford | 5 | 4 | 367 | 0 | — | 0 | 0 | 7.32 |
| 2019/20 | League One | Oxford | 19 | 13 | 1258 | 1 | — | 2 | 0 | 6.88 |
| 2019/20 | League Cup | Oxford | 5 | 5 | 450 | 0 | — | 1 | 0 | 6.82 |
| 2019/20 | EFL Trophy | Oxford | 4 | 3 | 314 | 0 | — | 1 | 0 | — |
| 2019/20 | FA Cup | Oxford | 4 | 4 | 390 | 1 | — | 0 | 0 | 7.30 |
| 2018/19 | League One | Oxford | 18 | 16 | 1469 | 0 | — | 2 | 0 | — |
| 2018/19 | League Cup | Oxford | 2 | 1 | 98 | 0 | — | 0 | 0 | 7.00 |
| 2018/19 | EFL Trophy | Oxford | 4 | 2 | 196 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Oxford | 2 | 0 | 18 | 0 | — | 0 | 0 | — |
| 2017/18 | National League N / S | Hampton & Richmond | 14 | 14 | 1260 | 0 | — | 0 | 0 | — |
| 2016/17 | League One | Oxford | 3 | 2 | 236 | 0 | — | 1 | 0 | — |
| 2016/17 | League Cup | Oxford | 2 | 2 | 210 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Oxford | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2015/16 | League Two | Oxford | 1 | 0 | 71 | 0 | — | 0 | 0 | — |
| 2015/16 | League Cup | Oxford | 1 | 1 | 45 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Oxford | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2013/14 | League Two | Oxford | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Oxford | 2 | 0 | 22 | 0 | — | 0 | 0 | — |
| 2012/13 | League Two | Oxford | 1 | 0 | 3 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Unknown | 27 Apr 2025 | 2 May 2025 | 5 |
| Foot Injury | 16 Jan 2025 | 20 Jan 2025 | 4 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League Two (England) | 2015/2016 | 2nd Place |
| EFL Trophy (England) | 2016/2017 | 2nd Place |
| EFL Trophy (England) | 2015/2016 | 2nd Place |
| Piala Presiden (Indonesia) | 2025 | 2nd Place |
