Age 31
Height 180 cm
Foot Right
Country Wales
Value €169k
📈
Form
Rating per season, last 5 matches, and timeline all matches
Season
6.62
34 matches
Last 5
6.72
+0.10 vs season
Best
8.3
vs Stockport County
MOTM
0
of 32 matches
Rating by match (last 30)
≥8.0
7.0–8.0
6.0–7.0
5.5–6.0
<5.5
🧬
Attributes
Chances created
Aerial duels
Defensive actions
Goals
Shot attempts
Touches
Filter:
Apps
34
Goals
2
Assists
0
Rating
6.62
Goals
2
60%
Assists
0
0%
Rating
6.62
31%
Matches
31
51%
Started
18
41%
Minutes
1525
41%
🎯
Stats compared to other midfielders
League One · percentile vs peers
Chances created
11%
Aerial duels
91%
Defensive actions
77%
Goals
63%
Shot attempts
34%
Touches
7%
🎯
Shot Map
14 shots per season
Goals
2
On target
9
xG
0.79
Conversion
14%
Goal
Saved
Off target
🔥
Heatmap
862 touches this season
Attack
Touches
862
Attack
26%
Middle
54%
Ø position
52%
Detailed Stats & Percentiles (League One)
Shooting
| Stat | Total | Per 90 |
Percentile
avg 47%
|
Per 90 pctl
avg 54%
|
|---|---|---|---|---|
| Goals | 2 | 0.12 |
60
|
75
|
| xG | 0.77 | 0.05 |
33
|
39
|
| xGOT | 1.18 | 0.07 |
58
|
60
|
| xG excl. penalty | 0.77 | 0.05 |
34
|
41
|
| Shots | 14 | 0.83 |
36
|
41
|
| Shots on target | 6 | 0.35 |
57
|
70
|
Passing
| Stat | Total | Per 90 |
Percentile
avg 22%
|
Per 90 pctl
avg 18%
|
|---|---|---|---|---|
| Assists | 0 | 0.00 |
0
|
0
|
| xA | 0.52 | 0.03 |
19
|
10
|
| Accurate passes | 294 | 17.35 |
33
|
10
|
| Pass accuracy | 67.9 | 67.90 |
8
|
8
|
| Accurate long balls | 23 | 1.36 |
43
|
35
|
| Long ball accuracy | 39.0 | 38.98 |
49
|
49
|
| Chances created | 7 | 0.41 |
19
|
10
|
| Big chances created | 1 | 0.06 |
20
|
28
|
| Successful crosses | 1 | 0.06 |
13
|
16
|
| Cross accuracy | 9.1 | 9.09 |
13
|
13
|
Possession
| Stat | Total | Per 90 |
Percentile
avg 56%
|
Per 90 pctl
avg 59%
|
|---|---|---|---|---|
| Dribbles | 5 | 0.30 |
27
|
23
|
| Dribbles success rate | 55.6 | 55.56 |
61
|
61
|
| Duels won | 111 | 6.55 |
56
|
84
|
| Duels won % | 55.8 | 55.78 |
73
|
73
|
| Aerials won | 36 | 2.12 |
75
|
89
|
| Aerials won % | 55.4 | 55.38 |
72
|
72
|
| Touches | 690 | 40.72 |
33
|
5
|
| Touches in opposition box | 14 | 0.83 |
36
|
38
|
| Dispossessed | 11 | 0.65 |
54
|
55
|
| Fouls won | 32 | 1.89 |
75
|
86
|
Defending
| Stat | Total | Per 90 |
Percentile
avg 48%
|
Per 90 pctl
avg 56%
|
|---|---|---|---|---|
| Defensive actions | 87 | 5.13 |
46
|
51
|
| Tackles | 39 | 2.30 |
52
|
70
|
| Interceptions | 10 | 0.59 |
30
|
20
|
| Blocked scoring attempt | 6 | 0.35 |
53
|
59
|
| Fouls committed | 36 | 2.12 |
78
|
95
|
| Recoveries | 57 | 3.36 |
33
|
11
|
| Possession won final 3rd | 6 | 0.35 |
46
|
61
|
| Dribbled past | 10 | 0.59 |
64
|
73
|
| Clearances | 32 | 1.89 |
51
|
63
|
| Clean sheets | 0 | 0.00 |
0
|
0
|
| Goals conceded while on pitch | 18 | 1.06 |
63
|
82
|
| xG against while on pitch | 17.70 | 1.04 |
66
|
84
|
Discipline
| Stat | Total | Per 90 |
Percentile
avg 74%
|
Per 90 pctl
avg 76%
|
|---|---|---|---|---|
| Yellow cards | 3 | 0.18 |
48
|
52
|
| Red cards | 0 | 0.00 |
100
|
100
|
Shooting
| Stat | Total | Per 90 |
Percentile
avg 47%
|
Per 90 pctl
avg 54%
|
|---|---|---|---|---|
| Goals | 2 | 0.12 |
60
|
75
|
| xG | 0.77 | 0.05 |
33
|
39
|
| xGOT | 1.18 | 0.07 |
58
|
60
|
| xG excl. penalty | 0.77 | 0.05 |
34
|
41
|
| Shots | 14 | 0.83 |
36
|
41
|
| Shots on target | 6 | 0.35 |
57
|
70
|
Passing
| Stat | Total | Per 90 |
Percentile
avg 22%
|
Per 90 pctl
avg 18%
|
|---|---|---|---|---|
| Assists | 0 | 0.00 |
0
|
0
|
| xA | 0.52 | 0.03 |
19
|
10
|
| Accurate passes | 294 | 17.35 |
33
|
10
|
| Pass accuracy | 67.9 | 67.90 |
8
|
8
|
| Accurate long balls | 23 | 1.36 |
43
|
35
|
| Long ball accuracy | 39.0 | 38.98 |
49
|
49
|
| Chances created | 7 | 0.41 |
19
|
10
|
| Big chances created | 1 | 0.06 |
20
|
28
|
| Successful crosses | 1 | 0.06 |
13
|
16
|
| Cross accuracy | 9.1 | 9.09 |
13
|
13
|
Possession
| Stat | Total | Per 90 |
Percentile
avg 56%
|
Per 90 pctl
avg 59%
|
|---|---|---|---|---|
| Dribbles | 5 | 0.30 |
27
|
23
|
| Dribbles success rate | 55.6 | 55.56 |
61
|
61
|
| Duels won | 111 | 6.55 |
56
|
84
|
| Duels won % | 55.8 | 55.78 |
73
|
73
|
| Aerials won | 36 | 2.12 |
75
|
89
|
| Aerials won % | 55.4 | 55.38 |
72
|
72
|
| Touches | 690 | 40.72 |
33
|
5
|
| Touches in opposition box | 14 | 0.83 |
36
|
38
|
| Dispossessed | 11 | 0.65 |
54
|
55
|
| Fouls won | 32 | 1.89 |
75
|
86
|
Defending
| Stat | Total | Per 90 |
Percentile
avg 48%
|
Per 90 pctl
avg 56%
|
|---|---|---|---|---|
| Defensive actions | 87 | 5.13 |
46
|
51
|
| Tackles | 39 | 2.30 |
52
|
70
|
| Interceptions | 10 | 0.59 |
30
|
20
|
| Blocked scoring attempt | 6 | 0.35 |
53
|
59
|
| Fouls committed | 36 | 2.12 |
78
|
95
|
| Recoveries | 57 | 3.36 |
33
|
11
|
| Possession won final 3rd | 6 | 0.35 |
46
|
61
|
| Dribbled past | 10 | 0.59 |
64
|
73
|
| Clearances | 32 | 1.89 |
51
|
63
|
| Clean sheets | 0 | 0.00 |
0
|
0
|
| Goals conceded while on pitch | 18 | 1.06 |
63
|
82
|
| xG against while on pitch | 17.70 | 1.04 |
66
|
84
|
Discipline
| Stat | Total | Per 90 |
Percentile
avg 74%
|
Per 90 pctl
avg 76%
|
|---|---|---|---|---|
| Yellow cards | 3 | 0.18 |
48
|
52
|
| Red cards | 0 | 0.00 |
100
|
100
|
Recent Matches (36)
| Date | Opponent | Comp | Score | Min | G | A | Rating |
|---|---|---|---|---|---|---|---|
| 2026-05-13 | @ Stockport County | League One Playoff | 2-0 | 27 | 0 | 0 | 6.7 |
| 2026-05-09 | vs Stockport County | League One Playoff | 0-1 | 72 | 0 | 0 | 6.4 |
| 2026-05-02 | vs Wigan Athletic | League One | 1-0 | 68 | 0 | 0 | 7.1 |
| 2026-04-25 | @ Doncaster Rovers | League One | 1-1 | 76 | 0 | 0 | 6.2 |
| 2026-04-21 | vs Barnsley | League One | 1-0 | 80 | 0 | 0 | 7.2 |
| 2026-04-18 | vs Lincoln City | League One | 2-2 | 56 | 1 | 0 | 7.9 |
| 2026-04-14 | @ Bolton Wanderers | League One | 5-1 | 90 | 0 | 0 | 6.8 |
| 2026-04-11 | @ Bradford City | League One | 0-1 | 12 | 0 | 0 | 6.2 |
| 2026-04-06 | vs Blackpool | League One | 1-0 | 7 | 0 | 0 | |
| 2026-04-03 | @ Rotherham United | League One | 0-0 | 67 | 0 | 0 | 6.7 |
| 2026-03-21 | vs Reading | League One | 1-0 | 69 | 0 | 0 | 6.9 |
| 2026-03-17 | @ Plymouth Argyle | League One | 1-0 | 78 | 0 | 0 | 6.8 |
| 2026-03-14 | vs AFC Wimbledon | League One | 1-0 | 12 | 0 | 0 | 6.4 |
| 2026-03-10 | vs Leyton Orient | League One | 1-2 | 66 | 0 | 0 | 6.2 |
| 2026-03-07 | @ Burton Albion | League One | 0-1 | 80 | 0 | 0 | 7.1 |
| 2026-02-28 | vs Stockport County | League One | 2-1 | 76 | 0 | 0 | 7.2 |
| 2026-02-21 | @ Wycombe Wanderers | League One | 3-1 | 16 | 0 | 0 | 5.9 |
| 2026-02-17 | vs Port Vale | League One | 2-1 | 65 | 0 | 0 | 6.5 |
| 2026-02-14 | vs Huddersfield Town | League One | 1-0 | 13 | 0 | 0 | 6.6 |
| 2026-02-07 | @ Northampton Town | League One | 3-1 | 0 | 0 | 0 | |
| 2026-01-31 | @ Barnsley | League One | 3-1 | 32 | 0 | 0 | 6.5 |
| 2026-01-27 | vs Peterborough United | League One | 1-0 | 1 | 0 | 0 | |
| 2026-01-24 | vs Mansfield Town | League One | 1-1 | 45 | 0 | 0 | 6.5 |
| 2026-01-20 | vs Bolton Wanderers | League One | 0-0 | 68 | 0 | 0 | 6.6 |
| 2026-01-17 | @ Exeter City | League One | 3-0 | 0 | 0 | 0 | |
| 2026-01-10 | @ Luton Town | League One | 2-1 | 20 | 0 | 0 | 6.1 |
| 2025-12-29 | @ Cardiff City | League One | 2-1 | 22 | 0 | 0 | 6.0 |
| 2025-12-26 | @ AFC Wimbledon | League One | 0-0 | 61 | 0 | 0 | 6.6 |
| 2025-12-20 | vs Burton Albion | League One | 2-2 | 89 | 0 | 0 | 6.6 |
| 2025-12-13 | @ Stockport County | League One | 1-3 | 76 | 1 | 0 | 8.3 |
| 2025-12-09 | vs Cardiff City | League One | 0-1 | 59 | 0 | 0 | 6.3 |
| 2025-12-02 | vs Walsall | EFL Trophy | 1-2 | 77 | 0 | 0 | 7.0 |
| 2025-11-29 | @ Wigan Athletic | League One | 0-0 | 21 | 0 | 0 | 6.2 |
| 2025-11-25 | @ Peterborough United | League One | 0-1 | 16 | 0 | 0 | 6.3 |
| 2025-11-22 | vs Doncaster Rovers | League One | 0-0 | 64 | 0 | 0 | 6.7 |
| 2025-08-02 | @ Blackpool | League One | 2-3 | 20 | 0 | 0 | 5.9 |
Career
| Season | Team | Type | Apps | G | A | Rating |
|---|---|---|---|---|---|---|
| 2025/2026 | Stevenage | senior | 34 | 2 | 0 | 6.62 |
| 2024/2025 | Stevenage | senior | 44 | 2 | 2 | 6.79 |
| 2023/2024 | Stevenage | senior | 48 | 2 | 1 | 6.79 |
| 2022/2023 | Portsmouth | senior | 19 | 1 | 0 | 6.46 |
| 2021/2022 | Portsmouth | senior | 38 | 1 | 1 | 6.69 |
| 2020/2021 | Milton Keynes Dons | senior | 21 | 0 | 1 | 6.44 |
| 2019/2020 | Milton Keynes Dons | senior | 9 | 0 | 0 | 6.31 |
| 2019/2020 | Shrewsbury Town | senior | 14 | 1 | 0 | 6.31 |
| 2018/2019 | Norwich City | senior | 8 | 0 | 0 | 6.14 |
| 2016/2017 | Norwich City | senior | 6 | 0 | 0 | 6.94 |
| 2015/2016 | Swindon Town | senior | 28 | 2 | 0 | - |
| 2015/2016 | Swindon Town | senior | 1 | 0 | 0 | - |
| 2014/2015 | Swindon Town | senior | 3 | 0 | 0 | - |
| 2014/2015 | Swindon Town | senior | 35 | 3 | 2 | - |
| 2013/2014 | Swindon Town | senior | 36 | 2 | 0 | - |
| 2012/2013 | Swindon Town | senior | 6 | 0 | 0 | - |
| 2011/2012 | Swindon Town | senior | 1 | 0 | 0 | - |
| 2019/2020 | Norwich City U23 | youth | 1 | 0 | 1 | - |
| 2018/2019 | Norwich City U23 | youth | 4 | 0 | 0 | - |
| 2016/2017 | Norwich City U23 | youth | 3 | 0 | 0 | - |
| 2017 | Wales U21 | national team | 2 | 0 | 0 | - |
| 2013 | Wales U19 | national team | 3 | 0 | 0 | - |
Transfer Value History
Teammates
Ellis Bates
Jack Taylor
Jovan Malcolm
Filip Marschall
Luther Wildin
Dan Butler
Jordan Houghton
Carl Piergianni
Dan Sweeney
Daniel Phillips
Gassan Ahadme
Dan Kemp
Jordan Roberts
Tyreece Simpson
Taye Ashby-Hammond
Saxon Earley
Charlie Goode
Lewis Freestone
Jasper Pattenden
Harvey White
Jamie Reid
Chem Campbell
Matthew Phillips
Joe Knight
Mathaeus Roberts
Beryly Lubala
Ryan Doherty
Dylan Suleiman
Max Woodford
Lenny Brown
Phoenix Patterson
Trophies
Norwich City
🏆
Championship
x1
Swindon Town
🏆
League Two
x1
Stevenage