Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Hearts | 2023/24 – 2025/26 | 186 | 8 | 6 |
| Peterborough | 2019/20 – 2023/24 | 172 | 6 | 2 |
| Colchester | 2013/14 – 2018/19 | 141 | 8 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 24 Jul 2023 | Peterborough | Heart Of Midlothian | — |
| 1 Jul 2019 | Colchester | Peterborough | — |
| 30 Jun 2026 | Heart Of Midlothian | Oxford United | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2025/26 | League Cup | Hearts | 46 | 44 | 3808 | 2 | 1 | 9 | 0 | 6.98 |
| 2025/26 | Premiership | Hearts | 20 | 9 | 974 | 1 | 0 | 2 | 0 | 6.97 |
| 2024/25 | Premiership | Hearts | 20 | 20 | 1565 | 2 | 0 | 2 | 0 | 7.14 |
| 2024/25 | FA Cup | Hearts | 46 | 44 | 3808 | 2 | 1 | 9 | 0 | 6.98 |
| 2024/25 | UEFA Europa Conference League | Hearts | 5 | 5 | 395 | — | 0 | 1 | 0 | 6.94 |
| 2024/25 | UEFA Europa League | Hearts | 5 | 5 | 395 | — | 0 | 1 | 0 | 6.94 |
| 2023/24 | Premiership | Hearts | 35 | 34 | 3060 | — | 4 | 4 | 0 | 7.25 |
| 2023/24 | FA Cup | Hearts | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2023/24 | League Cup | Hearts | 3 | 3 | 255 | 0 | — | 0 | 0 | — |
| 2023/24 | UEFA Europa Conference League | Hearts | 4 | 4 | 360 | 0 | — | 0 | 0 | 6.95 |
| 2022/23 | League One | Peterborough | 46 | 44 | 3808 | 2 | 1 | 9 | 0 | 6.98 |
| 2022/23 | League Cup | Peterborough | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.90 |
| 2022/23 | EFL Trophy | Peterborough | 2 | 1 | 122 | 0 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Peterborough | 2 | 2 | 180 | 0 | — | 1 | 0 | 6.90 |
| 2021/22 | Championship | Peterborough | 34 | 33 | 2884 | 0 | — | 7 | 0 | 6.75 |
| 2021/22 | League Cup | Peterborough | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.30 |
| 2021/22 | FA Cup | Peterborough | 2 | 2 | 180 | 0 | — | 0 | 0 | 7.15 |
| 2020/21 | League One | Peterborough | 45 | 45 | 4019 | 1 | 1 | 9 | 0 | 7.04 |
| 2020/21 | EFL Trophy | Peterborough | 2 | 2 | 180 | 1 | — | 0 | 0 | 7.05 |
| 2020/21 | League Cup | Peterborough | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.30 |
| 2020/21 | FA Cup | Peterborough | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.70 |
| 2019/20 | League One | Peterborough | 28 | 28 | 2422 | 1 | — | 3 | 0 | 6.92 |
| 2019/20 | League Cup | Peterborough | 1 | 1 | 90 | 0 | — | 1 | 0 | 7.00 |
| 2019/20 | EFL Trophy | Peterborough | 2 | 1 | 117 | 0 | — | 0 | 0 | — |
| 2019/20 | FA Cup | Peterborough | 3 | 3 | 270 | 1 | — | 0 | 0 | — |
| 2018/19 | League Two | Colchester | 40 | 39 | 3382 | 4 | — | 7 | 0 | — |
| 2018/19 | FA Cup | Colchester | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2018/19 | League Cup | Colchester | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Colchester | 2 | 2 | 180 | 1 | — | 0 | 0 | — |
| 2017/18 | League Two | Colchester | 37 | 37 | 3286 | 2 | — | 7 | 0 | — |
| 2017/18 | League Cup | Colchester | 1 | 1 | 90 | 1 | — | 0 | 0 | 7.30 |
| 2017/18 | EFL Trophy | Colchester | 2 | 2 | 180 | 0 | — | 2 | 0 | — |
| 2017/18 | FA Cup | Colchester | 1 | 1 | 59 | 0 | — | 0 | 0 | — |
| 2016/17 | League Two | Colchester | 13 | 13 | 1091 | 0 | — | 1 | 0 | — |
| 2016/17 | League Cup | Colchester | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2016/17 | EFL Trophy | Colchester | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Colchester | 26 | 23 | 2172 | 0 | — | 3 | 0 | — |
| 2015/16 | EFL Trophy | Colchester | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Colchester | 2 | 1 | 174 | 0 | — | 1 | 0 | — |
| 2014/15 | League One | Colchester | 10 | 9 | 770 | 0 | — | 1 | 0 | — |
| 2014/15 | EFL Trophy | Colchester | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2013/14 | League One | Colchester | 1 | 0 | 44 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
No trophies recorded.
