Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Accrington | 2026/27 | 12 | 1 | 0 |
| Morecambe | 2023/24 – 2024/25 | 89 | 2 | 4 |
| Gillingham | 2021/22 – 2023/24 | 63 | 1 | 3 |
| Bristol Rovers | 2020/21 | 22 | 0 | — |
| Barnet | 2016/17 – 2019/20 | 113 | 5 | — |
| Cardiff | 2016/17 | 0 | 0 | — |
| York | 2015/16 | 14 | 0 | — |
| Newport | 2014/15 | 12 | 2 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 11 Aug 2023 | Gillingham | Morecambe | Free |
| 1 Jul 2021 | Bristol Rovers | Gillingham | Free |
| 28 Aug 2020 | Barnet | Bristol Rovers | Free |
| 1 Jan 2017 | Cardiff | Barnet | Free |
| 1 Jul 2016 | York | Cardiff | — |
| 7 Aug 2015 | Cardiff | York | Loan |
| 1 Jan 2015 | Cardiff | Newport County | Loan |
| 2 Jul 2025 | Morecambe | Rochdale | Free agent |
| 29 Jun 2026 | Rochdale | Tutonda David | Free agent |
| 15 Jul 2026 | Rochdale | Accrington ST | Free agent |
| 29 Jun 2026 | Rochdale | Accrington ST | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Accrington | 1 | 1 | 79 | 0 | 0 | 0 | 0 | 6.30 |
| 2026/27 | EFL Trophy | Accrington | 1 | 0 | 19 | 1 | 0 | 0 | 0 | 7.53 |
| 2026/27 | League Two | Accrington | 10 | 9 | 780 | 0 | 0 | 3 | 0 | 6.79 |
| 2024/25 | League Two | Morecambe | 42 | 34 | 2925 | 0 | 1 | 13 | 0 | 6.85 |
| 2024/25 | League Cup | Morecambe | 1 | 0 | 17 | 0 | 0 | 0 | 0 | 6.20 |
| 2024/25 | EFL Trophy | Morecambe | 3 | 1 | 153 | 0 | 0 | 0 | 0 | 6.73 |
| 2024/25 | FA Cup | Morecambe | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.30 |
| 2023/24 | League Two | Morecambe | 37 | 28 | 2620 | 2 | 3 | 13 | 0 | 6.75 |
| 2023/24 | FA Cup | Morecambe | 3 | 3 | 226 | 0 | — | 1 | 0 | — |
| 2023/24 | EFL Trophy | Morecambe | 2 | 2 | 157 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | League Two | Gillingham | 25 | 17 | 1506 | 1 | — | 7 | 0 | 6.64 |
| 2022/23 | League Cup | Gillingham | 3 | 3 | 264 | 0 | — | 0 | 0 | 6.97 |
| 2022/23 | EFL Trophy | Gillingham | 1 | 0 | 27 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Gillingham | 2 | 2 | 175 | 0 | — | 1 | 0 | 6.20 |
| 2021/22 | League One | Gillingham | 29 | 21 | 1764 | 0 | — | 11 | 0 | 6.66 |
| 2021/22 | EFL Trophy | Gillingham | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2021/22 | League Cup | Gillingham | 2 | 1 | 47 | 0 | — | 0 | 0 | 6.45 |
| 2020/21 | League One | Bristol Rovers | 20 | 10 | 904 | 0 | — | 4 | 0 | 6.66 |
| 2020/21 | EFL Trophy | Bristol Rovers | 2 | 2 | 152 | 0 | — | 0 | 0 | 7.15 |
| 2019/20 | National League | Barnet | 26 | 23 | 1939 | 2 | — | 2 | 0 | — |
| 2019/20 | FA Trophy | Barnet | 4 | 4 | 351 | 0 | — | 0 | 0 | — |
| 2019/20 | FA Cup | Barnet | 2 | 2 | 128 | 0 | — | 0 | 0 | 6.20 |
| 2018/19 | National League - Play-offs | Barnet | 20 | 17 | 1470 | 0 | — | 2 | 0 | — |
| 2018/19 | FA Trophy | Barnet | 3 | 2 | 186 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Barnet | 4 | 3 | 251 | 2 | — | 1 | 0 | 5.80 |
| 2017/18 | League Two | Barnet | 41 | 35 | 3330 | 0 | — | 7 | 0 | — |
| 2017/18 | EFL Trophy | Barnet | 3 | 2 | 197 | 0 | — | 1 | 0 | — |
| 2017/18 | FA Cup | Barnet | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | League Cup | Barnet | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.20 |
| 2016/17 | League Two | Barnet | 7 | 6 | 485 | 1 | — | 1 | 0 | — |
| 2015/16 | League Two | York | 12 | 7 | 717 | 0 | — | 0 | 0 | — |
| 2015/16 | League Cup | York | 1 | 1 | 120 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | York | 1 | 0 | 40 | 0 | — | 0 | 0 | — |
| 2014/15 | League Two | Newport | 12 | 10 | 964 | 2 | — | 1 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Suspended | 19 Aug 2021 | 22 Aug 2021 | 3 |
Trophies
No trophies recorded.
