Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Northampton | 2026/27 | 7 | 0 | 0 |
| Oxford | 2023/24 – 2025/26 | 30 | 1 | 2 |
| Plymouth | 2025/26 | 31 | 1 | 3 |
| Wigan | 2024/25 | 18 | 1 | 1 |
| Blackpool | 2021/22 – 2023/24 | 39 | 5 | 4 |
| Portsmouth | 2022/23 | 50 | 2 | 6 |
| Crewe | 2016/17 – 2021/22 | 109 | 15 | 4 |
| Altrincham | 2018/19 | 13 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Feb 2024 | Blackpool | Oxford United | — |
| 1 Jul 2023 | Portsmouth | Blackpool | — |
| 7 Aug 2022 | Blackpool | Portsmouth | Loan |
| 13 Jan 2022 | Crewe | Blackpool | € 600K |
| 1 Sept 2021 | Crewe | Blackpool | Loan |
| 7 Dec 2018 | Altrincham | Crewe | — |
| 24 Aug 2018 | Crewe | Altrincham | Loan |
| 3 Feb 2025 | Oxford United | Wigan | Loan |
| 1 Jul 2025 | Wigan | Oxford United | Back from Loan |
| 1 Sept 2025 | Oxford United | Plymouth | Loan |
| 29 Jun 2026 | Oxford United | Dale Owen | Free agent |
| 31 Aug 2026 | Oxford United | Northampton | Free agent |
| 30 May 2026 | Plymouth | Oxford United | Return from loan |
| 30 Aug 2026 | Oxford United | Northampton | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | EFL Trophy | Northampton | 1 | 1 | 72 | 0 | 0 | 0 | 0 | 5.97 |
| 2026/27 | League Two | Northampton | 6 | 4 | 398 | 0 | 0 | 0 | 0 | 6.55 |
| 2025/26 | EFL Trophy | Plymouth | 3 | 2 | 180 | 0 | 0 | 0 | 0 | 6.45 |
| 2025/26 | League One | Plymouth | 28 | 22 | 1901 | 1 | 3 | 9 | 0 | 6.82 |
| 2024/25 | League One | Wigan | 17 | 15 | 1296 | 1 | 1 | 4 | 0 | 6.81 |
| 2024/25 | Championship | Oxford | 11 | 4 | 348 | 0 | 0 | 0 | 0 | 6.51 |
| 2024/25 | FA Cup | Wigan | 1 | 0 | 29 | 0 | 0 | 0 | 0 | 7.00 |
| 2024/25 | League Cup | Oxford | 1 | 1 | 61 | 0 | 0 | 0 | 0 | 6.20 |
| 2023/24 | League One | Oxford | 18 | 14 | 1180 | 1 | 2 | 2 | 0 | 6.85 |
| 2023/24 | League One | Blackpool | 23 | 10 | 1054 | 2 | 2 | 1 | 0 | 6.85 |
| 2023/24 | FA Cup | Blackpool | 4 | 2 | 176 | 1 | — | 0 | 0 | 6.70 |
| 2023/24 | League Cup | Blackpool | 1 | 1 | 74 | 0 | — | 0 | 0 | 6.70 |
| 2023/24 | EFL Trophy | Blackpool | 4 | 4 | 324 | 1 | 1 | 1 | 0 | 7.28 |
| 2022/23 | League One | Portsmouth | 43 | 36 | 3081 | 2 | 5 | 6 | 0 | 6.56 |
| 2022/23 | League Cup | Portsmouth | 2 | 1 | 85 | 0 | — | 0 | 0 | 6.80 |
| 2022/23 | EFL Trophy | Portsmouth | 4 | 3 | 298 | 0 | 1 | 2 | 0 | 7.07 |
| 2022/23 | FA Cup | Portsmouth | 1 | 1 | 87 | 0 | — | 0 | 0 | 6.70 |
| 2021/22 | League One | Crewe | 2 | 2 | 131 | 0 | — | 0 | 0 | 6.30 |
| 2021/22 | League Cup | Crewe | 1 | 1 | 90 | 0 | — | 1 | 0 | 6.70 |
| 2021/22 | Championship | Blackpool | 7 | 4 | 347 | 1 | 1 | 0 | 0 | 6.75 |
| 2020/21 | League One | Crewe | 43 | 32 | 2874 | 11 | 2 | 4 | 0 | 6.91 |
| 2020/21 | League Cup | Crewe | 1 | 1 | 90 | 0 | — | 1 | 0 | 7.30 |
| 2020/21 | FA Cup | Crewe | 2 | 0 | 76 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Crewe | 2 | 2 | 180 | 1 | — | 0 | 0 | 7.20 |
| 2019/20 | League Two | Crewe | 27 | 7 | 912 | 0 | 1 | 4 | 0 | 6.66 |
| 2019/20 | EFL Trophy | Crewe | 3 | 3 | 264 | 1 | — | 0 | 0 | — |
| 2019/20 | FA Cup | Crewe | 4 | 3 | 226 | 1 | — | 0 | 0 | 7.20 |
| 2019/20 | League Cup | Crewe | 2 | 2 | 180 | 0 | 1 | 0 | 0 | 7.30 |
| 2018/19 | League Two | Crewe | 16 | 0 | 286 | 1 | — | 1 | 0 | — |
| 2018/19 | National League N / S | Altrincham | 12 | 10 | 818 | 3 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Altrincham | 1 | 1 | 55 | 0 | — | 0 | 0 | — |
| 2017/18 | League Two | Crewe | 4 | 0 | 89 | 0 | — | 1 | 0 | — |
| 2017/18 | EFL Trophy | Crewe | 2 | 0 | 29 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Muscle Injury | 13 Jan 2025 | 30 Jan 2025 | 17 |
| Unknown | 10 Aug 2024 | 23 Aug 2024 | 13 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League Two (England) | 2019/2020 | 2nd Place |
| Piala Presiden (Indonesia) | 2025 | 2nd Place |
