| Playing Time | Performance | Per 90 Minutes | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 15 | 9 | 831 | 9.2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 0 | 0.22 | 0.00 | 0.22 | 0.22 | 0.22 | Matches |
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 2 | 0 | 4 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 2 | 1 | 95 | 1.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 24 | 21 | 1,929 | 21.4 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 0 | 0.09 | 0.00 | 0.09 | 0.09 | 0.09 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5 | 5 | 444 | 4.9 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3 | 0 | 6 | 0.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 2 | 2 | 210 | 2.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | FA Cup | 0 | 0 | Matches | |||||||||||||||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 3 | 3 | 231 | 2.6 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 15 | 13 | 1,219 | 13.5 | 2 | 0 | 2 | 2 | 0 | 0 | 1 | 0 | 0.15 | 0.00 | 0.15 | 0.15 | 0.15 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 38 | 35 | 3,186 | 35.4 | 4 | 3 | 7 | 4 | 0 | 0 | 6 | 2 | 0.11 | 0.08 | 0.20 | 0.11 | 0.20 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 2 | 2 | 154 | 1.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 46 | 46 | 4,140 | 46.0 | 5 | 6 | 11 | 5 | 0 | 0 | 10 | 0 | 0.11 | 0.13 | 0.24 | 0.11 | 0.24 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 4 | 4 | 390 | 4.3 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 0.23 | 0.23 | 0.46 | 0.23 | 0.46 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 46 | 46 | 4,140 | 46.0 | 3 | 2 | 5 | 3 | 0 | 0 | 10 | 0 | 0.07 | 0.04 | 0.11 | 0.07 | 0.11 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 1 | 1 | 120 | 1.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 42 | 42 | 3,712 | 41.2 | 1 | 2 | 3 | 1 | 0 | 0 | 5 | 0 | 0.02 | 0.05 | 0.07 | 0.02 | 0.07 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 42 | 41 | 3,678 | 40.9 | 4 | 0 | 4 | 4 | 0 | 0 | 10 | 0 | 0.10 | 0.00 | 0.10 | 0.10 | 0.10 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 46 | 45 | 3,992 | 44.4 | 3 | 3 | 6 | 3 | 0 | 0 | 13 | 0 | 0.07 | 0.07 | 0.14 | 0.07 | 0.14 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | 1 | 0 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 1 | 0 | 31 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 44 | 44 | 3,960 | 44.0 | 2 | 0 | 2 | 2 | 0 | 0 | 10 | 0 | 0.05 | 0.00 | 0.05 | 0.05 | 0.05 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 36 | 36 | 3,195 | 35.5 | 3 | 1 | 4 | 3 | 0 | 0 | 4 | 0 | 0.08 | 0.03 | 0.11 | 0.08 | 0.11 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 45 | 45 | 4,050 | 45.0 | 4 | 1 | 5 | 4 | 0 | 0 | 10 | 0 | 0.09 | 0.02 | 0.11 | 0.09 | 0.11 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 12 Seasons | 2 Clubs | 4 Leagues | 487 | 463 | 41,698 | 463.3 | 36 | 19 | 55 | 36 | 0 | 0 | 90 | 4 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | |||
| Country | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Millwall (10 Seasons) | 4 Leagues | 433 | 424 | 38,089 | 423.2 | 32 | 19 | 51 | 32 | 0 | 0 | 84 | 3 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | ||||
| Reading (3 Seasons) | 3 Leagues | 54 | 39 | 3,609 | 40.1 | 4 | 0 | 4 | 4 | 0 | 0 | 6 | 1 | 0.10 | 0.00 | 0.10 | 0.10 | 0.10 | ||||
| Reading (1 Season) | 1 League | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| Championship (12 Seasons) | 427 | 410 | 36,819 | 409.1 | 33 | 18 | 51 | 33 | 0 | 0 | 82 | 2 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | |||||
| FA Cup (12 Seasons) | 27 | 24 | 2,180 | 24.2 | 1 | 1 | 2 | 1 | 0 | 0 | 6 | 2 | 0.04 | 0.04 | 0.08 | 0.04 | 0.08 | |||||
| EFL Cup (12 Seasons) | 18 | 16 | 1,480 | 16.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| League One (1 Season) | 15 | 13 | 1,219 | 13.5 | 2 | 0 | 2 | 2 | 0 | 0 | 1 | 0 | 0.15 | 0.00 | 0.15 | 0.15 | 0.15 | |||||
| PL2 — Div. 1 (1 Season) | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2014-2015 | 19 | Reading | 3 Leagues | 19 | 10 | 930 | 10.3 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 0 | 0.19 | 0.00 | 0.19 | 0.19 | 0.19 | |
| 2015-2016 | 20 | Reading | 3 Leagues | 30 | 27 | 2,463 | 27.4 | 2 | 0 | 2 | 2 | 0 | 0 | 4 | 1 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | |
| 2016-2017 | 21 | Reading | 3 Leagues | 5 | 2 | 216 | 2.4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2016-2017 | 21 | Reading | 1 League | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2016-2017 | 21 | Millwall | 2 Leagues | 18 | 16 | 1,450 | 16.1 | 2 | 0 | 2 | 2 | 0 | 0 | 3 | 1 | 0.12 | 0.00 | 0.12 | 0.12 | 0.12 | |
| 2017-2018 | 22 | Millwall | 3 Leagues | 42 | 39 | 3,520 | 39.1 | 4 | 3 | 7 | 4 | 0 | 0 | 6 | 2 | 0.10 | 0.08 | 0.18 | 0.10 | 0.18 | |
| 2018-2019 | 23 | Millwall | 3 Leagues | 51 | 51 | 4,620 | 51.3 | 6 | 7 | 13 | 6 | 0 | 0 | 10 | 0 | 0.12 | 0.14 | 0.25 | 0.12 | 0.25 | |
| 2019-2020 | 24 | Millwall | 3 Leagues | 49 | 49 | 4,440 | 49.3 | 3 | 2 | 5 | 3 | 0 | 0 | 10 | 0 | 0.06 | 0.04 | 0.10 | 0.06 | 0.10 | |
| 2020-2021 | 25 | Millwall | 3 Leagues | 46 | 46 | 4,072 | 45.2 | 1 | 2 | 3 | 1 | 0 | 0 | 6 | 0 | 0.02 | 0.04 | 0.07 | 0.02 | 0.07 | |
| 2021-2022 | 26 | Millwall | 3 Leagues | 46 | 45 | 4,038 | 44.9 | 4 | 0 | 4 | 4 | 0 | 0 | 11 | 0 | 0.09 | 0.00 | 0.09 | 0.09 | 0.09 | |
| 2022-2023 | 27 | Millwall | 3 Leagues | 48 | 45 | 4,024 | 44.7 | 3 | 3 | 6 | 3 | 0 | 0 | 13 | 0 | 0.07 | 0.07 | 0.13 | 0.07 | 0.13 | |
| 2023-2024 | 28 | Millwall | 3 Leagues | 46 | 46 | 4,140 | 46.0 | 2 | 0 | 2 | 2 | 0 | 0 | 10 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | |
| 2024-2025 | 29 | Millwall | 3 Leagues | 40 | 40 | 3,555 | 39.5 | 3 | 1 | 4 | 3 | 0 | 0 | 5 | 0 | 0.08 | 0.03 | 0.10 | 0.08 | 0.10 | |
| 2025-2026 | 30 | Millwall | 3 Leagues | 47 | 47 | 4,230 | 47.0 | 4 | 1 | 5 | 4 | 0 | 0 | 10 | 0 | 0.09 | 0.02 | 0.11 | 0.09 | 0.11 | |
| 12 Seasons | 2 Clubs | 4 Leagues | 487 | 463 | 41,698 | 463.3 | 36 | 19 | 55 | 36 | 0 | 0 | 90 | 4 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | ||
| Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Millwall (10 Seasons) | 4 Leagues | 433 | 424 | 38,089 | 423.2 | 32 | 19 | 51 | 32 | 0 | 0 | 84 | 3 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | |||
| Reading (3 Seasons) | 3 Leagues | 54 | 39 | 3,609 | 40.1 | 4 | 0 | 4 | 4 | 0 | 0 | 6 | 1 | 0.10 | 0.00 | 0.10 | 0.10 | 0.10 | |||
| Reading (1 Season) | 1 League | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||
| Championship (12 Seasons) | 427 | 410 | 36,819 | 409.1 | 33 | 18 | 51 | 33 | 0 | 0 | 82 | 2 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | ||||
| FA Cup (12 Seasons) | 27 | 24 | 2,180 | 24.2 | 1 | 1 | 2 | 1 | 0 | 0 | 6 | 2 | 0.04 | 0.04 | 0.08 | 0.04 | 0.08 | ||||
| EFL Cup (12 Seasons) | 18 | 16 | 1,480 | 16.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| League One (1 Season) | 15 | 13 | 1,219 | 13.5 | 2 | 0 | 2 | 2 | 0 | 0 | 1 | 0 | 0.15 | 0.00 | 0.15 | 0.15 | 0.15 | ||||
| PL2 — Div. 1 (1 Season) | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 19th | 15 | 9 | 831 | 9.2 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 0 | 0.22 | 0.00 | 0.22 | 0.22 | 0.22 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 17th | 24 | 21 | 1,929 | 21.4 | 2 | 0 | 2 | 2 | 0 | 0 | 2 | 0 | 0.09 | 0.00 | 0.09 | 0.09 | 0.09 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3rd | 3 | 0 | 6 | 0.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 11th | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 6th | 15 | 13 | 1,219 | 13.5 | 2 | 0 | 2 | 2 | 0 | 0 | 1 | 0 | 0.15 | 0.00 | 0.15 | 0.15 | 0.15 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 8th | 38 | 35 | 3,186 | 35.4 | 4 | 3 | 7 | 4 | 0 | 0 | 6 | 2 | 0.11 | 0.08 | 0.20 | 0.11 | 0.20 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 21st | 46 | 46 | 4,140 | 46.0 | 5 | 6 | 11 | 5 | 0 | 0 | 10 | 0 | 0.11 | 0.13 | 0.24 | 0.11 | 0.24 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 8th | 46 | 46 | 4,140 | 46.0 | 3 | 2 | 5 | 3 | 0 | 0 | 10 | 0 | 0.07 | 0.04 | 0.11 | 0.07 | 0.11 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 11th | 42 | 42 | 3,712 | 41.2 | 1 | 2 | 3 | 1 | 0 | 0 | 5 | 0 | 0.02 | 0.05 | 0.07 | 0.02 | 0.07 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 9th | 42 | 41 | 3,678 | 40.9 | 4 | 0 | 4 | 4 | 0 | 0 | 10 | 0 | 0.10 | 0.00 | 0.10 | 0.10 | 0.10 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 8th | 46 | 45 | 3,992 | 44.4 | 3 | 3 | 6 | 3 | 0 | 0 | 13 | 0 | 0.07 | 0.07 | 0.14 | 0.07 | 0.14 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 13th | 44 | 44 | 3,960 | 44.0 | 2 | 0 | 2 | 2 | 0 | 0 | 10 | 0 | 0.05 | 0.00 | 0.05 | 0.05 | 0.05 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 8th | 36 | 36 | 3,195 | 35.5 | 3 | 1 | 4 | 3 | 0 | 0 | 4 | 0 | 0.08 | 0.03 | 0.11 | 0.08 | 0.11 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 3rd | 45 | 45 | 4,050 | 45.0 | 4 | 1 | 5 | 4 | 0 | 0 | 10 | 0 | 0.09 | 0.02 | 0.11 | 0.09 | 0.11 | Matches |
| 12 Seasons | 2 Clubs | 2 Leagues | 442 | 423 | 38,038 | 422.6 | 35 | 18 | 53 | 35 | 0 | 0 | 83 | 2 | 0.08 | 0.04 | 0.13 | 0.08 | 0.13 | ||||
| Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Millwall (10 Seasons) | 2 Leagues | 400 | 393 | 35,272 | 391.9 | 31 | 18 | 49 | 31 | 0 | 0 | 79 | 2 | 0.08 | 0.05 | 0.13 | 0.08 | 0.13 | |||||
| Reading (3 Seasons) | 1 League | 42 | 30 | 2,766 | 30.7 | 4 | 0 | 4 | 4 | 0 | 0 | 4 | 0 | 0.13 | 0.00 | 0.13 | 0.13 | 0.13 | |||||
| Reading (1 Season) | 1 League | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Championship (12 Seasons) | 427 | 410 | 36,819 | 409.1 | 33 | 18 | 51 | 33 | 0 | 0 | 82 | 2 | 0.08 | 0.04 | 0.12 | 0.08 | 0.12 | ||||||
| League One (1 Season) | 15 | 13 | 1,219 | 13.5 | 2 | 0 | 2 | 2 | 0 | 0 | 1 | 0 | 0.15 | 0.00 | 0.15 | 0.15 | 0.15 | ||||||
| PL2 — Div. 1 (1 Season) | 4 | 4 | 310 | 3.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 3rd | 2 | 0 | 4 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 17th | 2 | 1 | 95 | 1.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5th | 5 | 5 | 444 | 4.9 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 17th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 9th | 2 | 2 | 210 | 2.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | FA Cup | 33rd | 0 | 0 | Matches | |||||||||||||||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 5th | 3 | 3 | 231 | 2.6 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 33rd | 2 | 2 | 154 | 1.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 17th | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 17th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 5th | 4 | 4 | 390 | 4.3 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | 0 | 0.23 | 0.23 | 0.46 | 0.23 | 0.46 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 33rd | 1 | 1 | 120 | 1.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 17th | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 17th | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 17th | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | Rd3 | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | Rd1 | 1 | 0 | 1 | 0.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 1 | 0 | 31 | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | Rd1 | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | Rd2 | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | Rd3 | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 12 Seasons | 2 Clubs | 2 Leagues | 45 | 40 | 3,660 | 40.7 | 1 | 1 | 2 | 1 | 0 | 0 | 7 | 2 | 0.02 | 0.02 | 0.05 | 0.02 | 0.05 | ||||
| Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Millwall (10 Seasons) | 2 Leagues | 33 | 31 | 2,817 | 31.3 | 1 | 1 | 2 | 1 | 0 | 0 | 5 | 1 | 0.03 | 0.03 | 0.06 | 0.03 | 0.06 | |||||
| Reading (3 Seasons) | 2 Leagues | 12 | 9 | 843 | 9.4 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 1 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| FA Cup (12 Seasons) | 27 | 24 | 2,180 | 24.2 | 1 | 1 | 2 | 1 | 0 | 0 | 6 | 2 | 0.04 | 0.04 | 0.08 | 0.04 | 0.08 | ||||||
| EFL Cup (12 Seasons) | 18 | 16 | 1,480 | 16.4 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||
| Standard | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 9.2 | 2 | 6 | 0.65 | 0.33 | 0 | 0 | Matches | ||||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 0.0 | 0 | 0 | 0 | Matches | |||||||
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 1.1 | 0 | 0 | 0 | Matches | |||||||
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 21.4 | 2 | 7 | 0.33 | 0.29 | 0 | 0 | Matches | ||||
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 4.9 | 0 | 0 | 0 | Matches | |||||||
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 1.0 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 0.1 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 2.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 2.6 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 13.5 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | Matches | ||
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 3.4 | 0 | 0 | 0 | Matches | |||||||
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 35.4 | 4 | 38 | 17 | 44.7 | 1.07 | 0.48 | 0.11 | 0.24 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 1.7 | 0 | 1 | 1 | 100.0 | 0.58 | 0.58 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 2.0 | 0 | 3 | 0 | 0.0 | 1.50 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 46.0 | 5 | 62 | 21 | 33.9 | 1.35 | 0.46 | 0.08 | 0.24 | 0 | 0 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 4.3 | 1 | 6 | 2 | 33.3 | 1.38 | 0.46 | 0.17 | 0.50 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 46.0 | 3 | 41 | 12 | 29.3 | 0.89 | 0.26 | 0.07 | 0.25 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 1.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 41.2 | 1 | 34 | 9 | 26.5 | 0.82 | 0.22 | 0.03 | 0.11 | 0 | 0 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 2.0 | 0 | 5 | 1 | 20.0 | 2.50 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 2.0 | 0 | 4 | 1 | 25.0 | 2.00 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 40.9 | 4 | 43 | 15 | 34.9 | 1.05 | 0.37 | 0.09 | 0.27 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | 3.0 | 0 | 5 | 2 | 40.0 | 1.67 | 0.67 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 44.4 | 3 | 38 | 11 | 28.9 | 0.86 | 0.25 | 0.08 | 0.27 | 0 | 0 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | 0.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 0.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 44.0 | 2 | 49 | 12 | 24.5 | 1.11 | 0.27 | 0.04 | 0.17 | 0 | 0 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 4 | 0 | 0.0 | 4.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | Matches | |||||||
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 35.5 | 3 | 43 | 12 | 27.9 | 1.21 | 0.34 | 0.07 | 0.25 | 0 | 0 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 45.0 | 4 | 36 | 14 | 38.9 | 0.80 | 0.31 | 0.11 | 0.29 | 0 | 0 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 2 | 2 | 100.0 | 2.00 | 2.00 | 0.00 | 0.00 | 0 | 0 | Matches |
| 12 Seasons | 2 Clubs | 4 Leagues | 463.3 | 36 | 415 | 149 | 32.8 | 0.98 | 0.33 | 0.08 | 0.24 | 0 | 0 | |||
| Country | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Millwall (10 Seasons) | 4 Leagues | 423.2 | 32 | 415 | 136 | 32.8 | 0.99 | 0.32 | 0.08 | 0.24 | 0 | 0 | ||||
| Reading (3 Seasons) | 3 Leagues | 40.1 | 4 | 0 | 13 | 0.00 | 0.39 | 0.31 | 0 | 0 | ||||||
| Reading (1 Season) | 1 League | 3.4 | 0 | 0 | 0 | |||||||||||
| Championship (12 Seasons) | 409.1 | 33 | 384 | 136 | 32.0 | 1.01 | 0.33 | 0.08 | 0.24 | 0 | 0 | |||||
| FA Cup (12 Seasons) | 24.2 | 1 | 15 | 5 | 33.3 | 0.96 | 0.32 | 0.07 | 0.20 | 0 | 0 | |||||
| EFL Cup (12 Seasons) | 16.4 | 0 | 16 | 4 | 25.0 | 1.11 | 0.28 | 0.00 | 0.00 | 0 | 0 | |||||
| League One (1 Season) | 13.5 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | |||||||
| PL2 — Div. 1 (1 Season) | 3.4 | 0 | 0 | 0 | ||||||||||||
| Standard | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2014-2015 | 19 | Reading | 3 Leagues | 10.3 | 2 | 6 | 0.65 | 0.33 | 0 | 0 | |||||
| 2015-2016 | 20 | Reading | 3 Leagues | 27.4 | 2 | 7 | 0.33 | 0.29 | 0 | 0 | |||||
| 2016-2017 | 21 | Reading | 3 Leagues | 2.4 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||
| 2016-2017 | 21 | Reading | 1 League | 3.4 | 0 | 0 | 0 | ||||||||
| 2016-2017 | 21 | Millwall | 2 Leagues | 16.1 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | |||
| 2017-2018 | 22 | Millwall | 3 Leagues | 39.1 | 4 | 42 | 18 | 42.9 | 1.07 | 0.46 | 0.10 | 0.22 | 0 | 0 | |
| 2018-2019 | 23 | Millwall | 3 Leagues | 51.3 | 6 | 68 | 23 | 33.8 | 1.32 | 0.45 | 0.09 | 0.26 | 0 | 0 | |
| 2019-2020 | 24 | Millwall | 3 Leagues | 49.3 | 3 | 41 | 12 | 29.3 | 0.83 | 0.24 | 0.07 | 0.25 | 0 | 0 | |
| 2020-2021 | 25 | Millwall | 3 Leagues | 45.2 | 1 | 43 | 11 | 25.6 | 0.95 | 0.24 | 0.02 | 0.09 | 0 | 0 | |
| 2021-2022 | 26 | Millwall | 3 Leagues | 44.9 | 4 | 48 | 17 | 35.4 | 1.07 | 0.38 | 0.08 | 0.24 | 0 | 0 | |
| 2022-2023 | 27 | Millwall | 3 Leagues | 44.7 | 3 | 38 | 11 | 28.9 | 0.85 | 0.25 | 0.08 | 0.27 | 0 | 0 | |
| 2023-2024 | 28 | Millwall | 3 Leagues | 46.0 | 2 | 53 | 12 | 22.6 | 1.18 | 0.27 | 0.04 | 0.17 | 0 | 0 | |
| 2024-2025 | 29 | Millwall | 3 Leagues | 39.5 | 3 | 43 | 12 | 27.9 | 1.09 | 0.30 | 0.07 | 0.25 | 0 | 0 | |
| 2025-2026 | 30 | Millwall | 3 Leagues | 47.0 | 4 | 39 | 16 | 41.0 | 0.83 | 0.34 | 0.10 | 0.25 | 0 | 0 | |
| 12 Seasons | 2 Clubs | 4 Leagues | 463.3 | 36 | 415 | 149 | 32.8 | 0.98 | 0.33 | 0.08 | 0.24 | 0 | 0 | ||
| Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Millwall (10 Seasons) | 4 Leagues | 423.2 | 32 | 415 | 136 | 32.8 | 0.99 | 0.32 | 0.08 | 0.24 | 0 | 0 | |||
| Reading (3 Seasons) | 3 Leagues | 40.1 | 4 | 0 | 13 | 0.00 | 0.39 | 0.31 | 0 | 0 | |||||
| Reading (1 Season) | 1 League | 3.4 | 0 | 0 | 0 | ||||||||||
| Championship (12 Seasons) | 409.1 | 33 | 384 | 136 | 32.0 | 1.01 | 0.33 | 0.08 | 0.24 | 0 | 0 | ||||
| FA Cup (12 Seasons) | 24.2 | 1 | 15 | 5 | 33.3 | 0.96 | 0.32 | 0.07 | 0.20 | 0 | 0 | ||||
| EFL Cup (12 Seasons) | 16.4 | 0 | 16 | 4 | 25.0 | 1.11 | 0.28 | 0.00 | 0.00 | 0 | 0 | ||||
| League One (1 Season) | 13.5 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | ||||||
| PL2 — Div. 1 (1 Season) | 3.4 | 0 | 0 | 0 | |||||||||||
| Standard | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 19th | 9.2 | 2 | 6 | 0.65 | 0.33 | 0 | 0 | Matches | ||||
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 17th | 21.4 | 2 | 7 | 0.33 | 0.29 | 0 | 0 | Matches | ||||
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3rd | 0.1 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 11th | 3.4 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 6th | 13.5 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | Matches | ||
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 8th | 35.4 | 4 | 38 | 17 | 44.7 | 1.07 | 0.48 | 0.11 | 0.24 | 0 | 0 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 21st | 46.0 | 5 | 62 | 21 | 33.9 | 1.35 | 0.46 | 0.08 | 0.24 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 8th | 46.0 | 3 | 41 | 12 | 29.3 | 0.89 | 0.26 | 0.07 | 0.25 | 0 | 0 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 11th | 41.2 | 1 | 34 | 9 | 26.5 | 0.82 | 0.22 | 0.03 | 0.11 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 9th | 40.9 | 4 | 43 | 15 | 34.9 | 1.05 | 0.37 | 0.09 | 0.27 | 0 | 0 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 8th | 44.4 | 3 | 38 | 11 | 28.9 | 0.86 | 0.25 | 0.08 | 0.27 | 0 | 0 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 13th | 44.0 | 2 | 49 | 12 | 24.5 | 1.11 | 0.27 | 0.04 | 0.17 | 0 | 0 | Matches |
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 8th | 35.5 | 3 | 43 | 12 | 27.9 | 1.21 | 0.34 | 0.07 | 0.25 | 0 | 0 | Matches |
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 3rd | 45.0 | 4 | 36 | 14 | 38.9 | 0.80 | 0.31 | 0.11 | 0.29 | 0 | 0 | Matches |
| 12 Seasons | 2 Clubs | 2 Leagues | 422.6 | 35 | 384 | 140 | 33.1 | 0.98 | 0.33 | 0.08 | 0.25 | 0 | 0 | ||||
| Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Millwall (10 Seasons) | 2 Leagues | 391.9 | 31 | 384 | 127 | 33.1 | 0.98 | 0.32 | 0.08 | 0.24 | 0 | 0 | |||||
| Reading (3 Seasons) | 1 League | 30.7 | 4 | 0 | 13 | 0.00 | 0.42 | 0.31 | 0 | 0 | |||||||
| Reading (1 Season) | 1 League | 3.4 | 0 | 0 | 0 | ||||||||||||
| Championship (12 Seasons) | 409.1 | 33 | 384 | 136 | 32.0 | 1.01 | 0.33 | 0.08 | 0.24 | 0 | 0 | ||||||
| League One (1 Season) | 13.5 | 2 | 0 | 4 | 0.00 | 0.30 | 0.50 | 0 | 0 | ||||||||
| PL2 — Div. 1 (1 Season) | 3.4 | 0 | 0 | 0 | |||||||||||||
| Standard | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 3rd | 0.0 | 0 | 0 | 0 | Matches | |||||||
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 17th | 1.1 | 0 | 0 | 0 | Matches | |||||||
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5th | 4.9 | 0 | 0 | 0 | Matches | |||||||
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 17th | 1.0 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 9th | 2.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 5th | 2.6 | 0 | 0 | 0 | Matches | |||||||
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 33rd | 1.7 | 0 | 1 | 1 | 100.0 | 0.58 | 0.58 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 0 | 3 | 0 | 0.0 | 1.50 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 17th | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 5th | 4.3 | 1 | 6 | 2 | 33.3 | 1.38 | 0.46 | 0.17 | 0.50 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 33rd | 1.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 17th | 2.0 | 0 | 5 | 1 | 20.0 | 2.50 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 0 | 4 | 1 | 25.0 | 2.00 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | Rd3 | 3.0 | 0 | 5 | 2 | 40.0 | 1.67 | 0.67 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | Rd1 | 0.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 0.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | Rd1 | 1.0 | 0 | 4 | 0 | 0.0 | 4.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | Matches | ||||||||
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | Rd2 | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | Rd3 | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 2 | 2 | 100.0 | 2.00 | 2.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 12 Seasons | 2 Clubs | 2 Leagues | 40.7 | 1 | 31 | 9 | 29.0 | 1.03 | 0.30 | 0.03 | 0.11 | 0 | 0 | ||||
| Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Millwall (10 Seasons) | 2 Leagues | 31.3 | 1 | 31 | 9 | 29.0 | 1.12 | 0.32 | 0.03 | 0.11 | 0 | 0 | |||||
| Reading (3 Seasons) | 2 Leagues | 9.4 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||||
| FA Cup (12 Seasons) | 24.2 | 1 | 15 | 5 | 33.3 | 0.96 | 0.32 | 0.07 | 0.20 | 0 | 0 | ||||||
| EFL Cup (12 Seasons) | 16.4 | 0 | 16 | 4 | 25.0 | 1.11 | 0.28 | 0.00 | 0.00 | 0 | 0 | ||||||
| Playing Time | Starts | Subs | Team Success | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 15 | 831 | 55 | 20.1 | 9.2 | 9 | 9 | 6 | 27 | 1.47 | 8 | 19 | -11 | -1.19 | -0.92 | Matches | ||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 2 | 4 | 2 | 0.7 | 0.0 | 0 | 0 | 2 | 1 | 4 | 3.00 | 0 | 0 | 0 | 0.00 | -0.80 | Matches | |
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 2 | 95 | 48 | 35.2 | 1.1 | 1 | 91 | 1 | 1 | 4 | 1 | 1.50 | 1 | 0 | +1 | +0.95 | +0.95 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 24 | 1,929 | 80 | 46.6 | 21.4 | 21 | 21 | 3 | 14 | 1.17 | 23 | 32 | -9 | -0.42 | -0.50 | Matches | ||
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5 | 444 | 89 | 98.7 | 4.9 | 5 | 89 | 4 | 0 | 0 | 2.00 | 14 | 6 | +8 | +1.62 | +16.62 | Matches | |
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | -1.86 | Matches | |
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3 | 6 | 2 | 0.1 | 0.1 | 0 | 0 | 3 | 9 | 1.33 | 0 | 1 | -1 | -15.00 | -15.11 | Matches | ||
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 2 | 210 | 105 | 53.8 | 2.3 | 2 | 105 | 2 | 0 | 0 | 2.00 | 4 | 2 | +2 | +0.86 | +1.36 | Matches | |
| 2016-2017 | 21 | Reading | eng ENG | FA Cup | 0 | 0 | 0 | 0 | 1 | Matches | ||||||||||||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 3 | 231 | 77 | 42.8 | 2.6 | 3 | 77 | 2 | 0 | 0 | 2.00 | 1 | 6 | -5 | -1.95 | -4.28 | Matches | |
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 15 | 1,219 | 81 | 29.4 | 13.5 | 13 | 13 | 2 | 4 | 1.53 | 12 | 11 | +1 | +0.07 | -0.17 | Matches | ||
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | Matches | |
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 38 | 3,186 | 84 | 77.0 | 35.4 | 35 | 34 | 3 | 7 | 1.74 | 42 | 34 | +8 | +0.23 | -0.06 | Matches | ||
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 2 | 154 | 77 | 73.3 | 1.7 | 2 | 77 | 1 | 0 | 0 | 1.50 | 1 | 3 | -2 | -1.17 | -4.38 | Matches | |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 2 | 180 | 90 | 66.7 | 2.0 | 2 | 90 | 2 | 0 | 1 | 2.00 | 6 | 3 | +3 | +1.50 | +2.50 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 46 | 4,140 | 90 | 100.0 | 46.0 | 46 | 90 | 46 | 0 | 0 | 0.96 | 48 | 64 | -16 | -0.35 | Matches | ||
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 2 | 0.00 | 1 | 3 | -2 | -2.00 | -2.43 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 4 | 390 | 98 | 100.0 | 4.3 | 4 | 98 | 4 | 0 | 0 | 2.25 | 8 | 5 | +3 | +0.69 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 46 | 4,140 | 90 | 100.0 | 46.0 | 46 | 90 | 46 | 0 | 0 | 1.48 | 57 | 51 | +6 | +0.13 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 1 | 120 | 120 | 57.1 | 1.3 | 1 | 120 | 1 | 0 | 1 | 0.00 | 2 | 2 | 0 | 0.00 | -1.00 | Matches | |
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 3 | 2 | +1 | +0.50 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 42 | 3,712 | 88 | 89.7 | 41.2 | 42 | 88 | 41 | 0 | 0 | 1.43 | 43 | 47 | -4 | -0.10 | +0.11 | Matches | |
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 2 | 180 | 90 | 66.7 | 2.0 | 2 | 90 | 2 | 0 | 0 | 3.00 | 6 | 2 | +4 | +2.00 | +4.00 | Matches | |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 2 | 3 | -1 | -0.50 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 42 | 3,678 | 88 | 88.8 | 40.9 | 41 | 90 | 40 | 1 | 5 | 2 | 1.57 | 47 | 39 | +8 | +0.20 | +0.20 | Matches |
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 2.00 | 5 | 4 | +1 | +0.33 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 46 | 3,992 | 87 | 96.4 | 44.4 | 45 | 89 | 43 | 1 | 5 | 0 | 1.48 | 55 | 48 | +7 | +0.16 | +0.16 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | 1 | 1 | 1 | 1.1 | 0.0 | 0 | 0 | 1 | 1 | 0 | 0.00 | 0 | 0 | 0 | 0.00 | +1.01 | Matches | |
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 1 | 31 | 31 | 34.4 | 0.3 | 0 | 0 | 1 | 31 | 0 | 0.00 | 0 | 0 | 0 | 0.00 | +3.05 | Matches | |
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 44 | 3,960 | 90 | 95.7 | 44.0 | 44 | 90 | 44 | 0 | 1 | 1.34 | 44 | 51 | -7 | -0.16 | +1.34 | Matches | |
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 4 | -4 | -4.00 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 2 | 3 | -1 | -1.00 | Matches | ||
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 36 | 3,195 | 89 | 77.2 | 35.5 | 36 | 89 | 35 | 0 | 0 | 1.64 | 41 | 39 | +2 | +0.06 | +0.44 | Matches | |
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 1 | 3.00 | 1 | 0 | +1 | +1.00 | +2.00 | Matches | |
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 2.00 | 6 | 3 | +3 | +1.00 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 45 | 4,050 | 90 | 97.8 | 45.0 | 45 | 90 | 45 | 0 | 0 | 1.79 | 63 | 46 | +17 | +0.38 | +2.38 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | 1 | 90 | 90 | 33.3 | 1.0 | 1 | 90 | 1 | 0 | 2 | 3.00 | 1 | 0 | +1 | +1.00 | +0.50 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 5 | -4 | -4.00 | Matches | ||
| 12 Seasons | 2 Clubs | 4 Leagues | 487 | 41,698 | 86 | 69.5 | 463.3 | 463 | 90 | 454 | 24 | 7 | 77 | 1.48 | 550 | 542 | +8 | +0.02 | -0.03 | |||
| Country | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Millwall (10 Seasons) | 4 Leagues | 433 | 38,089 | 88 | 83.7 | 423.2 | 424 | 89 | 416 | 9 | 11 | 21 | 1.49 | 499 | 480 | +19 | +0.04 | -0.04 | ||||
| Reading (3 Seasons) | 3 Leagues | 54 | 3,609 | 67 | 24.9 | 40.1 | 39 | 93 | 38 | 15 | 2 | 56 | 1.43 | 51 | 62 | -11 | -0.27 | -0.29 | ||||
| Reading (1 Season) | 1 League | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | |||||
| Championship (12 Seasons) | 427 | 36,819 | 86 | 74.1 | 409.1 | 410 | 89 | 404 | 17 | 5 | 60 | 1.46 | 471 | 471 | 0 | 0.00 | +0.07 | |||||
| FA Cup (12 Seasons) | 27 | 2,180 | 81 | 66.1 | 24.2 | 24 | 89 | 22 | 3 | 11 | 6 | 1.74 | 44 | 38 | +6 | +0.25 | -0.54 | |||||
| EFL Cup (12 Seasons) | 18 | 1,480 | 82 | 51.9 | 16.4 | 16 | 92 | 15 | 2 | 3 | 7 | 1.56 | 23 | 22 | +1 | +0.06 | -0.07 | |||||
| League One (1 Season) | 15 | 1,219 | 81 | 29.4 | 13.5 | 13 | 13 | 2 | 4 | 1.53 | 12 | 11 | +1 | +0.07 | -0.17 | |||||||
| PL2 — Div. 1 (1 Season) | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | ||||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2014-2015 | 19 | Reading | 3 Leagues | 19 | 930 | 49 | 18.7 | 10.3 | 10 | 93 | 10 | 9 | 2 | 32 | 1.63 | 9 | 19 | -10 | -0.97 | -0.86 | |
| 2015-2016 | 20 | Reading | 3 Leagues | 30 | 2,463 | 82 | 50.4 | 27.4 | 27 | 89 | 26 | 3 | 14 | 1.27 | 38 | 40 | -2 | -0.07 | -0.18 | ||
| 2016-2017 | 21 | Reading | 3 Leagues | 5 | 216 | 43 | 4.7 | 2.4 | 2 | 105 | 2 | 3 | 10 | 1.60 | 4 | 3 | +1 | +0.42 | +0.33 | ||
| 2016-2017 | 21 | Reading | 1 League | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | ||
| 2016-2017 | 21 | Millwall | 2 Leagues | 18 | 1,450 | 81 | 31.0 | 16.1 | 16 | 77 | 15 | 2 | 4 | 1.61 | 13 | 17 | -4 | -0.25 | -0.69 | ||
| 2017-2018 | 22 | Millwall | 3 Leagues | 42 | 3,520 | 84 | 76.2 | 39.1 | 39 | 84 | 37 | 3 | 8 | 1.74 | 49 | 40 | +9 | +0.23 | -0.10 | ||
| 2018-2019 | 23 | Millwall | 3 Leagues | 51 | 4,620 | 91 | 95.7 | 51.3 | 51 | 91 | 51 | 0 | 2 | 1.04 | 57 | 72 | -15 | -0.29 | -0.72 | ||
| 2019-2020 | 24 | Millwall | 3 Leagues | 49 | 4,440 | 91 | 98.0 | 49.3 | 49 | 91 | 49 | 0 | 1 | 1.45 | 62 | 55 | +7 | +0.14 | -0.86 | ||
| 2020-2021 | 25 | Millwall | 3 Leagues | 46 | 4,072 | 89 | 88.7 | 45.2 | 46 | 89 | 45 | 0 | 0 | 1.50 | 51 | 52 | -1 | -0.02 | +0.50 | ||
| 2021-2022 | 26 | Millwall | 3 Leagues | 46 | 4,038 | 88 | 89.7 | 44.9 | 45 | 90 | 44 | 1 | 5 | 2 | 1.56 | 53 | 45 | +8 | +0.18 | +0.18 | |
| 2022-2023 | 27 | Millwall | 3 Leagues | 48 | 4,024 | 84 | 93.1 | 44.7 | 45 | 89 | 43 | 3 | 12 | 0 | 1.42 | 55 | 48 | +7 | +0.16 | +1.07 | |
| 2023-2024 | 28 | Millwall | 3 Leagues | 46 | 4,140 | 90 | 95.8 | 46.0 | 46 | 90 | 46 | 0 | 1 | 1.28 | 46 | 58 | -12 | -0.26 | +1.24 | ||
| 2024-2025 | 29 | Millwall | 3 Leagues | 40 | 3,555 | 89 | 77.5 | 39.5 | 40 | 89 | 39 | 0 | 1 | 1.70 | 48 | 42 | +6 | +0.15 | +0.59 | ||
| 2025-2026 | 30 | Millwall | 3 Leagues | 47 | 4,230 | 90 | 94.0 | 47.0 | 47 | 90 | 47 | 0 | 2 | 1.78 | 65 | 51 | +14 | +0.30 | +0.63 | ||
| 12 Seasons | 2 Clubs | 4 Leagues | 487 | 41,698 | 86 | 69.5 | 463.3 | 463 | 90 | 454 | 24 | 7 | 77 | 1.48 | 550 | 542 | +8 | +0.02 | -0.03 | ||
| Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Millwall (10 Seasons) | 4 Leagues | 433 | 38,089 | 88 | 83.7 | 423.2 | 424 | 89 | 416 | 9 | 11 | 21 | 1.49 | 499 | 480 | +19 | +0.04 | -0.04 | |||
| Reading (3 Seasons) | 3 Leagues | 54 | 3,609 | 67 | 24.9 | 40.1 | 39 | 93 | 38 | 15 | 2 | 56 | 1.43 | 51 | 62 | -11 | -0.27 | -0.29 | |||
| Reading (1 Season) | 1 League | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | ||||
| Championship (12 Seasons) | 427 | 36,819 | 86 | 74.1 | 409.1 | 410 | 89 | 404 | 17 | 5 | 60 | 1.46 | 471 | 471 | 0 | 0.00 | +0.07 | ||||
| FA Cup (12 Seasons) | 27 | 2,180 | 81 | 66.1 | 24.2 | 24 | 89 | 22 | 3 | 11 | 6 | 1.74 | 44 | 38 | +6 | +0.25 | -0.54 | ||||
| EFL Cup (12 Seasons) | 18 | 1,480 | 82 | 51.9 | 16.4 | 16 | 92 | 15 | 2 | 3 | 7 | 1.56 | 23 | 22 | +1 | +0.06 | -0.07 | ||||
| League One (1 Season) | 15 | 1,219 | 81 | 29.4 | 13.5 | 13 | 13 | 2 | 4 | 1.53 | 12 | 11 | +1 | +0.07 | -0.17 | ||||||
| PL2 — Div. 1 (1 Season) | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | |||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 19th | 15 | 831 | 55 | 20.1 | 9.2 | 9 | 9 | 6 | 27 | 1.47 | 8 | 19 | -11 | -1.19 | -0.92 | Matches | ||
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 17th | 24 | 1,929 | 80 | 46.6 | 21.4 | 21 | 21 | 3 | 14 | 1.17 | 23 | 32 | -9 | -0.42 | -0.50 | Matches | ||
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3rd | 3 | 6 | 2 | 0.1 | 0.1 | 0 | 0 | 3 | 9 | 1.33 | 0 | 1 | -1 | -15.00 | -15.11 | Matches | ||
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 11th | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | Matches | |
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 6th | 15 | 1,219 | 81 | 29.4 | 13.5 | 13 | 13 | 2 | 4 | 1.53 | 12 | 11 | +1 | +0.07 | -0.17 | Matches | ||
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 8th | 38 | 3,186 | 84 | 77.0 | 35.4 | 35 | 34 | 3 | 7 | 1.74 | 42 | 34 | +8 | +0.23 | -0.06 | Matches | ||
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 21st | 46 | 4,140 | 90 | 100.0 | 46.0 | 46 | 90 | 46 | 0 | 0 | 0.96 | 48 | 64 | -16 | -0.35 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 8th | 46 | 4,140 | 90 | 100.0 | 46.0 | 46 | 90 | 46 | 0 | 0 | 1.48 | 57 | 51 | +6 | +0.13 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 11th | 42 | 3,712 | 88 | 89.7 | 41.2 | 42 | 88 | 41 | 0 | 0 | 1.43 | 43 | 47 | -4 | -0.10 | +0.11 | Matches | |
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 9th | 42 | 3,678 | 88 | 88.8 | 40.9 | 41 | 90 | 40 | 1 | 5 | 2 | 1.57 | 47 | 39 | +8 | +0.20 | +0.20 | Matches |
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 8th | 46 | 3,992 | 87 | 96.4 | 44.4 | 45 | 89 | 43 | 1 | 5 | 0 | 1.48 | 55 | 48 | +7 | +0.16 | +0.16 | Matches |
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 13th | 44 | 3,960 | 90 | 95.7 | 44.0 | 44 | 90 | 44 | 0 | 1 | 1.34 | 44 | 51 | -7 | -0.16 | +1.34 | Matches | |
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 8th | 36 | 3,195 | 89 | 77.2 | 35.5 | 36 | 89 | 35 | 0 | 0 | 1.64 | 41 | 39 | +2 | +0.06 | +0.44 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 3rd | 45 | 4,050 | 90 | 97.8 | 45.0 | 45 | 90 | 45 | 0 | 0 | 1.79 | 63 | 46 | +17 | +0.38 | +2.38 | Matches | |
| 12 Seasons | 2 Clubs | 2 Leagues | 442 | 38,038 | 86 | 70.7 | 422.6 | 423 | 89 | 417 | 19 | 5 | 64 | 1.47 | 483 | 482 | +1 | 0.00 | +0.01 | ||||
| Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Millwall (10 Seasons) | 2 Leagues | 400 | 35,272 | 88 | 85.2 | 391.9 | 393 | 89 | 387 | 7 | 5 | 14 | 1.48 | 452 | 430 | +22 | +0.06 | +0.04 | |||||
| Reading (3 Seasons) | 1 League | 42 | 2,766 | 66 | 22.3 | 30.7 | 30 | 30 | 12 | 50 | 1.29 | 31 | 52 | -21 | -0.68 | -0.66 | |||||||
| Reading (1 Season) | 1 League | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | ||||||
| Championship (12 Seasons) | 427 | 36,819 | 86 | 74.1 | 409.1 | 410 | 89 | 404 | 17 | 5 | 60 | 1.46 | 471 | 471 | 0 | 0.00 | +0.07 | ||||||
| League One (1 Season) | 15 | 1,219 | 81 | 29.4 | 13.5 | 13 | 13 | 2 | 4 | 1.53 | 12 | 11 | +1 | +0.07 | -0.17 | ||||||||
| PL2 — Div. 1 (1 Season) | 4 | 310 | 78 | 15.7 | 3.4 | 4 | 78 | 2 | 0 | 0 | 0.25 | 2 | 6 | -4 | -1.16 | -0.30 | |||||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 3rd | 2 | 4 | 2 | 0.7 | 0.0 | 0 | 0 | 2 | 1 | 4 | 3.00 | 0 | 0 | 0 | 0.00 | -0.80 | Matches | |
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 17th | 2 | 95 | 48 | 35.2 | 1.1 | 1 | 91 | 1 | 1 | 4 | 1 | 1.50 | 1 | 0 | +1 | +0.95 | +0.95 | Matches |
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5th | 5 | 444 | 89 | 98.7 | 4.9 | 5 | 89 | 4 | 0 | 0 | 2.00 | 14 | 6 | +8 | +1.62 | +16.62 | Matches | |
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 17th | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | -1.86 | Matches | |
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 9th | 2 | 210 | 105 | 53.8 | 2.3 | 2 | 105 | 2 | 0 | 0 | 2.00 | 4 | 2 | +2 | +0.86 | +1.36 | Matches | |
| 2016-2017 | 21 | Reading | eng ENG | FA Cup | 33rd | 0 | 0 | 0 | 0 | 1 | Matches | ||||||||||||
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 5th | 3 | 231 | 77 | 42.8 | 2.6 | 3 | 77 | 2 | 0 | 0 | 2.00 | 1 | 6 | -5 | -1.95 | -4.28 | Matches | |
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 33rd | 2 | 154 | 77 | 73.3 | 1.7 | 2 | 77 | 1 | 0 | 0 | 1.50 | 1 | 3 | -2 | -1.17 | -4.38 | Matches | |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 17th | 2 | 180 | 90 | 66.7 | 2.0 | 2 | 90 | 2 | 0 | 1 | 2.00 | 6 | 3 | +3 | +1.50 | +2.50 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 17th | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 2 | 0.00 | 1 | 3 | -2 | -2.00 | -2.43 | Matches | |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 5th | 4 | 390 | 98 | 100.0 | 4.3 | 4 | 98 | 4 | 0 | 0 | 2.25 | 8 | 5 | +3 | +0.69 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 33rd | 1 | 120 | 120 | 57.1 | 1.3 | 1 | 120 | 1 | 0 | 1 | 0.00 | 2 | 2 | 0 | 0.00 | -1.00 | Matches | |
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 17th | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 3 | 2 | +1 | +0.50 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 17th | 2 | 180 | 90 | 66.7 | 2.0 | 2 | 90 | 2 | 0 | 0 | 3.00 | 6 | 2 | +4 | +2.00 | +4.00 | Matches | |
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 17th | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 2 | 3 | -1 | -0.50 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | Rd3 | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 2.00 | 5 | 4 | +1 | +0.33 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | Matches | |||
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | Rd1 | 1 | 1 | 1 | 1.1 | 0.0 | 0 | 0 | 1 | 1 | 0 | 0.00 | 0 | 0 | 0 | 0.00 | +1.01 | Matches | |
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 1 | 31 | 31 | 34.4 | 0.3 | 0 | 0 | 1 | 31 | 0 | 0.00 | 0 | 0 | 0 | 0.00 | +3.05 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | Rd1 | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 4 | -4 | -4.00 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 2 | 3 | -1 | -1.00 | Matches | |||
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | Rd2 | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 1 | 3.00 | 1 | 0 | +1 | +1.00 | +2.00 | Matches | |
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 2.00 | 6 | 3 | +3 | +1.00 | Matches | |||
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | Rd3 | 1 | 90 | 90 | 33.3 | 1.0 | 1 | 90 | 1 | 0 | 2 | 3.00 | 1 | 0 | +1 | +1.00 | +0.50 | Matches | |
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 5 | -4 | -4.00 | Matches | |||
| 12 Seasons | 2 Clubs | 2 Leagues | 45 | 3,660 | 81 | 59.5 | 40.7 | 40 | 91 | 37 | 5 | 8 | 13 | 1.67 | 67 | 60 | +7 | +0.17 | -0.24 | ||||
| Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Millwall (10 Seasons) | 2 Leagues | 33 | 2,817 | 85 | 69.0 | 31.3 | 31 | 90 | 29 | 2 | 16 | 7 | 1.58 | 47 | 50 | -3 | -0.10 | -0.52 | |||||
| Reading (3 Seasons) | 2 Leagues | 12 | 843 | 70 | 40.7 | 9.4 | 9 | 93 | 8 | 3 | 2 | 6 | 1.92 | 20 | 10 | +10 | +1.07 | +0.67 | |||||
| FA Cup (12 Seasons) | 27 | 2,180 | 81 | 66.1 | 24.2 | 24 | 89 | 22 | 3 | 11 | 6 | 1.74 | 44 | 38 | +6 | +0.25 | -0.54 | ||||||
| EFL Cup (12 Seasons) | 18 | 1,480 | 82 | 51.9 | 16.4 | 16 | 92 | 15 | 2 | 3 | 7 | 1.56 | 23 | 22 | +1 | +0.06 | -0.07 | ||||||
| Performance | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 9.2 | 2 | 0 | 12 | Matches | |||||||||
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 0.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 1.1 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 21.4 | 2 | 0 | 14 | Matches | |||||||||
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 4.9 | 2 | 1 | 1 | 0 | Matches | ||||||||
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 1.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 0.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 2.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 2.6 | 2 | 1 | 1 | 0 | Matches | ||||||||
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 13.5 | 1 | 0 | 0 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 3.4 | 1 | 0 | 0 | 0 | Matches | ||||||||
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 35.4 | 6 | 2 | 1 | 34 | 14 | 7 | 1 | 25 | 20 | 0 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 1.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 2.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | Matches | ||
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 46.0 | 10 | 0 | 0 | 45 | 29 | 3 | 14 | 50 | 20 | 0 | 2 | 1 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 4.3 | 0 | 0 | 0 | 5 | 1 | 2 | 0 | 4 | 1 | 0 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 46.0 | 10 | 0 | 0 | 54 | 34 | 5 | 14 | 46 | 22 | 0 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 1.3 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 2.0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 41.2 | 5 | 0 | 0 | 53 | 37 | 5 | 13 | 73 | 26 | 1 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 2.0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 2 | 0 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 2.0 | 1 | 0 | 0 | 4 | 2 | 0 | 0 | 3 | 0 | 0 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 40.9 | 10 | 0 | 0 | 63 | 20 | 2 | 5 | 55 | 26 | 2 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | 3.0 | 1 | 0 | 0 | 4 | 3 | 0 | 3 | 1 | 3 | 0 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 44.4 | 13 | 0 | 0 | 56 | 17 | 3 | 7 | 53 | 21 | 0 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | 0.0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 44.0 | 10 | 0 | 0 | 57 | 13 | 13 | 4 | 59 | 16 | 0 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 2 | 0 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 35.5 | 4 | 0 | 0 | 37 | 17 | 7 | 3 | 23 | 24 | 2 | Matches | ||
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 2 | 0 | Matches | ||
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3.0 | 1 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 1 | 0 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 45.0 | 10 | 0 | 0 | 50 | 32 | 8 | 11 | 50 | 26 | 1 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 | 0 | 2 | 0 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 3 | 0 | Matches | ||
| 12 Seasons | 2 Clubs | 4 Leagues | 463.3 | 90 | 4 | 3 | 509 | 225 | 59 | 76 | 452 | 218 | 0 | 2 | 7 | |||
| Country | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Millwall (10 Seasons) | 4 Leagues | 423.2 | 84 | 3 | 2 | 483 | 225 | 59 | 76 | 452 | 218 | 0 | 2 | 7 | ||||
| Reading (3 Seasons) | 3 Leagues | 40.1 | 6 | 1 | 1 | 26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| Reading (1 Season) | 1 League | 3.4 | 1 | 0 | 0 | 0 | ||||||||||||
| Championship (12 Seasons) | 409.1 | 82 | 2 | 1 | 475 | 213 | 53 | 72 | 434 | 201 | 0 | 2 | 7 | |||||
| FA Cup (12 Seasons) | 24.2 | 6 | 2 | 2 | 13 | 6 | 4 | 1 | 9 | 5 | 0 | 0 | 0 | |||||
| EFL Cup (12 Seasons) | 16.4 | 1 | 0 | 0 | 10 | 6 | 2 | 3 | 9 | 12 | 0 | 0 | 0 | |||||
| League One (1 Season) | 13.5 | 1 | 0 | 0 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| PL2 — Div. 1 (1 Season) | 3.4 | 1 | 0 | 0 | 0 | |||||||||||||
| Performance | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2014-2015 | 19 | Reading | 3 Leagues | 10.3 | 2 | 0 | 0 | 12 | 0 | ||||||||
| 2015-2016 | 20 | Reading | 3 Leagues | 27.4 | 4 | 1 | 1 | 14 | 0 | ||||||||
| 2016-2017 | 21 | Reading | 3 Leagues | 2.4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 2016-2017 | 21 | Reading | 1 League | 3.4 | 1 | 0 | 0 | 0 | |||||||||
| 2016-2017 | 21 | Millwall | 2 Leagues | 16.1 | 3 | 1 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 2017-2018 | 22 | Millwall | 3 Leagues | 39.1 | 6 | 2 | 1 | 35 | 15 | 8 | 2 | 25 | 20 | 0 | 0 | 0 | |
| 2018-2019 | 23 | Millwall | 3 Leagues | 51.3 | 10 | 0 | 0 | 50 | 30 | 6 | 14 | 54 | 21 | 0 | 2 | 1 | |
| 2019-2020 | 24 | Millwall | 3 Leagues | 49.3 | 10 | 0 | 0 | 56 | 35 | 5 | 14 | 47 | 23 | 0 | |||
| 2020-2021 | 25 | Millwall | 3 Leagues | 45.2 | 6 | 0 | 0 | 57 | 39 | 6 | 13 | 79 | 28 | 1 | |||
| 2021-2022 | 26 | Millwall | 3 Leagues | 44.9 | 11 | 0 | 0 | 67 | 24 | 3 | 8 | 57 | 29 | 2 | |||
| 2022-2023 | 27 | Millwall | 3 Leagues | 44.7 | 13 | 0 | 0 | 57 | 17 | 3 | 7 | 53 | 21 | 0 | |||
| 2023-2024 | 28 | Millwall | 3 Leagues | 46.0 | 10 | 0 | 0 | 57 | 13 | 13 | 4 | 62 | 18 | 0 | |||
| 2024-2025 | 29 | Millwall | 3 Leagues | 39.5 | 5 | 0 | 0 | 41 | 17 | 7 | 3 | 25 | 27 | 2 | |||
| 2025-2026 | 30 | Millwall | 3 Leagues | 47.0 | 10 | 0 | 0 | 52 | 35 | 8 | 11 | 50 | 31 | 1 | |||
| 12 Seasons | 2 Clubs | 4 Leagues | 463.3 | 90 | 4 | 3 | 509 | 225 | 59 | 76 | 452 | 218 | 0 | 2 | 7 | ||
| Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Millwall (10 Seasons) | 4 Leagues | 423.2 | 84 | 3 | 2 | 483 | 225 | 59 | 76 | 452 | 218 | 0 | 2 | 7 | |||
| Reading (3 Seasons) | 3 Leagues | 40.1 | 6 | 1 | 1 | 26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| Reading (1 Season) | 1 League | 3.4 | 1 | 0 | 0 | 0 | |||||||||||
| Championship (12 Seasons) | 409.1 | 82 | 2 | 1 | 475 | 213 | 53 | 72 | 434 | 201 | 0 | 2 | 7 | ||||
| FA Cup (12 Seasons) | 24.2 | 6 | 2 | 2 | 13 | 6 | 4 | 1 | 9 | 5 | 0 | 0 | 0 | ||||
| EFL Cup (12 Seasons) | 16.4 | 1 | 0 | 0 | 10 | 6 | 2 | 3 | 9 | 12 | 0 | 0 | 0 | ||||
| League One (1 Season) | 13.5 | 1 | 0 | 0 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| PL2 — Div. 1 (1 Season) | 3.4 | 1 | 0 | 0 | 0 | ||||||||||||
| Performance | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2014-2015 | 19 | Reading | eng ENG | 2. Championship | 19th | 9.2 | 2 | 0 | 12 | Matches | |||||||||
| 2015-2016 | 20 | Reading | eng ENG | 2. Championship | 17th | 21.4 | 2 | 0 | 14 | Matches | |||||||||
| 2016-2017 | 21 | Reading | eng ENG | 2. Championship | 3rd | 0.1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 21 | Reading | eng ENG | Jr. PL2 — Div. 1 | 11th | 3.4 | 1 | 0 | 0 | 0 | Matches | ||||||||
| 2016-2017 | 21 | Millwall | eng ENG | 3. League One | 6th | 13.5 | 1 | 0 | 0 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | 2. Championship | 8th | 35.4 | 6 | 2 | 1 | 34 | 14 | 7 | 1 | 25 | 20 | 0 | 0 | 0 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | 2. Championship | 21st | 46.0 | 10 | 0 | 0 | 45 | 29 | 3 | 14 | 50 | 20 | 0 | 2 | 1 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | 2. Championship | 8th | 46.0 | 10 | 0 | 0 | 54 | 34 | 5 | 14 | 46 | 22 | 0 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | 2. Championship | 11th | 41.2 | 5 | 0 | 0 | 53 | 37 | 5 | 13 | 73 | 26 | 1 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | 2. Championship | 9th | 40.9 | 10 | 0 | 0 | 63 | 20 | 2 | 5 | 55 | 26 | 2 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | 2. Championship | 8th | 44.4 | 13 | 0 | 0 | 56 | 17 | 3 | 7 | 53 | 21 | 0 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | 2. Championship | 13th | 44.0 | 10 | 0 | 0 | 57 | 13 | 13 | 4 | 59 | 16 | 0 | Matches | ||
| 2024-2025 | 29 | Millwall | eng ENG | 2. Championship | 8th | 35.5 | 4 | 0 | 0 | 37 | 17 | 7 | 3 | 23 | 24 | 2 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | 2. Championship | 3rd | 45.0 | 10 | 0 | 0 | 50 | 32 | 8 | 11 | 50 | 26 | 1 | Matches | ||
| 12 Seasons | 2 Clubs | 2 Leagues | 422.6 | 83 | 2 | 1 | 486 | 213 | 53 | 72 | 434 | 201 | 0 | 2 | 7 | ||||
| Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Millwall (10 Seasons) | 2 Leagues | 391.9 | 79 | 2 | 1 | 460 | 213 | 53 | 72 | 434 | 201 | 0 | 2 | 7 | |||||
| Reading (3 Seasons) | 1 League | 30.7 | 4 | 0 | 0 | 26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| Reading (1 Season) | 1 League | 3.4 | 1 | 0 | 0 | 0 | |||||||||||||
| Championship (12 Seasons) | 409.1 | 82 | 2 | 1 | 475 | 213 | 53 | 72 | 434 | 201 | 0 | 2 | 7 | ||||||
| League One (1 Season) | 13.5 | 1 | 0 | 0 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||||
| PL2 — Div. 1 (1 Season) | 3.4 | 1 | 0 | 0 | 0 | ||||||||||||||
| Performance | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2014-2015 | 19 | Reading | eng ENG | FA Cup | 3rd | 0.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2014-2015 | 19 | Reading | eng ENG | League Cup | 17th | 1.1 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2015-2016 | 20 | Reading | eng ENG | FA Cup | 5th | 4.9 | 2 | 1 | 1 | 0 | Matches | ||||||||
| 2015-2016 | 20 | Reading | eng ENG | League Cup | 17th | 1.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2016-2017 | 21 | Reading | eng ENG | EFL Cup | 9th | 2.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 21 | Millwall | eng ENG | FA Cup | 5th | 2.6 | 2 | 1 | 1 | 0 | Matches | ||||||||
| 2017-2018 | 22 | Millwall | eng ENG | EFL Cup | 33rd | 1.7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2017-2018 | 22 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | Matches | ||
| 2018-2019 | 23 | Millwall | eng ENG | EFL Cup | 17th | 1.0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 23 | Millwall | eng ENG | FA Cup | 5th | 4.3 | 0 | 0 | 0 | 5 | 1 | 2 | 0 | 4 | 1 | 0 | 0 | 0 | Matches |
| 2019-2020 | 24 | Millwall | eng ENG | EFL Cup | 33rd | 1.3 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | Matches | ||
| 2019-2020 | 24 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | EFL Cup | 17th | 2.0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 3 | 2 | 0 | Matches | ||
| 2020-2021 | 25 | Millwall | eng ENG | FA Cup | 17th | 2.0 | 1 | 0 | 0 | 4 | 2 | 0 | 0 | 3 | 0 | 0 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | EFL Cup | Rd3 | 3.0 | 1 | 0 | 0 | 4 | 3 | 0 | 3 | 1 | 3 | 0 | Matches | ||
| 2021-2022 | 26 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | Matches | |||
| 2022-2023 | 27 | Millwall | eng ENG | EFL Cup | Rd1 | 0.0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2022-2023 | 27 | Millwall | eng ENG | FA Cup | 0.3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | |||
| 2023-2024 | 28 | Millwall | eng ENG | EFL Cup | Rd1 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 2 | 0 | Matches | ||
| 2023-2024 | 28 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | Matches | |||||||||
| 2024-2025 | 29 | Millwall | eng ENG | EFL Cup | Rd2 | 1.0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 2 | 0 | Matches | ||
| 2024-2025 | 29 | Millwall | eng ENG | FA Cup | 3.0 | 1 | 0 | 0 | 2 | 0 | 0 | 0 | 1 | 1 | 0 | Matches | |||
| 2025-2026 | 30 | Millwall | eng ENG | EFL Cup | Rd3 | 1.0 | 0 | 0 | 0 | 2 | 2 | 0 | 0 | 0 | 2 | 0 | Matches | ||
| 2025-2026 | 30 | Millwall | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 3 | 0 | Matches | |||
| 12 Seasons | 2 Clubs | 2 Leagues | 40.7 | 7 | 2 | 2 | 23 | 12 | 6 | 4 | 18 | 17 | 0 | 0 | 0 | ||||
| Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Millwall (10 Seasons) | 2 Leagues | 31.3 | 5 | 1 | 1 | 23 | 12 | 6 | 4 | 18 | 17 | 0 | 0 | 0 | |||||
| Reading (3 Seasons) | 2 Leagues | 9.4 | 2 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| FA Cup (12 Seasons) | 24.2 | 6 | 2 | 2 | 13 | 6 | 4 | 1 | 9 | 5 | 0 | 0 | 0 | ||||||
| EFL Cup (12 Seasons) | 16.4 | 1 | 0 | 0 | 10 | 6 | 2 | 3 | 9 | 12 | 0 | 0 | 0 | ||||||
About FBref.com
FBref.com launched (June 13, 2018) with domestic league coverage for England, France, Germany, Italy, Spain, and United States. Since then we have been steadily expanding our coverage to include domestic leagues from over 40 countries as well as domestic cup, super cup and youth leagues from top European countries. We have also added coverage for major international cups such as the UEFA Champions League and Copa Libertadores.
FBref is the most complete sources for women's football data on the internet. This includes the entire history of the FIFA Women's World Cup as well as recent domestic league seasons from nine countries.
Note that player records are likely not complete for their careers. Players may come from or move to leagues we don't currently cover. This issue will go down over time, as we add new leagues and seasons.
You can sign up to receive an e-mail when new countries and features launch.
For more information, see our Launch Blog Post, the overall leagues/competition page with details on leagues and seasons we include, or our About Page. Let us know if you find an issue or have a suggestion.
FBref is one of seven Sports-Reference.com sites.

Player Club Summary