Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Colchester | 2024/25 – 2026/27 | 146 | 26 | 22 |
| Charlton | 2022/23 – 2023/24 | 61 | 7 | 5 |
| MK Dons | 2023/24 | 44 | 7 | 6 |
| Swindon | 2020/21 – 2021/22 | 88 | 17 | 13 |
| Lincoln | 2019/20 | 30 | 2 | 2 |
| Bradford | 2018/19 | 47 | 9 | — |
| Blackburn | 2017/18 | 18 | 1 | — |
| Oxford | 2017/18 | 34 | 7 | — |
| Huddersfield | 2016/17 | 29 | 4 | 2 |
| Southend | 2013/14 – 2015/16 | 88 | 17 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 2 Jul 2024 | Charlton | Colchester | Free |
| 30 Aug 2023 | Charlton | Milton Keynes Dons | Loan |
| 18 Jul 2022 | Swindon Town | Charlton | Free |
| 6 Aug 2020 | Lincoln | Swindon Town | — |
| 3 Jul 2019 | Huddersfield | Lincoln | Free |
| 16 Jul 2018 | Huddersfield | Bradford | Loan |
| 1 Jul 2018 | Blackburn | Huddersfield | — |
| 16 Jan 2018 | Huddersfield | Blackburn | Loan |
| 28 Jul 2017 | Huddersfield | Oxford United | Loan |
| 1 Jul 2016 | Southend | Huddersfield | Free |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Colchester | 1 | 1 | 96 | 0 | 0 | 0 | 0 | 7.30 |
| 2026/27 | EFL Trophy | Colchester | 1 | — | 27 | 0 | 0 | 0 | 0 | 6.52 |
| 2026/27 | League Two | Colchester | 9 | 9 | 807 | 0 | 1 | 0 | 0 | 7.21 |
| 2025/26 | League Cup | Colchester | 1 | 1 | 45 | 0 | 0 | 0 | 0 | 6.60 |
| 2025/26 | EFL Trophy | Colchester | 2 | 2 | 106 | 0 | 0 | 0 | 0 | 7.45 |
| 2025/26 | League Two | Colchester | 39 | 34 | 2968 | 13 | 6 | 7 | 0 | 7.03 |
| 2024/25 | League Two | Colchester | 42 | 42 | 3397 | 8 | 10 | 3 | 0 | 7.35 |
| 2024/25 | FA Cup | Colchester | 44 | 28 | 1325 | 4 | 4 | 4 | 1 | 6.68 |
| 2024/25 | League Cup | Colchester | 2 | 1 | 123 | 1 | 1 | 0 | 0 | 7.05 |
| 2024/25 | EFL Trophy | Colchester | 5 | 4 | 380 | 0 | 0 | 2 | 0 | 6.74 |
| 2023/24 | League One | Charlton | 5 | 3 | 156 | — | — | 2 | 0 | 6.77 |
| 2023/24 | League Two | MK Dons | 42 | 39 | 3270 | 6 | 6 | 6 | 0 | 7.07 |
| 2023/24 | FA Cup | MK Dons | 1 | 0 | 70 | 0 | — | 0 | 0 | — |
| 2023/24 | League Cup | Charlton | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2023/24 | EFL Trophy | MK Dons | 1 | 1 | 90 | 1 | — | 0 | 0 | 8.90 |
| 2022/23 | League One | Charlton | 44 | 28 | 1325 | 4 | 4 | 4 | 1 | 6.68 |
| 2022/23 | League Cup | Charlton | 5 | 5 | 313 | — | — | 0 | 0 | 6.76 |
| 2022/23 | EFL Trophy | Charlton | 4 | 4 | 357 | 1 | — | 0 | 0 | 6.20 |
| 2022/23 | FA Cup | Charlton | 2 | 2 | 180 | 2 | 1 | 0 | 0 | 7.70 |
| 2021/22 | League Two | Swindon | 37 | 33 | 3026 | 13 | 5 | 3 | 0 | 7.10 |
| 2021/22 | EFL Trophy | Swindon | 1 | 0 | 26 | 0 | — | 0 | 0 | 6.70 |
| 2021/22 | League Cup | Swindon | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.90 |
| 2021/22 | FA Cup | Swindon | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2020/21 | League One | Swindon | 43 | 36 | 3113 | 4 | 7 | 4 | 0 | 6.87 |
| 2020/21 | League Cup | Swindon | 1 | 1 | 73 | 0 | — | 0 | 0 | 7.00 |
| 2020/21 | FA Cup | Swindon | 1 | 1 | 66 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Swindon | 2 | 1 | 116 | 0 | 1 | 0 | 0 | 7.80 |
| 2019/20 | League One | Lincoln | 23 | 18 | 1566 | 2 | 1 | 1 | 0 | 6.60 |
| 2019/20 | FA Cup | Lincoln | 2 | 1 | 145 | 0 | — | 0 | 0 | — |
| 2019/20 | League Cup | Lincoln | 2 | 2 | 154 | 0 | 1 | 0 | 0 | 6.95 |
| 2019/20 | EFL Trophy | Lincoln | 3 | 1 | 126 | 0 | — | 0 | 0 | — |
| 2018/19 | League One | Bradford | 39 | 33 | 2931 | 9 | — | 3 | 0 | — |
| 2018/19 | League Cup | Bradford | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Bradford | 3 | 2 | 189 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Bradford | 4 | 4 | 405 | 0 | — | 0 | 0 | — |
| 2017/18 | League One | Blackburn | 18 | 7 | 802 | 1 | — | 1 | 0 | — |
| 2017/18 | League One | Oxford | 28 | 25 | 2014 | 3 | — | 1 | 0 | — |
| 2017/18 | League Cup | Oxford | 1 | 0 | 49 | 0 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Oxford | 4 | 4 | 319 | 4 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Oxford | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2016/17 | Championship | Huddersfield | 24 | 10 | 1088 | 2 | 2 | 1 | 1 | 6.63 |
| 2016/17 | League Cup | Huddersfield | 1 | 1 | 58 | 0 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Huddersfield | 3 | 3 | 252 | 2 | — | 0 | 0 | 6.50 |
| 2016/17 | Club Friendlies | Huddersfield | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Southend | 32 | 25 | 2318 | 9 | — | 1 | 0 | — |
| 2015/16 | EFL Trophy | Southend | 3 | 3 | 255 | 0 | — | 1 | 0 | — |
| 2014/15 | League Two | Southend | 35 | 20 | 1909 | 6 | — | 2 | 0 | — |
| 2014/15 | League Cup | Southend | 1 | 1 | 81 | 0 | — | 0 | 0 | — |
| 2014/15 | EFL Trophy | Southend | 1 | 1 | 90 | 2 | — | 0 | 0 | — |
| 2014/15 | FA Cup | Southend | 1 | 0 | 19 | 0 | — | 0 | 0 | — |
| 2013/14 | League Two | Southend | 12 | 0 | 242 | 0 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Southend | 1 | 0 | 10 | 0 | — | 0 | 0 | — |
| 2013/14 | League Cup | Southend | 1 | 1 | 57 | 0 | — | 0 | 0 | — |
| 2013/14 | EFL Trophy | Southend | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Injury | 1 Apr 2025 | 24 Apr 2025 | 23 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2017/2018 | 2nd Place |
