Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Gillingham | 2025/26 – 2026/27 | 22 | 1 | 0 |
| Leyton Orient | 2021/22 – 2025/26 | 239 | 17 | 5 |
| Grenada | 2019 – 2022 | 7 | 0 | — |
| Crewe | 2020/21 | 43 | 1 | 1 |
| Shrewsbury | 2017/18 – 2019/20 | 126 | 8 | 1 |
| Accrington | 2016/17 – 2017/18 | 50 | 4 | — |
| Aldershot Town | 2015/16 | 49 | 1 | — |
| St Albans City | 2014/15 | 21 | 2 | — |
| Histon | 2013/14 | 30 | 1 | — |
| Boreham Wood | 2011/12 – 2012/13 | 25 | 0 | — |
| Billericay Town | 2012/13 | 13 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jul 2021 | Crewe | Leyton Orient | Free |
| 4 Sept 2020 | Shrewsbury | Crewe | Free |
| 22 Aug 2017 | Accrington ST | Shrewsbury | — |
| 1 Jul 2016 | Aldershot Town | Accrington ST | Free |
| 24 Jul 2015 | St Albans City | Aldershot Town | Free |
| 14 Nov 2014 | Margate | St Albans City | Free |
| 20 Mar 2014 | Histon | Margate | Free |
| 5 Jul 2013 | Billericay Town | Histon | Free |
| 22 Feb 2013 | Boreham Wood | Billericay Town | Free |
| 16 Nov 2012 | Kettering Town | Boreham Wood | Free |
| 1 Jul 2012 | Boreham Wood | Kettering Town | Free |
| 1 Feb 2026 | Leyton Orient | Gillingham | - |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Gillingham | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 5.90 |
| 2026/27 | League Two | Gillingham | 12 | 12 | 1080 | 1 | 0 | 2 | 0 | 6.96 |
| 2025/26 | EFL Trophy | Leyton Orient | 2 | 2 | 135 | 0 | 0 | 0 | 0 | 6.95 |
| 2025/26 | FA Cup | Leyton Orient | 2 | 2 | 170 | 0 | 0 | 1 | 0 | 6.60 |
| 2025/26 | League One | Leyton Orient | 22 | 20 | 1839 | 0 | 0 | 2 | 0 | 6.70 |
| 2025/26 | League Two | Gillingham | 9 | 8 | 749 | 0 | 0 | 3 | 0 | 6.49 |
| 2024/25 | League One | Leyton Orient | 37 | 35 | 2944 | 3 | 1 | 7 | 0 | 6.97 |
| 2024/25 | FA Cup | Leyton Orient | 40 | 40 | 3524 | 3 | 1 | 8 | 2 | 6.78 |
| 2024/25 | League Cup | Leyton Orient | 3 | 2 | 131 | — | 0 | 0 | 0 | 7.17 |
| 2024/25 | EFL Trophy | Leyton Orient | 2 | 0 | 16 | 0 | 0 | 0 | 0 | 6.50 |
| 2023/24 | League One | Leyton Orient | 36 | 33 | 2918 | 2 | — | 6 | 0 | 6.73 |
| 2023/24 | EFL Trophy | Leyton Orient | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.60 |
| 2023/24 | League Cup | Leyton Orient | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | League Two | Leyton Orient | 40 | 40 | 3524 | 3 | 1 | 8 | 2 | 6.78 |
| 2022/23 | League Cup | Leyton Orient | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | EFL Trophy | Leyton Orient | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Leyton Orient | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2021/22 | League Two | Leyton Orient | 44 | 44 | 3960 | 5 | 1 | 13 | 0 | 7.00 |
| 2021/22 | League Cup | Leyton Orient | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 8.00 |
| 2021/22 | FA Cup | Leyton Orient | 3 | 3 | 270 | 1 | — | 0 | 0 | 7.70 |
| 2021/22 | EFL Trophy | Leyton Orient | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.00 |
| 2021 | CONCACAF Gold Cup | Grenada | 3 | 3 | 270 | 0 | — | 0 | 0 | 6.57 |
| 2020/21 | League One | Crewe | 41 | 37 | 3409 | 1 | 1 | 8 | 1 | 6.84 |
| 2020/21 | FA Cup | Crewe | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Crewe | 1 | 1 | 90 | 0 | — | 0 | 0 | 7.50 |
| 2019/20 | League One | Shrewsbury | 28 | 25 | 2409 | 3 | 1 | 4 | 0 | 6.76 |
| 2019/20 | League Cup | Shrewsbury | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.00 |
| 2019/20 | EFL Trophy | Shrewsbury | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2019/20 | FA Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2019 | Concacaf Nations League | Grenada | 4 | 4 | 360 | 0 | — | 2 | 0 | — |
| 2018/19 | League One | Shrewsbury | 36 | 34 | 3095 | 1 | — | 7 | 0 | — |
| 2018/19 | League Cup | Shrewsbury | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2018/19 | EFL Trophy | Shrewsbury | 3 | 3 | 270 | 1 | — | 1 | 0 | — |
| 2018/19 | FA Cup | Shrewsbury | 7 | 5 | 502 | 0 | — | 1 | 0 | 6.60 |
| 2017/18 | League One | Shrewsbury | 36 | 32 | 2898 | 3 | — | 6 | 0 | 6.50 |
| 2017/18 | League Two | Accrington | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Shrewsbury | 4 | 4 | 390 | 0 | — | 0 | 0 | 7.10 |
| 2017/18 | EFL Trophy | Shrewsbury | 7 | 7 | 630 | 0 | — | 2 | 0 | — |
| 2016/17 | League Two | Accrington | 41 | 40 | 3568 | 2 | — | 3 | 1 | — |
| 2016/17 | League Cup | Accrington | 3 | 3 | 330 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Accrington | 4 | 4 | 360 | 1 | — | 0 | 0 | — |
| 2015/16 | National League | Aldershot Town | 45 | 45 | 4050 | 1 | — | 7 | 0 | — |
| 2015/16 | FA Trophy | Aldershot Town | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Aldershot Town | 3 | 3 | 270 | 0 | — | 0 | 0 | — |
| 2014/15 | National League N / S | St Albans City | 21 | 21 | 1881 | 2 | — | 0 | 0 | — |
| 2013/14 | National League N / S | Histon | 30 | 29 | 2559 | 1 | — | 0 | 0 | — |
| 2012/13 | National League N / S | Billericay Town | 13 | 13 | 1157 | 0 | — | 0 | 0 | — |
| 2012/13 | National League N / S | Boreham Wood | 6 | 5 | 450 | 0 | — | 0 | 0 | — |
| 2011/12 | National League N / S | Boreham Wood | 19 | 15 | 1388 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Inactive | 28 Jan 2025 | 3 Apr 2025 | 65 |
Trophies
| Competition | Season | Place |
|---|---|---|
| EFL Trophy (England) | 2017/2018 | 2nd Place |
| League Two (England) | 2022/2023 | Winner |
