Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Tranmere | 2024/25 – 2026/27 | 61 | 9 | 3 |
| Doncaster | 2023/24 – 2025/26 | 107 | 30 | 8 |
| Cambridge | 2020/21 – 2022/23 | 146 | 35 | 12 |
| Macclesfield | 2019/20 | 36 | 7 | 3 |
| Kidderminster Harriers | 2016/17 – 2018/19 | 72 | 30 | — |
| York | 2018/19 | 10 | 0 | — |
| Nuneaton Town | 2015/16 – 2016/17 | 47 | 18 | — |
| Alfreton Town | 2014/15 – 2015/16 | 33 | 6 | — |
| Hartlepool | 2014/15 | 4 | 1 | — |
| Sheffield Utd | 2012/13 – 2013/14 | 23 | 0 | — |
| Harrogate Town | 2013/14 | 8 | 0 | — |
| FC Halifax Town | 2013/14 | 11 | 2 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jul 2023 | Cambridge United | Doncaster | Free |
| 1 Jul 2019 | Kidderminster Harriers | Macclesfield | Free |
| 7 Jan 2019 | York | Kidderminster Harriers | — |
| 12 Nov 2018 | Kidderminster Harriers | York | Loan |
| 21 Mar 2017 | Nuneaton Town | Kidderminster Harriers | — |
| 8 Feb 2016 | Alfreton Town | Nuneaton Town | Free |
| 16 Jan 2015 | Hartlepool | Alfreton Town | Free |
| 21 Nov 2014 | Sheffield Utd | Hartlepool | Loan |
| 15 Aug 2014 | Sheffield Utd | Alfreton Town | Loan |
| 27 Apr 2014 | Harrogate Town | Sheffield Utd | — |
| 13 Feb 2014 | Sheffield Utd | Harrogate Town | Loan |
| 6 Jan 2014 | FC Halifax Town | Sheffield Utd | — |
| 11 Nov 2013 | Sheffield Utd | FC Halifax Town | Loan |
| 1 Sept 2025 | Doncaster | Tranmere | Transfer |
| 30 Aug 2025 | Doncaster | Tranmere | Transfer |
| 1 Aug 2020 | Macclesfield | Cambridge United | Free |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Tranmere | 1 | 1 | 72 | 0 | 0 | 0 | 0 | 6.20 |
| 2026/27 | League Two | Tranmere | 12 | 9 | 803 | 1 | 1 | 2 | 0 | 6.69 |
| 2025/26 | League One | Doncaster | 1 | 1 | 78 | — | 0 | 0 | 0 | 6.30 |
| 2025/26 | League Cup | Doncaster | 2 | 0 | 44 | 0 | 0 | 0 | 0 | 6.25 |
| 2025/26 | EFL Trophy | Tranmere | 4 | 2 | 178 | 1 | 0 | 0 | 0 | 6.80 |
| 2025/26 | League Two | Tranmere | 37 | 28 | 2477 | 5 | 2 | 3 | 0 | 6.67 |
| 2024/25 | League Cup | Doncaster | 2 | 1 | 103 | 0 | 0 | 0 | 0 | 6.55 |
| 2024/25 | FA Cup | Doncaster | 4 | 0 | 165 | 0 | 0 | 0 | 0 | 6.90 |
| 2024/25 | EFL Trophy | Tranmere | 4 | 3 | 275 | 2 | 0 | 0 | 0 | 7.30 |
| 2024/25 | League Two | Doncaster | 39 | 29 | 1849 | 4 | 1 | 0 | 0 | 6.74 |
| 2024/25 | FA Cup | Tranmere | 1 | 0 | 28 | — | 0 | 0 | 0 | 6.90 |
| 2024/25 | League Cup | Tranmere | 2 | 2 | 103 | — | 0 | 0 | 0 | 6.55 |
| 2024/25 | EFL Trophy | Doncaster | 4 | 3 | 275 | 2 | 0 | 0 | 0 | 7.30 |
| 2023/24 | League Two | Doncaster | 47 | 43 | 3864 | 20 | 6 | 6 | 0 | 7.07 |
| 2023/24 | League Cup | Doncaster | 2 | 1 | 94 | 1 | — | 0 | 0 | 6.95 |
| 2023/24 | FA Cup | Doncaster | 2 | 2 | 210 | 1 | — | 0 | 0 | — |
| 2023/24 | EFL Trophy | Doncaster | 4 | 1 | 172 | 2 | 1 | 0 | 0 | 7.17 |
| 2022/23 | League One | Cambridge | 44 | 36 | 2477 | 6 | 2 | 1 | 0 | 6.64 |
| 2022/23 | League Cup | Cambridge | 2 | 2 | 154 | 0 | — | 0 | 0 | 6.25 |
| 2022/23 | EFL Trophy | Cambridge | 2 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Cambridge | 3 | 3 | 300 | 0 | — | 0 | 0 | — |
| 2021/22 | League One | Cambridge | 38 | 34 | 3075 | 14 | 3 | 2 | 0 | 6.89 |
| 2021/22 | EFL Trophy | Cambridge | 2 | 0 | 17 | 0 | — | 0 | 0 | 6.25 |
| 2021/22 | League Cup | Cambridge | 2 | 0 | 33 | 0 | — | 0 | 0 | 6.50 |
| 2021/22 | FA Cup | Cambridge | 4 | 4 | 360 | 1 | — | 0 | 0 | — |
| 2020/21 | League Two | Cambridge | 44 | 33 | 3043 | 14 | 7 | 8 | 0 | 6.97 |
| 2020/21 | League Cup | Cambridge | 2 | 2 | 164 | 0 | — | 0 | 0 | 6.70 |
| 2020/21 | EFL Trophy | Cambridge | 3 | 2 | 180 | 0 | — | 0 | 0 | 6.53 |
| 2019/20 | League Two | Macclesfield | 33 | 25 | 2321 | 6 | 3 | 0 | 0 | 6.80 |
| 2019/20 | League Cup | Macclesfield | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2019/20 | EFL Trophy | Macclesfield | 2 | 2 | 136 | 1 | — | 0 | 0 | — |
| 2018/19 | National League N / S | York | 9 | 4 | 338 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Trophy | York | 1 | 0 | 5 | 0 | — | 0 | 0 | — |
| 2018/19 | National League N / S | Kidderminster Harriers | 17 | 11 | 945 | 4 | — | 0 | 0 | — |
| 2017/18 | National League N / S | Kidderminster Harriers | 39 | 37 | 3124 | 19 | — | 0 | 0 | — |
| 2017/18 | FA Trophy | Kidderminster Harriers | 3 | 2 | 209 | 0 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Kidderminster Harriers | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2016/17 | National League N / S | Kidderminster Harriers | 11 | 11 | 942 | 6 | — | 0 | 0 | — |
| 2016/17 | National League N / S | Nuneaton Town | 31 | 27 | 2437 | 14 | — | 0 | 0 | — |
| 2016/17 | FA Trophy | Nuneaton Town | 3 | 3 | 262 | 2 | — | 0 | 0 | — |
| 2015/16 | National League N / S | Nuneaton Town | 13 | 6 | 663 | 2 | — | 0 | 0 | — |
| 2015/16 | National League N / S | Alfreton Town | 17 | 8 | 793 | 2 | — | 0 | 0 | — |
| 2014/15 | League Two | Hartlepool | 4 | 3 | 275 | 1 | — | 0 | 0 | — |
| 2014/15 | National League | Alfreton Town | 16 | 14 | 1176 | 4 | — | 1 | 0 | — |
| 2013/14 | National League N / S | Harrogate Town | 8 | 0 | 227 | 0 | — | 0 | 0 | — |
| 2013/14 | National League | FC Halifax Town | 10 | 6 | 491 | 2 | — | 1 | 0 | — |
| 2013/14 | League One | Sheffield Utd | 4 | 1 | 136 | 0 | — | 0 | 0 | — |
| 2013/14 | FA Trophy | FC Halifax Town | 1 | 1 | 70 | 0 | — | 0 | 0 | — |
| 2013/14 | EFL Trophy | Sheffield Utd | 2 | 1 | 95 | 0 | — | 0 | 0 | — |
| 2012/13 | League One | Sheffield Utd | 14 | 2 | 347 | 0 | — | 0 | 0 | — |
| 2012/13 | EFL Trophy | Sheffield Utd | 2 | 0 | 21 | 0 | — | 0 | 0 | — |
| 2012/13 | FA Cup | Sheffield Utd | 1 | 0 | 15 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Injury | 18 Apr 2025 | Ongoing | 553 |
| Inactive | 15 Mar 2025 | 4 Apr 2025 | 20 |
Trophies
| Competition | Season | Place |
|---|---|---|
| West Riding County Cup (England) | 2013/2014 | 2nd Place |
| League Two (England) | 2024/2025 | Winner |
| League Two (England) | 2020/2021 | 2nd Place |
