Full Back · Colchester · season-by-season, by competition, and every match.
Below his 2022/23 peak but holding a solid level — the platform for a return is there.
The record covers 6 seasons (2020/21–2025/26) across 3 clubs — 197 appearances with 5 goal contributions from defence.
His best campaign on record is 2022/23 at Leyton Orient — Season rating 40, 0 goals and 2 assists in 32 games. 2021/22 was the leap — Season rating up 18 points at Swindon Town. Output has held steady across his last 3 full seasons (21 → 21). The gap to his peak is 19 Season points.
Made the jump to a higher division in 2023/24 (League One) and kept playing — 39 games that season.
| Season | Club | Apps | G | A | Rating | Season |
|---|---|---|---|---|---|---|
| 2025/26 | Colchester | 39 | 0 | 1 | 17 | 21 |
| 2024/25 | Colchester | 31 | 0 | 0 | 18 | 21 |
| 2023/24 | Leyton Orient | 39 | 1 | 0 | 32 | 21 |
| 2022/23 | Leyton Orient | 32 | 0 | 2 | 28 | 40 |
| 2021/22 | Swindon Town | 37 | 0 | 1 | 30 | 24 |
| 2020/21 | Swindon Town | 19 | 0 | 0 | 37 | 6 |
| Competition | Apps | Min | G | A | Rating |
|---|---|---|---|---|---|
| League Two | 39 | 2823 | 0 | 1 | 6.8 |
| EFL Trophy | 4 | 299 | 0 | 0 | 7.3 |
| Date | Competition | Opponent | Res | Status | Min | G | A | Rating |
|---|---|---|---|---|---|---|---|---|
| Jul 22 | Friendlies Clubs | A Dagenham & Redbridge | 5-0 | Not in squad | — | |||
| Jul 25 | Friendlies Clubs | H Peterborough | 2-2 | Not in squad | — | |||
| Jul 29 | Friendlies Clubs | A Braintree | 1-1 | Not in squad | — | |||
| Aug 2 | League Two | H Tranmere | 1-1 | Played | 90 | 6.9 | ||
| Aug 9 | League Two | A Oldham | 1-1 | Played | 90 | 7.2 | ||
| Aug 12 | League Cup | A Oxford United | 0-1 | Unused sub | 0 | — | ||
| Aug 16 | League Two | A Shrewsbury | 2-0 | Played | 90 | 7.2 | ||
| Aug 19 | League Two | H Cambridge United | 1-2 | Played | 90 | 6.5 | ||
| Aug 23 | League Two | H Barrow | 0-2 | Played | 65 | 6.5 | ||
| Aug 30 | League Two | A Barnet | 1-1 | Played | 90 | 6.6 | ||
| Sep 2 | EFL Trophy | A Wycombe | 2-1 | Played | 29 | 7.2 | ||
| Sep 6 | League Two | H Crewe | 1-1 | Played | 96 | 6.9 | ||
| Sep 13 | League Two | A Accrington ST | 0-1 | Played | 90 | 6.9 | ||
| Sep 20 | League Two | H Bristol Rovers | 1-1 | Unused sub | 0 | — | ||
| Sep 27 | League Two | A Fleetwood Town | 2-4 | Played | 11 | 5.9 | ||
| Oct 4 | League Two | H Chesterfield | 6-2 | Unused sub | 0 | — | ||
| Oct 7 | EFL Trophy | H Gillingham | 2-1 | Played | 90 | 7.6 | ||
| Oct 11 | League Two | A Grimsby | 2-1 | Played | 1 | — | ||
| Oct 18 | League Two | H Harrogate Town | 3-1 | Played | 61 | 8.2 | ||
| Oct 25 | League Two | A Swindon Town | 0-0 | Played | 90 | 7.2 | ||
| Nov 1 | FA Cup | H Milton Keynes Dons | 2-3 | Not in squad | — | |||
| Nov 8 | League Two | H Bromley | 0-2 | Unused sub | 0 | — | ||
| Nov 11 | EFL Trophy | H Fulham U21 | 2-0 | Played | 90 | 7.3 | ||
| Nov 15 | League Two | A Walsall | 2-0 | Played | 12 | 6.9 | ||
| Nov 22 | League Two | A Notts County | 3-1 | Played | 69 | 6.9 | ||
| Nov 29 | League Two | H Cheltenham | 2-0 | Played | 90 | 6.6 | ||
| Dec 6 | League Two | H Gillingham | 0-0 | Unused sub | 0 | — | ||
| Dec 9 | EFL Trophy | H West Ham United U21 | 0-1 | Played | 90 | 7.2 | ||
| Dec 13 | League Two | A Salford City | 3-4 | Played | 89 | 5.2 | ||
| Dec 20 | League Two | H Newport County | 4-1 | Played | 18 | 6.7 | ||
| Dec 26 | League Two | A Crawley Town | 1-1 | Played | 14 | 6.9 | ||
| Dec 29 | League Two | A Gillingham | 1-1 | Played | 90 | 7.0 | ||
| Jan 1 | League Two | H Milton Keynes Dons | 1-0 | Played | 70 | 6.9 | ||
| Jan 17 | League Two | A Bristol Rovers | 1-0 | Played | 90 | 6.9 | ||
| Jan 24 | League Two | H Fleetwood Town | 2-1 | Played | 83 | 6.9 | ||
| Jan 27 | League Two | H Grimsby | 0-1 | Played | 90 | 8.2 | ||
| Jan 31 | League Two | A Crewe | 0-1 | Played | 81 | 6.3 | ||
| Feb 7 | League Two | H Shrewsbury | 2-0 | Played | 90 | 7.0 | ||
| Feb 14 | League Two | A Barrow | 0-1 | Unused sub | 0 | — | ||
| Feb 17 | League Two | A Cambridge United | 1-1 | Played | 90 | 6.6 | ||
| Feb 21 | League Two | H Barnet | 4-1 | Played | 90 | 1 | 7.2 | |
| Feb 28 | League Two | H Salford City | 0-1 | Played | 90 | 6.7 | ||
| Mar 3 | League Two | A Chesterfield | 0-3 | Played | 90 | 6.0 | ||
| Mar 7 | League Two | A Newport County | 2-1 | Unused sub | 0 | — | ||
| Mar 13 | League Two | H Crawley Town | 0-0 | Played | 90 | 7.3 | ||
| Mar 18 | League Two | A Milton Keynes Dons | 0-1 | Played | 64 | 6.5 | ||
| Mar 21 | League Two | A Bromley | 0-1 | Unused sub | 0 | — | ||
| Mar 28 | League Two | H Walsall | 1-1 | Played | 10 | 6.9 | ||
| Apr 3 | League Two | H Oldham | 1-3 | Played | 87 | 6.2 | ||
| Apr 6 | League Two | A Tranmere | 1-0 | Played | 45 | 7.2 | ||
| Apr 10 | League Two | H Swindon Town | 3-0 | Played | 90 | 7.3 | ||
| Apr 14 | League Two | H Accrington ST | 2-1 | Played | 90 | 7.3 | ||
| Apr 18 | League Two | A Harrogate Town | 0-1 | Played | 90 | 6.9 | ||
| Apr 25 | League Two | H Notts County | 0-1 | Played | 57 | 6.5 | ||
| May 2 | League Two | A Cheltenham | 4-1 | Played | 90 | 7.2 |