Career as a player
| Period | Team | Country | Position | # | |
|---|---|---|---|---|---|
| 07/2026 - 06/2027 | ![]() | Montrose FC | Midfield | 8 | |
| 07/2025 - 06/2026 | ![]() | Airdrieonians FC | Midfield | 18 | |
| 07/2024 - 06/2025 | ![]() | Hamilton Academical | Midfield | 10 | |
| 07/2023 - 06/2024 | ![]() | Hamilton Academical | Midfield | 6 | |
| 07/2021 - 06/2023 | ![]() | Kelty Hearts | Midfield | 10 | |
| 05/2021 - 06/2021 | ![]() | Rangers FC | Midfield | 36 | |
| 03/2021 - 04/2021 | ![]() | Ayr United | Midfield | 28 | |
| 08/2020 - 03/2021 | ![]() | Rangers FC | Midfield | 36 | |
| 07/2020 - 03/2021 | ![]() | Rangers FC (R) | Midfield | ||
| 01/2020 - 06/2020 | ![]() | Partick Thistle | Midfield | 20 | |
| 06/2019 - 01/2020 | ![]() | Rangers FC | Midfield | 33 | |
| 06/2019 - 01/2020 | ![]() | Rangers FC (R) | Midfield | 33 | |
| 01/2019 - 05/2019 | ![]() | Raith Rovers | Midfield | 24 | |
| 01/2019 - 01/2019 | ![]() | Rangers FC | Midfield | ||
| 08/2018 - 01/2019 | ![]() | Bury FC | Midfield | 19 | |
| 07/2018 - 08/2018 | ![]() | Rangers FC | Midfield | 33 | |
| 10/2017 - 06/2018 | ![]() | Rangers FC | Midfield | 35 | |
| 05/2017 - 06/2017 | ![]() | Rangers FC | Midfield | 55 | |
| 07/2015 - 06/2016 | ![]() | Rangers FC U17 | Midfield |
Club matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| League Two | 4 | - | 4 | - | 28 | - | - | - | - | - | - | » All matches | |
| Premiership | 9 | 2 | 7 | 2 | 328 | - | - | - | 2 | - | - | » All matches | |
| Championship | 77 | 54 | 23 | 43 | 4.414 | 1 | - | 1 | 11 | - | - | » All matches | |
| League One | 84 | 78 | 6 | 32 | 6.654 | 13 | 1 | 1 | 18 | 1 | - | » All matches | |
| League Two | 30 | 30 | - | 10 | 2.496 | 9 | - | 1 | 3 | - | - | » All matches | |
| FA Cup | 14 | 9 | 5 | 4 | 930 | - | - | 2 | 1 | - | - | » All matches | |
| League Cup | 24 | 20 | 4 | 10 | 1.823 | - | - | 2 | 3 | - | - | » All matches | |
| Challenge Cup | 4 | 1 | 3 | - | 205 | - | - | - | 1 | - | - | » All matches | |
| Playoffs | 10 | 9 | 1 | 7 | 597 | - | - | 1 | - | - | - | » All matches | |
| Total | 256 | 203 | 53 | 108 | 17.475 | 23 | 1 | - | 39 | 1 | - |
International matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]() | U19 EURO Qualifiers | 3 | 2 | 1 | 2 | 163 | - | - | - | - | - | - | » All matches |
| Total | 3 | 2 | 1 | 2 | 163 | - | - | - | - | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U17 EURO Qualifiers | 3 | 3 | - | 1 | 252 | - | - | - | 1 | - | - | » All matches |
| Total | 3 | 3 | - | 1 | 252 | - | - | - | 1 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U16 Friendlies | 1 | 1 | - | 1 | 41 | - | - | - | - | - | - | » All matches |
| Total | 1 | 1 | - | 1 | 41 | - | - | - | - | - | - |













