| Competition | Goals | Apps | Started | Minutes | Sub On | Sub Off | ||
|---|---|---|---|---|---|---|---|---|
| England | ||||||||
| Championship | 5 | 237 | 224 | 20,236' | 13 | 17 | 14 | 0 |
| League One | 6 | 146 | 136 | 12,120' | 10 | 14 | 11 | 0 |
| National League | 2 | 29 | 27 | 2,424' | 2 | 3 | 0 | 0 |
| FA Cup | 1 | 28 | 26 | 2,263' | 2 | 6 | 0 | 0 |
| Premier League | 0 | 21 | 21 | 1,721' | 0 | 3 | 0 | 0 |
| Carabao Cup | 0 | 11 | 10 | 891' | 1 | 3 | 0 | 0 |
| EFL Vertu Trophy | 0 | 7 | 7 | 586' | 0 | 1 | 0 | 0 |
| Total | 14 | 479 | 451 | 40,241' | 28 | 47 | 25 | 0 |
| Club | Season | League | National cup | League cup | Total | |||||
|---|---|---|---|---|---|---|---|---|---|---|
| Division | Apps | Gls | Apps | Gls | Apps | Gls | Apps | Gls | ||
Birmingham City | 2013/2014 | Championship | 1 | 0 | - | - | - | - | 1 | 0 |
| Total | 1 | 0 | - | - | - | - | 1 | 0 | ||
Nuneaton Town | 2013/2014 | National League | 19 | 0 | 1 | 0 | - | - | 20 | 0 |
| Total | 19 | 0 | 1 | 0 | - | - | 20 | 0 | ||
Kidderminster Harriers | 2013/2014 | National League | 10 | 2 | - | - | - | - | 10 | 2 |
| Total | 10 | 2 | - | - | - | - | 10 | 2 | ||
Swindon Town | 2014/2015 | League One | 10 | 0 | 1 | 0 | - | - | 11 | 0 |
| Total | 10 | 0 | 1 | 0 | - | - | 11 | 0 | ||
Gillingham | 2014/2015 | League One | 7 | 0 | - | - | - | - | 7 | 0 |
| Total | 7 | 0 | - | - | - | - | 7 | 0 | ||
Fleetwood Town | 2015/2016 | League One | 44 | 0 | 6 | 0 | 1 | 0 | 51 | 0 |
| 2016/2017 | League One | 46 | 2 | 6 | 1 | 1 | 0 | 53 | 3 | |
| 2017/2018 | League One | 27 | 4 | 6 | 0 | - | - | 33 | 4 | |
| Total | 117 | 6 | 18 | 1 | 2 | 0 | 137 | 7 | ||
Blackburn Rovers | 2017/2018 | League One | 12 | 0 | - | - | - | - | 12 | 0 |
| 2018/2019 | Championship | 38 | 3 | 2 | 0 | 3 | 0 | 43 | 3 | |
| 2019/2020 | Championship | 21 | 0 | 1 | 0 | - | - | 22 | 0 | |
| 2020/2021 | Championship | 19 | 0 | 1 | 0 | 2 | 0 | 22 | 0 | |
| Total | 90 | 3 | 4 | 0 | 5 | 0 | 99 | 3 | ||
Luton Town | 2021/2022 | Championship | 43 | 1 | 3 | 0 | - | - | 46 | 1 |
| 2022/2023 | Championship | 47 | 1 | 3 | 0 | - | - | 50 | 1 | |
| 2023/2024 | Premier League | 21 | 0 | 4 | 0 | 2 | 0 | 27 | 0 | |
| 2024/2025 | Championship | 31 | 0 | - | - | 1 | 0 | 32 | 0 | |
| Total | 142 | 2 | 10 | 0 | 3 | 0 | 155 | 2 | ||
Charlton Athletic | 2025/2026 | Championship | 34 | 0 | 1 | 0 | - | - | 35 | 0 |
| 2026/2027 | Championship | 3 | 0 | - | - | 1 | 0 | 4 | 0 | |
| Total | 37 | 0 | 1 | 0 | 1 | 0 | 39 | 0 | ||
| Career total | 433 | 13 | 35 | 1 | 11 | 0 | 479 | 14 | ||