Career as a player
| Period | Team | Country | Position | # | |
|---|---|---|---|---|---|
| 07/2026 - 06/2027 | ![]() | Ross County FC | Midfield | 16 | |
| 07/2022 - 06/2026 | ![]() | Dunfermline Athletic | Midfield | 5 | |
| 07/2021 - 05/2022 | ![]() | Arbroath FC | Defence | 18 | |
| 07/2021 - 07/2021 | ![]() | Heart of Midlothian (R) | Defence | ||
| 01/2021 - 06/2021 | ![]() | Stirling Albion FC | Defence | ||
| 01/2021 - 01/2021 | ![]() | Heart of Midlothian (R) | Defence | ||
| 09/2020 - 12/2020 | ![]() | Dumbarton FC | Defence | 18 | |
| 07/2020 - 09/2020 | ![]() | Heart of Midlothian (R) | Defence | ||
| 08/2019 - 06/2020 | ![]() | Cowdenbeath FC | Defence | ||
| 08/2018 - 08/2019 | ![]() | Heart of Midlothian | Defence | 44 | |
| 04/2018 - 06/2018 | ![]() | Heart of Midlothian | Defence | 48 | |
| 07/2017 - 06/2018 | ![]() | Heart of Midlothian (R) | Defence |
Club matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Premiership | 1 | 1 | - | - | 90 | - | - | - | 1 | - | - | » All matches | |
| Championship | 116 | 97 | 19 | 25 | 8.448 | 2 | - | 1 | 35 | - | 1 | » All matches | |
| League One | 41 | 31 | 10 | 12 | 2.647 | 6 | - | 1 | 13 | - | - | » All matches | |
| FA Cup | 14 | 9 | 5 | 2 | 891 | 1 | - | - | 1 | - | - | » All matches | |
| League Cup | 19 | 13 | 6 | 6 | 1.180 | 2 | - | - | 6 | - | 1 | » All matches | |
| Challenge Cup | 5 | 5 | - | 1 | 429 | - | - | - | 2 | - | - | » All matches | |
| Playoffs | 3 | 2 | 1 | 1 | 198 | - | - | - | 1 | - | - | » All matches | |
| Total | 199 | 158 | 41 | 47 | 13.883 | 11 | - | - | 59 | - | 2 |
International matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]() | U21 Friendlies | 3 | 1 | 2 | - | 176 | - | - | - | 1 | - | - | » All matches |
| Total | 3 | 1 | 2 | - | 176 | - | - | - | 1 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U19 Friendlies | 2 | 2 | - | - | 180 | - | - | - | - | - | - | » All matches |
![]() | U19 EURO Qualifiers | 3 | 2 | 1 | - | 194 | - | - | - | 1 | - | - | » All matches |
| Total | 5 | 4 | 1 | - | 374 | - | - | - | 1 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U18 Friendlies | 1 | 1 | - | 1 | 76 | - | - | - | - | - | - | » All matches |
| Total | 1 | 1 | - | 1 | 76 | - | - | - | - | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U17 Friendlies | 2 | 2 | - | - | 180 | - | - | - | - | - | - | » All matches |
![]() | U17 EURO Qualifiers | 6 | 5 | 1 | - | 438 | - | - | - | 1 | 1 | - | » All matches |
| Total | 8 | 7 | 1 | - | 618 | - | - | - | 1 | 1 | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U16 Friendlies | 5 | 5 | - | 1 | 435 | - | - | - | - | - | - | » All matches |
| Total | 5 | 5 | - | 1 | 435 | - | - | - | - | - | - |










