Clubs
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 23 Jul 2021 | Cambridge United | Wrexham | Free |
| 1 Jul 2020 | Tranmere | Cambridge United | — |
| 1 Feb 2020 | Tranmere | Cambridge United | Loan |
| 25 Jun 2018 | Swindon Town | Tranmere | — |
| 27 Jun 2017 | Morecambe | Swindon Town | — |
| 2 Aug 2014 | Huddersfield | Morecambe | Free |
| 24 Jan 2014 | Huddersfield | Vauxhall Motors | Loan |
| 30 Jun 2025 | Wrexham | Wigan | Loan |
| 4 Jan 2026 | Wigan | Wrexham | Return from loan |
| 29 Jun 2026 | Wrexham | Mullin Paul | Free agent |
| 29 Jan 2026 | Wrexham | Bradford | Loan |
| 28 Jul 2026 | Wrexham | Rotherham | Free agent |
| 29 Jun 2026 | Bradford | Wrexham | Return from loan |
| 27 Jul 2026 | Wrexham | Rotherham | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Rotherham | 1 | 1 | 62 | 0 | 0 | 0 | 0 | 6.30 |
| 2026/27 | EFL Trophy | Rotherham | 1 | 0 | 20 | 0 | 0 | 0 | 0 | 6.66 |
| 2026/27 | League Two | Rotherham | 12 | 10 | 866 | 6 | 0 | 1 | 0 | 6.84 |
| 2025/26 | League Cup | Wigan | 3 | 2 | 148 | 1 | 0 | 0 | 0 | 6.53 |
| 2025/26 | EFL Trophy | Wigan | 1 | 1 | 85 | 0 | 0 | 0 | 0 | 6.00 |
| 2025/26 | League One | Wigan | 20 | 7 | 680 | 4 | 1 | 1 | 0 | 6.71 |
| 2025/26 | League One | Bradford | 9 | 2 | 277 | 0 | 0 | 2 | 0 | 6.33 |
| 2024/25 | League One | Wrexham | 26 | 9 | 1152 | 3 | 0 | 3 | 0 | 6.72 |
| 2024/25 | EFL Trophy | Wrexham | 5 | 2 | 224 | 2 | 1 | 0 | 0 | 7.08 |
| 2024/25 | FA Cup | Wrexham | 1 | 1 | 90 | 0 | 0 | 1 | 0 | 7.30 |
| 2023/24 | League Two | Wrexham | 38 | 34 | 3017 | 24 | 7 | 7 | 0 | 7.52 |
| 2023/24 | EFL Trophy | Wrexham | 1 | 0 | 29 | 1 | — | 0 | 0 | 7.30 |
| 2023/24 | FA Cup | Wrexham | 4 | 4 | 346 | 1 | — | 0 | 0 | 6.97 |
| 2023/24 | Friendlies Clubs | Wrexham | 1 | 1 | 19 | 0 | — | 0 | 0 | — |
| 2022/23 | National League | Wrexham | 46 | 46 | 3971 | 38 | — | 2 | 0 | — |
| 2022/23 | FA Cup | Wrexham | 7 | 6 | 534 | 9 | — | 1 | 0 | 7.77 |
| 2021/22 | National League | Wrexham | 39 | 39 | 3401 | 28 | — | 5 | 1 | — |
| 2021/22 | FA Trophy | Wrexham | 3 | 2 | 206 | 2 | — | 0 | 0 | — |
| 2021/22 | FA Cup | Wrexham | 2 | 2 | 180 | 2 | — | 0 | 0 | — |
| 2020/21 | League Two | Cambridge | 46 | 45 | 3936 | 32 | 4 | 5 | 0 | 7.12 |
| 2020/21 | League Cup | Cambridge | 2 | 1 | 98 | 0 | — | 1 | 0 | 6.60 |
| 2020/21 | EFL Trophy | Cambridge | 2 | 1 | 92 | 2 | — | 0 | 0 | 7.50 |
| 2019/20 | League Two | Cambridge | 6 | 5 | 445 | 2 | — | 0 | 0 | 6.78 |
| 2019/20 | League One | Tranmere | 20 | 9 | 904 | 3 | 1 | 4 | 0 | 6.73 |
| 2019/20 | League Cup | Tranmere | 1 | 0 | 28 | 0 | — | 0 | 0 | 6.90 |
| 2019/20 | EFL Trophy | Tranmere | 2 | 1 | 98 | 0 | — | 1 | 0 | 6.20 |
| 2019/20 | FA Cup | Tranmere | 4 | 0 | 90 | 2 | — | 0 | 0 | 6.50 |
| 2019/20 | Club Friendlies | Tranmere | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2018/19 | League Two | Tranmere | 22 | 8 | 828 | 5 | — | 2 | 0 | — |
| 2018/19 | League Cup | Tranmere | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Tranmere | 1 | 1 | 81 | 1 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Tranmere | 5 | 4 | 262 | 1 | 1 | 0 | 0 | 7.23 |
| 2018/19 | Club Friendlies | Tranmere | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2017/18 | League Two | Swindon | 40 | 20 | 2047 | 6 | — | 5 | 0 | — |
| 2017/18 | League Cup | Swindon | 1 | 1 | 90 | 1 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Swindon | 4 | 3 | 246 | 2 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Swindon | 2 | 2 | 144 | 1 | — | 1 | 0 | 7.20 |
| 2016/17 | League Two | Morecambe | 40 | 28 | 2500 | 8 | — | 7 | 0 | — |
| 2016/17 | League Cup | Morecambe | 2 | 1 | 73 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Morecambe | 3 | 1 | 146 | 2 | — | 1 | 0 | — |
| 2016/17 | FA Cup | Morecambe | 2 | 0 | 51 | 0 | — | 0 | 0 | — |
| 2015/16 | League Two | Morecambe | 40 | 11 | 1399 | 9 | — | 3 | 0 | — |
| 2015/16 | EFL Trophy | Morecambe | 4 | 4 | 308 | 1 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Morecambe | 2 | 0 | 45 | 0 | — | 0 | 0 | — |
| 2015/16 | League Cup | Morecambe | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2014/15 | League Two | Morecambe | 42 | 20 | 1877 | 8 | — | 4 | 0 | — |
| 2014/15 | League Cup | Morecambe | 1 | 0 | 29 | 0 | — | 0 | 0 | — |
| 2014/15 | EFL Trophy | Morecambe | 2 | 0 | 18 | 0 | — | 0 | 0 | — |
| 2014/15 | FA Cup | Morecambe | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2013/14 | National League N / S | Vauxhall Motors | 4 | 4 | 340 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2024/2025 | 2nd Place |
| League Two (England) | 2023/2024 | 2nd Place |
| League Two (England) | 2020/2021 | 2nd Place |
| National League (England) | 2022/2023 | Winner |
| National League (England) | 2021/2022 | 2nd Place |
| FA Trophy (England) | 2021/2022 | 2nd Place |
| Florida Cup (World) | 2023 | 2nd Place |
