Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| St. Pauli | 2023/24 – 2026/27 | 28 | 0 | 1 |
| Blackpool | 2025/26 | 20 | 5 | 1 |
| Barnsley | 2025/26 | 22 | 3 | 4 |
| Crystal Palace | 2021/22 – 2023/24 | 2 | 0 | — |
| Scotland U21 | 2023 | 5 | 0 | — |
| Crystal Palace U21 | 2021 – 2022 | 3 | 1 | — |
| Bradford | 2022/23 | 36 | 6 | 6 |
| Crystal Palace U23 | 2021 | 17 | 10 | — |
| Dunfermline | 2020/21 | 11 | 0 | — |
| Dundee United | 2018/19 – 2019/20 | 4 | 0 | — |
| Alloa Athletic | 2019/20 | 4 | 0 | — |
| Clyde | 2018/19 | 15 | 1 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 4 Jul 2024 | Crystal Palace | FC St. Pauli | 400K |
| 23 May 2023 | Bradford | Crystal Palace U21 | — |
| 10 May 2021 | Dunfermline | Crystal Palace U23 | — |
| 25 Jan 2021 | Crystal Palace | Dunfermline | Loan |
| 1 Feb 2020 | Crystal Palace | Alloa Athletic | Loan |
| 22 Jan 2020 | Dundee Utd | Crystal Palace | — |
| 1 Jul 2019 | Clyde | Dundee Utd | — |
| 15 Feb 2019 | Dundee Utd | Clyde | Loan |
| 25 Jan 2026 | FC St. Pauli | Barnsley | Loan |
| 1 Sept 2025 | FC St. Pauli | Blackpool | Loan |
| 29 Jun 2026 | Barnsley | FC St. Pauli | Return from loan |
| 24 Jan 2026 | Blackpool | FC St. Pauli | Return from loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | DFB Pokal | St. Pauli | 1 | 0 | 30 | 0 | 0 | 0 | 0 | 6.50 |
| 2026/27 | 2. Bundesliga | St. Pauli | 1 | 0 | 10 | 0 | 0 | 0 | 0 | 3.45 |
| 2025/26 | EFL Trophy | Blackpool | 3 | 3 | 226 | 3 | 0 | 0 | 0 | 7.40 |
| 2025/26 | FA Cup | Blackpool | 3 | 2 | 70 | 1 | 1 | 1 | 0 | 7.95 |
| 2025/26 | League One | Barnsley | 22 | 16 | 1232 | 3 | 4 | 0 | 0 | 6.76 |
| 2025/26 | League One | Blackpool | 14 | 2 | 415 | 1 | 0 | 0 | 0 | 6.64 |
| 2024/25 | Bundesliga | St. Pauli | 22 | 11 | 112 | — | 0 | 1 | 0 | 6.34 |
| 2023/24 | 2. Bundesliga | St. Pauli | 4 | 0 | 69 | 0 | 1 | 1 | 0 | 6.95 |
| 2023 | UEFA U21 Championship - Qualification | Scotland U21 | 5 | 1 | 100 | 0 | — | 0 | 0 | — |
| 2022/23 | League Two | Bradford | 31 | 23 | 2005 | 6 | 5 | 6 | 0 | 6.81 |
| 2022/23 | FA Cup | Bradford | 1 | 0 | 22 | 0 | — | 0 | 0 | — |
| 2022/23 | League Cup | Bradford | 2 | 2 | 165 | 0 | 1 | 0 | 0 | 6.60 |
| 2022/23 | EFL Trophy | Bradford | 2 | 1 | 89 | 0 | — | 0 | 0 | 6.70 |
| 2022 | Premier League International Cup | Crystal Palace U21 | 1 | 1 | 105 | 1 | — | 1 | 0 | — |
| 2022/23 | Friendlies Clubs | Crystal Palace | 2 | 0 | 29 | 0 | — | 0 | 0 | — |
| 2021 | Premier League 2 Division One | Crystal Palace U23 | 17 | 15 | 1170 | 10 | — | 2 | 0 | — |
| 2021 | EFL Trophy | Crystal Palace U21 | 2 | 1 | 114 | 0 | — | 0 | 0 | — |
| 2020/21 | Championship | Dunfermline | 11 | 6 | 519 | 0 | — | 0 | 0 | — |
| 2019/20 | Championship | Alloa Athletic | 4 | 2 | 216 | 0 | — | 0 | 0 | — |
| 2019/20 | Championship | Dundee United | 1 | 0 | 2 | 0 | — | 0 | 0 | — |
| 2019/20 | League Cup | Dundee United | 3 | 2 | 156 | 0 | — | 0 | 0 | — |
| 2018/19 | League One | Clyde | 3 | 1 | 116 | 0 | — | 0 | 0 | — |
| 2018/19 | League Two | Clyde | 12 | 4 | 559 | 1 | — | 1 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Illness | 19 Dec 2024 | 20 Dec 2024 | 1 |
| Ankle Injury | 1 Nov 2024 | 12 Dec 2024 | 41 |
| Back Injury | 24 Oct 2024 | 25 Oct 2024 | 1 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League Two (Scotland) | 2018/2019 | 2nd Place |
| 2. Bundesliga (Germany) | 2023/2024 | Winner |
| Premier League International Cup (Europe) | 2022/2023 | 2nd Place |
