
| 2026 | CONCACAF Champions League | Los Angeles FC | Defender | 5 | 450 | 0 | 0 | 2 | 0 | 1 | 92 | 1 | 0 | 7.38 |
| 2026 | Major League Soccer | Los Angeles FC | Defender | 10 | 803 | 0 | 0 | 2 | 0 | 1 | 88 | 2 | 0 | 7.10 |
| 2025 | Friendlies | Scotland | Defender | 6 | 8 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | 6.30 |
| 2025 | Major League Soccer | Los Angeles FC | Defender | 11 | 1121 | 0 | 0 | 3 | 0 | 4 | 55 | 4 | 0 | 7.12 |
| 2024 | Championship | Preston | Defender | 11 | 823 | 1 | 0 | 6 | 2 | 7 | — | 2 | 0 | 7.05 |
| 2024 | Championship | Watford | Defender | 22 | 1662 | 2 | 0 | 6 | 2 | 7 | — | 7 | 0 | 7.05 |
| 2024 | FA Cup | Preston | Defender | 0 | 0 | 0 | 0 | 1 | 0 | 0 | — | 0 | 0 | 7.30 |
| 2024 | League Cup | Watford | Defender | 2 | 180 | 0 | 1 | 0 | 0 | 3 | — | 0 | 0 | 7.45 |
| 2024 | FA Cup | Watford | Defender | 1 | 90 | 0 | 0 | 1 | 0 | 0 | — | 0 | 0 | 7.30 |
| 2024 | Friendlies | Scotland | Defender | 2 | 180 | 0 | 0 | 0 | 0 | 0 | 64 | 0 | 0 | 7.20 |
| 2024 | Euro Championship | Scotland | Defender | 1 | 45 | 0 | 0 | 0 | 0 | 0 | — | 0 | 1 | 5.20 |
| 2024 | UEFA Nations League | Scotland | Defender | 1 | 8 | 0 | 0 | 0 | 0 | 0 | 100 | 0 | 0 | 6.50 |
| 2023 | Championship | Watford | Defender | 37 | 3026 | 3 | 3 | 16 | 5 | 9 | 43 | 14 | 0 | 7.06 |
| 2023 | League Cup | Watford | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 1 | 60 | 0 | 0 | 6.90 |
| 2023 | FA Cup | Watford | Defender | 2 | 94 | 0 | 0 | 0 | 0 | 0 | — | 1 | 0 | 6.20 |
| 2023 | Euro Championship - Qualification | Scotland | Defender | 7 | 616 | 1 | 0 | 3 | 1 | 3 | 47 | 2 | 0 | 7.00 |
| 2023 | UEFA U21 Championship - Qualification | Scotland U21 | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2023 | Friendlies | Scotland | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2022 | Championship | Watford | Defender | 17 | 1501 | 2 | 1 | 4 | 2 | 2 | — | 4 | 0 | 6.93 |
| 2022 | Premiership | Hibernian | Defender | 21 | 1879 | 3 | 0 | 29 | 11 | 24 | 49 | 7 | 0 | 7.28 |
| 2022 | League Cup | Hibernian | Defender | 4 | 297 | 0 | 0 | 0 | 0 | 0 | — | 1 | 0 | — |
| 2022 | FA Cup | Hibernian | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2022 | UEFA Nations League | Scotland | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | 7.30 |
| 2022 | Friendlies | Scotland | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2021 | Premiership | Hibernian | Defender | 29 | 2486 | 2 | 0 | 18 | 7 | 8 | 48 | 7 | 2 | 7.08 |
| 2021 | League Cup | Hibernian | Defender | 4 | 350 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2021 | FA Cup | Hibernian | Defender | 3 | 270 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2021 | UEFA Europa Conference League | Hibernian | Defender | 4 | 360 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2021 | Friendlies Clubs | Hibernian | Defender | 1 | 71 | 0 | 0 | 0 | 0 | 0 | — | 1 | 0 | — |
| 2021 | UEFA U21 Championship | Scotland U21 | Defender | 6 | 540 | 0 | 0 | 0 | 0 | 0 | — | 4 | 0 | — |
| 2020 | Premiership | Hibernian | Defender | 34 | 2944 | 1 | 0 | 14 | 4 | 5 | 48 | 5 | 0 | 7.02 |
| 2020 | FA Cup | Hibernian | Defender | 5 | 463 | 0 | 0 | 0 | 0 | 0 | — | 2 | 0 | — |
| 2020 | League Cup | Hibernian | Defender | 3 | 270 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2020 | World Cup - Qualification Europe | Scotland | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2020 | UEFA Nations League | Scotland | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2020 | Euro Championship | Scotland | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2019 | Premiership | Hibernian | Defender | 14 | 1230 | 1 | 0 | 8 | 1 | 3 | 78 | 2 | 1 | 7.02 |
| 2019 | Challenge Cup | Hibernian U21 | Defender | 1 | 90 | 1 | 0 | 0 | 0 | 0 | — | 1 | 0 | — |
| 2019 | League Cup | Hibernian | Defender | 1 | 120 | 0 | 0 | 0 | 0 | 0 | — | 0 | 1 | — |
| 2019 | FA Cup | Hibernian | Defender | 2 | 172 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2019 | UEFA U21 Championship | Scotland U21 | Defender | 4 | 360 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2019 | UEFA U19 Championship | Scotland U19 | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2018 | Premiership | Hibernian | Defender | 16 | 1378 | 3 | 0 | 0 | 0 | 0 | — | 5 | 0 | — |
| 2018 | League Cup | Hibernian | Defender | 2 | 210 | 0 | 0 | 0 | 0 | 0 | — | 1 | 0 | — |
| 2018 | Scottish Cup | Hibernian | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2018 | UEFA Europa League | Hibernian | Defender | 5 | 270 | 0 | 0 | 0 | 0 | 0 | — | 2 | 0 | — |
| 2018 | UEFA U19 Championship | Scotland U19 | Defender | 3 | 270 | 0 | 0 | 0 | 0 | 0 | — | 2 | 0 | — |
| 2018 | Tournoi Maurice Revello | Scotland U21 | Defender | 4 | 360 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2017 | Premiership | Hibernian | Defender | 6 | 274 | 1 | 0 | 0 | 0 | 0 | — | 4 | 0 | — |
| 2017 | Challenge Cup | — | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2017 | Scottish Cup | Hibernian | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2017 | League Cup | Hibernian | Defender | 3 | 270 | 2 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2017 | UEFA U19 Championship | Scotland U19 | Defender | 2 | 180 | 0 | 0 | 0 | 0 | 0 | — | 2 | 1 | — |
| 2016 | League Two | Edinburgh City | Defender | 23 | 2014 | 3 | 0 | 0 | 0 | 0 | — | 8 | 0 | — |
| 2016 | League Cup | Edinburgh City | Defender | 0 | 0 | 0 | 0 | 0 | 0 | 0 | — | 0 | 0 | — |
| 2016 | Scottish Cup | Edinburgh City | Defender | 1 | 90 | 0 | 0 | 0 | 0 | 0 | — | 1 | 0 | — |