Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Wales | 2018/19 – 2026/27 | 61 | 2 | 0 |
| Leeds United | 2023/24 – 2025/26 | 136 | 3 | 0 |
| Tottenham | 2020/21 – 2024/25 | 26 | 0 | — |
| Stade Rennais | 2022/23 | 22 | 1 | — |
| Swansea | 2015/16 – 2020/21 | 54 | 0 | 1 |
| Wales U21 | 2017/18 – 2019/20 | 7 | 0 | — |
| Cheltenham | 2017/18 | 12 | 0 | — |
| Swansea City U23 | 2016/17 – 2017/18 | 19 | 0 | — |
| Swansea City U21 | 2017/18 | 4 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 2 Jul 2024 | Tottenham | Leeds | € 11.8M |
| 10 Aug 2023 | Tottenham | Leeds | Loan |
| 1 Jul 2023 | Rennes | Tottenham | — |
| 1 Aug 2022 | Tottenham | Rennes | Loan |
| 16 Oct 2020 | Swansea | Tottenham | € 12M |
| 1 Jul 2018 | Cheltenham | Swansea | — |
| 30 Jan 2018 | Swansea | Cheltenham | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | UEFA World Cup Qualifiers | Wales | 2 | 2 | 180 | 0 | 0 | 1 | 0 | 7.60 |
| 2026/27 | Friendlies | Wales | 3 | 3 | 270 | 0 | 0 | 0 | 0 | 6.83 |
| 2025/26 | Friendlies | Wales | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 7.20 |
| 2025/26 | FA Cup | Leeds United | 3 | 1 | 127 | 0 | 0 | 0 | 0 | 6.70 |
| 2025/26 | Premier League | Leeds United | 35 | 33 | 2958 | 2 | 0 | 3 | 0 | 6.69 |
| 2024/25 | Championship | Leeds United | 46 | 46 | 4136 | 1 | 0 | 5 | 0 | 7.19 |
| 2024/25 | FA Cup | Leeds United | 1 | 0 | 25 | 0 | — | 0 | 0 | — |
| 2024/25 | League Cup | Leeds United | 1 | 1 | 90 | 0 | 0 | 0 | 0 | 6.30 |
| 2024/25 | UEFA Nations League | Wales | 6 | 6 | 544 | 0 | 0 | 1 | 0 | 7.10 |
| 2024/25 | World Cup - Qualification Europe | Wales | 8 | 8 | 748 | 2 | 0 | 1 | 0 | 7.41 |
| 2023/24 | Championship | Leeds United | 46 | 45 | 3993 | 0 | 0 | 6 | 0 | 7.19 |
| 2023/24 | FA Cup | Leeds United | 4 | 4 | 390 | 0 | — | 1 | 0 | 7.30 |
| 2023/24 | Euro Championship - Qualification | Wales | 10 | 10 | 907 | — | — | 0 | 0 | 6.91 |
| 2023/24 | Friendlies | Wales | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2022/23 | Ligue 1 | Stade Rennais | 16 | 16 | 1418 | 1 | — | 2 | 1 | 6.88 |
| 2022/23 | Coupe de France | Stade Rennais | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.90 |
| 2022/23 | UEFA Europa League | Stade Rennais | 5 | 5 | 450 | 0 | — | 1 | 0 | 6.94 |
| 2022/23 | Friendlies Clubs | Tottenham | 1 | 0 | 23 | 0 | — | 0 | 0 | — |
| 2022/23 | UEFA Nations League | Wales | 5 | 5 | 427 | 0 | — | 1 | 0 | 6.88 |
| 2022/23 | Friendlies | Wales | 1 | 0 | 29 | 0 | — | 0 | 0 | — |
| 2022/23 | World Cup | Wales | 3 | 3 | 270 | 0 | 0 | 1 | 0 | 6.50 |
| 2021/22 | Premier League | Tottenham | 3 | 0 | 86 | 0 | — | 0 | 0 | 6.20 |
| 2021/22 | League Cup | Tottenham | 1 | 0 | 1 | 0 | — | 0 | 0 | — |
| 2021/22 | FA Cup | Tottenham | 2 | 1 | 103 | 0 | — | 0 | 0 | 6.95 |
| 2021/22 | UEFA Europa Conference League | Tottenham | 4 | 4 | 324 | 0 | — | 0 | 0 | 6.88 |
| 2021/22 | Friendlies Clubs | Tottenham | 1 | 0 | 17 | 0 | — | 0 | 0 | — |
| 2021/22 | Friendlies | Wales | 2 | 1 | 119 | 0 | — | 0 | 0 | — |
| 2020/21 | Premier League | Tottenham | 12 | 8 | 729 | 0 | — | 0 | 0 | 6.97 |
| 2020/21 | Championship | Swansea | 4 | 4 | 360 | 0 | — | 0 | 0 | 7.38 |
| 2020/21 | FA Cup | Tottenham | 2 | 1 | 90 | 0 | — | 0 | 0 | 7.20 |
| 2020/21 | League Cup | Swansea | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.90 |
| 2020/21 | World Cup - Qualification Europe | Wales | 8 | 8 | 720 | 0 | — | 0 | 0 | 7.16 |
| 2020/21 | UEFA Nations League | Wales | 4 | 4 | 360 | 0 | — | 0 | 0 | 7.40 |
| 2020/21 | Friendlies | Wales | 2 | 1 | 67 | 0 | — | 0 | 0 | — |
| 2020/21 | Euro Championship | Wales | 4 | 4 | 360 | 0 | — | 1 | 0 | 6.30 |
| 2019/20 | Championship | Swansea | 21 | 20 | 1793 | 0 | 1 | 2 | 0 | 7.00 |
| 2019/20 | UEFA U21 Championship | Wales U21 | 5 | 5 | 450 | 0 | — | 1 | 0 | — |
| 2019/20 | Friendlies | Wales | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | Championship | Swansea | 27 | 23 | 2052 | 0 | — | 4 | 0 | 7.02 |
| 2018/19 | FA Cup | Swansea | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | League Two | Cheltenham | 12 | 7 | 642 | 0 | — | 0 | 0 | — |
| 2017/18 | Premier League 2 | Swansea City U23 | 12 | 12 | 1080 | 0 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Swansea City U21 | 4 | 4 | 360 | 0 | — | 1 | 0 | — |
| 2017/18 | Premier League International Cup | Swansea City U23 | 3 | 2 | 207 | 0 | — | 0 | 0 | — |
| 2017/18 | UEFA U21 Championship | Wales U21 | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | Tournoi Maurice Revello | 3 | 3 | 270 | 0 | — | 0 | 0 | — | |
| 2016/17 | EFL Trophy | Swansea City U23 | 4 | 4 | 360 | 0 | — | 1 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Knock | 3 Sept 2025 | 11 Sept 2025 | 8 |
| Knee Injury | 11 Dec 2024 | 13 Dec 2024 | 2 |
| Hip Injury | 15 Sept 2024 | 20 Sept 2024 | 5 |
| Illness | 4 Nov 2022 | 7 Nov 2022 | 3 |
| Knock | 9 Aug 2021 | 10 Sept 2021 | 32 |
Trophies
| Competition | Season | Place |
|---|---|---|
| Premier League Cup (England) | 2016/2017 | Winner |
| Premier League Cup (England) | — | Winner |
| League Cup (England) | 2020/2021 | 2nd Place |
| League Cup (England) | — | 2nd Place |
| Trofeo Joan Gamper (World) | 2023 | 2nd Place |
| Trofeo Joan Gamper (World) | — | 2nd Place |
| Championship (England) | 2024/2025 | Winner |
| Championship (England) | — | Winner |
