Career as a player
| Period | Team | Country | Position | # | |
|---|---|---|---|---|---|
| 07/2026 - 06/2027 | ![]() | St. Mirren FC | Defence | 3 | |
| 11/2024 - 06/2026 | ![]() | St. Mirren FC | Defence | 24 | |
| 09/2023 - 06/2024 | ![]() | Salford City | Defence | 3 | |
| 07/2023 - 08/2023 | ![]() | Bolton Wanderers | Defence | 25 | |
| 07/2021 - 06/2023 | ![]() | Bolton Wanderers | Defence | 3 | |
| 01/2021 - 06/2021 | ![]() | Bolton Wanderers | Defence | 28 | |
| 08/2020 - 01/2021 | ![]() | Swansea City | Defence | 43 | |
| 01/2020 - 07/2020 | ![]() | Sunderland AFC | Defence | ||
| 08/2019 - 01/2020 | ![]() | Swansea City U21 | Defence | ||
| 07/2019 - 01/2020 | ![]() | Swansea City | Defence | 3 | |
| 08/2018 - 06/2019 | ![]() | Swansea City | Defence | 24 | |
| 08/2018 - 01/2019 | ![]() | Swansea City U21 | Defence | ||
| 08/2017 - 08/2018 | ![]() | Rangers FC | Defence | 3 | |
| 07/2017 - 08/2017 | ![]() | Cardiff City | Defence | 24 | |
| 05/2016 - 06/2017 | ![]() | Cardiff City | Defence | 12 | |
| 02/2016 - 05/2016 | ![]() | Chesterfield FC | Defence | 34 | |
| 05/2015 - 02/2016 | ![]() | Cardiff City | Defence | 12 | |
| 03/2015 - 05/2015 | ![]() | Barnsley FC | Defence | 3 | |
| 07/2014 - 03/2015 | ![]() | Cardiff City | Defence | 12 | |
| 08/2012 - 06/2014 | ![]() | Cardiff City | Defence | 42 | |
| 07/2010 - 08/2012 | ![]() | Cardiff City U18 | Defence |
Club matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Premier League | 20 | 16 | 4 | 1 | 1.491 | - | - | - | - | - | - | » All matches | |
| Championship | 33 | 18 | 15 | 7 | 1.633 | - | - | - | - | - | - | » All matches | |
| FA Cup | 8 | 7 | 1 | 2 | 614 | - | - | - | - | - | - | » All matches | |
| League Cup | 13 | 13 | - | 1 | 1.156 | - | - | - | - | - | - | » All matches | |
| League One | 73 | 65 | 8 | 15 | 5.777 | 5 | - | 10 | 3 | - | - | » All matches | |
| League Two | 53 | 48 | 5 | 9 | 4.199 | 2 | - | - | 6 | - | - | » All matches | |
| EFL Trophy | 9 | 8 | 1 | 5 | 619 | 1 | - | 1 | - | - | - | » All matches | |
| Playoffs | 1 | - | 1 | - | 18 | - | - | - | - | - | - | » All matches | |
| Premiership | 86 | 79 | 7 | 25 | 6.960 | 7 | - | 9 | 4 | - | - | » All matches | |
| FA Cup | 9 | 8 | 1 | 3 | 809 | - | - | 2 | - | - | - | » All matches | |
| League Cup | 13 | 12 | 1 | 7 | 1.028 | - | - | 3 | 1 | - | - | » All matches | |
| Total | 318 | 274 | 44 | 75 | 24.304 | 15 | - | - | 14 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U21 Premier League International Cup | 1 | 1 | - | 1 | 76 | - | - | - | - | - | - | » All matches |
| U21 Premier League 2 | 1 | 1 | - | - | 90 | - | - | - | - | - | - | » All matches | |
| U21 Premier League 2 Div. 2 | 2 | 2 | - | - | 180 | - | - | - | - | - | - | » All matches | |
| Total | 4 | 4 | - | 1 | 346 | - | - | - | - | - | - |
International matches
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
![]() | WC Qualifiers Europe | 1 | 1 | - | - | 90 | - | - | - | 1 | - | - | » All matches |
![]() | Friendlies | 6 | 3 | 3 | 2 | 318 | - | - | - | - | - | - | » All matches |
| Total | 7 | 4 | 3 | 2 | 408 | - | - | - | 1 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U21 EURO Qualifiers | 9 | 9 | - | 2 | 756 | - | - | - | 1 | - | - | » All matches |
| Total | 9 | 9 | - | 2 | 756 | - | - | - | 1 | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U19 Friendlies | 1 | 1 | - | - | 90 | - | - | - | - | - | - | » All matches |
![]() | U19 EURO Qualifiers | 6 | 6 | - | - | 540 | 1 | - | - | - | - | - | » All matches |
| Total | 7 | 7 | - | - | 630 | 1 | - | - | - | - | - | ||
| Competition | Matches | Start | In | Out | Min. | Scores | 11m | Ass | Yellow | Yellow-Red | Red | ||
![]() | U16 Friendlies | 1 | 1 | - | - | 90 | 1 | - | - | - | - | - | » All matches |
| Total | 1 | 1 | - | - | 90 | 1 | - | - | - | - | - |













