Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Accrington | 2022/23 – 2026/27 | 171 | 27 | 24 |
| Shrewsbury | 2015/16 – 2021/22 | 257 | 40 | 13 |
| Luton | 2013/14 – 2014/15 | 41 | 5 | — |
| AFC Telford United | 2013/14 | 18 | 5 | — |
| Southport | 2010/11 – 2012/13 | 109 | 29 | — |
| Droylsden | 2009/10 – 2010/11 | 1 | 15 | — |
| Hyde United | 2010/11 | 17 | 3 | — |
| Wrexham | 2008/09 | 0 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 4 Jul 2022 | Shrewsbury | Accrington ST | Free |
| 1 Jul 2015 | Luton | Shrewsbury | Free |
| 1 Jul 2014 | AFC Telford United | Luton | — |
| 20 Jan 2014 | Luton | AFC Telford United | Loan |
| 1 Jul 2013 | Southport | Luton | — |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Two | Accrington | 6 | 5 | 360 | 0 | 1 | 2 | 0 | 6.65 |
| 2025/26 | FA Cup | Accrington | 2 | 2 | 81 | 0 | 0 | 0 | 0 | 7.00 |
| 2025/26 | League Two | Accrington | 33 | 33 | 2826 | 5 | 10 | 6 | 0 | 6.83 |
| 2024/25 | League Two | Accrington | 33 | 32 | 2766 | 9 | 4 | 7 | 0 | 6.96 |
| 2024/25 | FA Cup | Accrington | 1 | 1 | 90 | — | 0 | 0 | 0 | 6.70 |
| 2024/25 | League Cup | Accrington | 1 | 1 | 85 | 0 | 0 | 1 | 0 | 7.20 |
| 2023/24 | League Two | Accrington | 36 | 29 | 2636 | 7 | 6 | 6 | 0 | 7.00 |
| 2023/24 | League Cup | Accrington | 1 | 1 | 90 | 0 | — | 1 | 0 | 6.90 |
| 2023/24 | EFL Trophy | Accrington | 1 | 0 | 16 | 0 | — | 0 | 0 | 6.70 |
| 2023/24 | FA Cup | Accrington | 2 | 2 | 169 | 1 | — | 0 | 0 | — |
| 2022/23 | League One | Accrington | 42 | 35 | 2768 | 2 | 3 | 8 | 0 | 6.65 |
| 2022/23 | League Cup | Accrington | 1 | 0 | 13 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | EFL Trophy | Accrington | 7 | 6 | 569 | 0 | — | 1 | 0 | 6.50 |
| 2022/23 | FA Cup | Accrington | 5 | 5 | 476 | 3 | — | 1 | 0 | 6.50 |
| 2021/22 | League One | Shrewsbury | 21 | 14 | 1266 | 4 | 1 | 4 | 0 | 6.84 |
| 2021/22 | EFL Trophy | Shrewsbury | 2 | 1 | 134 | 0 | — | 0 | 0 | 7.30 |
| 2021/22 | League Cup | Shrewsbury | 1 | 1 | 78 | 0 | — | 0 | 0 | 6.30 |
| 2020/21 | League One | Shrewsbury | 38 | 32 | 2814 | 9 | 5 | 5 | 0 | 6.96 |
| 2020/21 | League Cup | Shrewsbury | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 7.20 |
| 2020/21 | FA Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.15 |
| 2019/20 | League One | Shrewsbury | 23 | 15 | 1511 | 2 | 4 | 4 | 0 | 6.88 |
| 2019/20 | FA Cup | Shrewsbury | 6 | 4 | 389 | 0 | 1 | 0 | 0 | 6.30 |
| 2019/20 | League Cup | Shrewsbury | 1 | 0 | 44 | 0 | — | 0 | 0 | 6.50 |
| 2019/20 | EFL Trophy | Shrewsbury | 3 | 3 | 270 | 0 | — | 1 | 0 | — |
| 2018/19 | League One | Shrewsbury | 32 | 28 | 2524 | 2 | — | 7 | 0 | — |
| 2018/19 | League Cup | Shrewsbury | 1 | 1 | 90 | 1 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Shrewsbury | 1 | 0 | 28 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Shrewsbury | 2 | 0 | 33 | 0 | — | 0 | 0 | 6.40 |
| 2017/18 | League One | Shrewsbury | 47 | 43 | 3881 | 8 | 1 | 7 | 0 | 7.13 |
| 2017/18 | EFL Trophy | Shrewsbury | 6 | 5 | 452 | 1 | — | 1 | 0 | — |
| 2017/18 | FA Cup | Shrewsbury | 4 | 4 | 336 | 2 | — | 0 | 0 | 6.35 |
| 2017/18 | League Cup | Shrewsbury | 1 | 0 | 24 | 1 | — | 0 | 0 | — |
| 2016/17 | League One | Shrewsbury | 32 | 23 | 2084 | 3 | — | 3 | 0 | — |
| 2016/17 | League Cup | Shrewsbury | 1 | 1 | 74 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Shrewsbury | 1 | 1 | 79 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Shrewsbury | 1 | 0 | 7 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Shrewsbury | 24 | 13 | 1371 | 6 | — | 2 | 0 | — |
| 2015/16 | EFL Trophy | Shrewsbury | 1 | 0 | 22 | 0 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Shrewsbury | 4 | 2 | 235 | 1 | — | 0 | 0 | — |
| 2015/16 | League Cup | Shrewsbury | 1 | 0 | 17 | 0 | — | 0 | 0 | — |
| 2014/15 | League Two | Luton | 18 | 14 | 1188 | 3 | — | 2 | 0 | — |
| 2014/15 | FA Cup | Luton | 1 | 1 | 84 | 0 | — | 0 | 0 | — |
| 2013/14 | National League N / S | AFC Telford United | 18 | 18 | 1498 | 5 | — | 0 | 0 | — |
| 2013/14 | National League | Luton | 16 | 8 | 743 | 1 | — | 0 | 0 | — |
| 2013/14 | FA Trophy | Luton | 5 | 5 | 428 | 1 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Luton | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2012/13 | National League | Southport | 43 | 42 | 3644 | 9 | — | 4 | 0 | — |
| 2012/13 | FA Cup | Southport | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2012/13 | FA Trophy | Southport | 4 | 4 | 343 | 2 | — | 0 | 0 | — |
| 2011/12 | National League | Southport | 41 | 41 | 3465 | 10 | — | 6 | 1 | — |
| 2011/12 | FA Cup | Southport | 2 | 2 | 173 | 0 | — | 0 | 0 | — |
| 2011/12 | FA Trophy | Southport | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2010/11 | National League | Southport | 17 | 15 | 1327 | 8 | — | 3 | 0 | — |
| 2010/11 | National League N / S | Hyde United | 16 | 16 | 1351 | 3 | — | 0 | 0 | — |
| 2010/11 | National League N / S | Droylsden | 1 | 0 | 28 | 0 | — | 0 | 0 | — |
| 2010/11 | FA Trophy | Hyde United | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Thigh Injury | 1 Aug 2025 | Ongoing | 449 |
Trophies
| Competition | Season | Place |
|---|---|---|
| EFL Trophy (England) | 2017/2018 | 2nd Place |
