Defensive · Crystal Palace · season-by-season, by competition, and every match.
Past his 2024/25 peak — the recent trend is downward, so buyers are paying for what's left, not what was.
The record covers 6 seasons (2020/21–2025/26) across 2 clubs — 168 appearances, 3 goals and 7 assists.
His best campaign on record is 2024/25 at Crystal Palace — Season rating 36, 0 goals and 3 assists in 33 games. Form has slipped 14 Season points across his last 3 full seasons. The gap to his peak is 22 Season points.
Season-to-season output barely moves — his form has stayed within a tight band (±7 points) across 6 campaigns. Made the jump to a higher division in 2021/22 (Premier League) and kept playing — 16 games that season.
| Season | Club | Apps | G | A | Rating | Season |
|---|---|---|---|---|---|---|
| 2025/26 | Crystal Palace | 31 | 0 | 0 | 36 | 15 |
| 2024/25 | Crystal Palace | 33 | 0 | 3 | 55 | 36 |
| 2023/24 | Crystal Palace | 31 | 0 | 1 | 59 | 29 |
| 2022/23 | Crystal Palace | 27 | 1 | 1 | 61 | 19 |
| 2021/22 | Crystal Palace | 16 | 0 | 2 | 68 | 25 |
| 2020/21 | Watford | 30 | 2 | 0 | 63 | 27 |
| Competition | Apps | Min | G | A | Rating |
|---|---|---|---|---|---|
| Premier League | 31 | 1577 | 0 | 0 | 6.8 |
| UEFA Europa Conference League | 12 | 451 | 0 | 1 | 6.9 |
| League Cup | 3 | 179 | 0 | 0 | 6.9 |
| Community Shield | 1 | 67 | 0 | 0 | 7.5 |
| FA Cup | 1 | 45 | 0 | 0 | 6.3 |
| Date | Competition | Opponent | Res | Status | Min | G | A | Rating |
|---|---|---|---|---|---|---|---|---|
| Jul 25 | Friendlies Clubs | A Crawley Town | 3-0 | Not in squad | — | |||
| Aug 10 | Community Shield | H Liverpool | 2-2 | Played | 62 | 7.3 | ||
| Aug 17 | Premier League | A Chelsea | 0-0 | Played | 70 | 7.3 | ||
| Aug 21 | UEFA Europa Conference League | H Fredrikstad | 1-0 | Played | 90 | 1 | 7.2 | |
| Aug 24 | Premier League | H Nottingham Forest | 1-1 | Played | 90 | 7.2 | ||
| Aug 28 | UEFA Europa Conference League | A Fredrikstad | 0-0 | Not in squad | — | |||
| Aug 31 | Premier League | A Aston Villa | 3-0 | Played | 71 | 6.6 | ||
| Sep 13 | Premier League | H Sunderland | 0-0 | Played | 90 | 7.3 | ||
| Sep 16 | League Cup | H Millwall | 1-1 | Played | 90 | 6.9 | ||
| Sep 20 | Premier League | A West Ham | 2-1 | Played | 65 | 6.5 | ||
| Sep 27 | Premier League | H Liverpool | 2-1 | Played | 28 | 6.6 | ||
| Oct 2 | UEFA Europa Conference League | A Dynamo Kyiv | 2-0 | Played | 52 | 6.5 | ||
| Oct 5 | Premier League | A Everton | 1-2 | Unused sub | 0 | — | ||
| Oct 18 | Premier League | H Bournemouth | 3-3 | Unused sub | 0 | — | ||
| Oct 23 | UEFA Europa Conference League | H AEK Larnaca | 0-1 | Played | 87 | 7.6 | ||
| Oct 26 | Premier League | A Arsenal | 0-1 | Played | 16 | 6.7 | ||
| Oct 29 | League Cup | A Liverpool | 3-0 | Played | 74 | 6.2 | ||
| Nov 1 | Premier League | H Brentford | 2-0 | Played | 12 | 6.3 | ||
| Nov 6 | UEFA Europa Conference League | H AZ Alkmaar | 3-1 | Played | 65 | 6.6 | ||
| Nov 9 | Premier League | H Brighton | 0-0 | Played | 16 | 6.3 | ||
| Nov 22 | Premier League | A Wolves | 2-0 | Played | 1 | — | ||
| Nov 27 | UEFA Europa Conference League | A Strasbourg | 1-2 | Played | 31 | 6.6 | ||
| Nov 30 | Premier League | H Manchester United | 1-2 | Played | 12 | 6.6 | ||
| Dec 3 | Premier League | A Burnley | 1-0 | Played | 14 | 6.3 | ||
| Dec 7 | Premier League | A Fulham | 2-1 | Unused sub | 0 | — | ||
| Dec 11 | UEFA Europa Conference League | A Shelbourne | 3-0 | Played | 45 | 7.3 | ||
| Dec 14 | Premier League | H Manchester City | 0-3 | Played | 23 | 6.9 | ||
| Dec 18 | UEFA Europa Conference League | H KuPS | 2-2 | Played | 27 | 6.7 | ||
| Dec 20 | Premier League | A Leeds | 1-4 | Played | 45 | 6.9 | ||
| Dec 23 | League Cup | A Arsenal | 1-1 | Played | 15 | 7.5 | ||
| Dec 28 | Premier League | H Tottenham | 0-1 | Played | 90 | 6.9 | ||
| Jan 1 | Premier League | H Fulham | 1-1 | Played | 56 | 7.2 | ||
| Jan 4 | Premier League | A Newcastle | 0-2 | Played | 90 | 6.7 | ||
| Jan 7 | Premier League | H Aston Villa | 0-0 | Played | 90 | 7.2 | ||
| Jan 10 | FA Cup | A Macclesfield | 1-2 | Played | 45 | 6.3 | ||
| Jan 17 | Premier League | A Sunderland | 1-2 | Played | 90 | 6.0 | ||
| Jan 25 | Premier League | H Chelsea | 1-3 | Played | 14 | 7.3 | ||
| Feb 1 | Premier League | A Nottingham Forest | 1-1 | Played | 90 | 6.9 | ||
| Feb 8 | Premier League | A Brighton | 1-0 | Played | 77 | 7.3 | ||
| Feb 11 | Premier League | H Burnley | 2-3 | Played | 18 | 6.6 | ||
| Feb 19 | UEFA Europa Conference League | A Zrinjski | 1-1 | Unused sub | 0 | — | ||
| Feb 22 | Premier League | H Wolves | 1-0 | Played | 45 | 6.6 | ||
| Feb 26 | UEFA Europa Conference League | H Zrinjski | 2-0 | Played | 34 | 7.0 | ||
| Mar 1 | Premier League | A Manchester United | 1-2 | Played | 22 | 6.6 | ||
| Mar 5 | Premier League | A Tottenham | 3-1 | Played | 9 | 6.7 | ||
| Mar 12 | UEFA Europa Conference League | H AEK Larnaca | 0-0 | Unused sub | 0 | — | ||
| Mar 15 | Premier League | H Leeds | 0-0 | Played | 60 | 6.6 | ||
| Mar 19 | UEFA Europa Conference League | A AEK Larnaca | 2-1 | Played | 1 | — | ||
| Apr 9 | UEFA Europa Conference League | H Fiorentina | 3-0 | Played | 1 | — | ||
| Apr 12 | Premier League | H Newcastle | 2-1 | Played | 64 | 6.5 | ||
| Apr 16 | UEFA Europa Conference League | A Fiorentina | 1-2 | Played | 17 | 6.7 | ||
| Apr 20 | Premier League | H West Ham | 0-0 | Played | 59 | 6.3 | ||
| Apr 25 | Premier League | A Liverpool | 1-3 | Unused sub | 0 | — | ||
| Apr 30 | UEFA Europa Conference League | A Shakhtar Donetsk | 3-1 | Unused sub | 0 | — | ||
| May 3 | Premier League | A Bournemouth | 0-3 | Not in squad | — | |||
| May 7 | UEFA Europa Conference League | H Shakhtar Donetsk | 2-1 | Played | 1 | — | ||
| May 10 | Premier League | H Everton | 2-2 | Unused sub | 0 | — | ||
| May 13 | Premier League | A Manchester City | 0-3 | Played | 60 | 7.3 | ||
| May 17 | Premier League | A Brentford | 2-2 | Unused sub | 0 | — | ||
| May 24 | Premier League | H Arsenal | 1-2 | Played | 90 | 7.2 | ||
| May 27 | UEFA Europa Conference League | H Rayo Vallecano | 1-0 | Unused sub | 0 | — |