Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Exeter | 2026/27 | 10 | 0 | 1 |
| Morecambe | 2023/24 – 2024/25 | 50 | 6 | 1 |
| Wigan | 2021/22 – 2023/24 | 45 | 3 | 3 |
| Ross County | 2022/23 | 5 | 0 | — |
| Ipswich | 2018/19 – 2020/21 | 110 | 14 | 7 |
| Wales | 2016 – 2018 | 0 | 0 | — |
| Peterborough | 2016/17 – 2017/18 | 74 | 16 | — |
| Crawley | 2013/14 – 2015/16 | 93 | 15 | — |
| Wales U21 | 2013 – 2015 | 6 | 1 | — |
| St Johnstone | 2012/13 – 2013/14 | 24 | 1 | — |
| Swansea | 2011/12 – 2012/13 | 0 | 0 | — |
| Wales U19 | 2012 | 2 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 1 Jun 2023 | Ross County | Wigan | — |
| 2 Feb 2023 | Wigan | Ross County | Loan |
| 1 Jul 2021 | Ipswich | Wigan | Free |
| 17 Jul 2018 | Peterborough | Ipswich | — |
| 1 Jul 2016 | Crawley Town | Peterborough | € 140K |
| 11 Jul 2014 | Swansea | Crawley Town | Free |
| 27 Mar 2014 | Swansea | Crawley Town | Loan |
| 31 Jan 2013 | Swansea | ST Johnstone | Loan |
| 30 Jun 2026 | Morecambe | Exeter City | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Exeter | 1 | 1 | 65 | 0 | 0 | 0 | 0 | 6.70 |
| 2026/27 | League Two | Exeter | 9 | 6 | 557 | 0 | 1 | 2 | 0 | 6.57 |
| 2024/25 | League Two | Morecambe | 25 | 19 | 1596 | 3 | 1 | 3 | 0 | 6.84 |
| 2024/25 | FA Cup | Morecambe | 1 | 1 | 68 | — | 0 | 0 | 0 | 6.00 |
| 2024/25 | League Cup | Morecambe | 1 | 0 | 32 | 0 | 0 | 0 | 0 | 6.70 |
| 2024/25 | EFL Trophy | Morecambe | 1 | 0 | 24 | 0 | 0 | 0 | 0 | 6.90 |
| 2023/24 | League Two | Morecambe | 21 | 13 | 1265 | 3 | — | 4 | 0 | 6.83 |
| 2023/24 | FA Cup | Morecambe | 1 | 0 | 36 | 0 | — | 1 | 0 | — |
| 2022/23 | Premiership | Ross County | 5 | 4 | 300 | 0 | — | 0 | 0 | 6.96 |
| 2022/23 | Championship | Wigan | 2 | 0 | 24 | 0 | — | 0 | 0 | 6.45 |
| 2021/22 | League One | Wigan | 30 | 9 | 885 | 1 | 2 | 2 | 0 | 6.70 |
| 2021/22 | EFL Trophy | Wigan | 6 | 5 | 466 | 2 | — | 0 | 0 | 7.33 |
| 2021/22 | League Cup | Wigan | 2 | 2 | 156 | 0 | — | 1 | 0 | 6.50 |
| 2021/22 | FA Cup | Wigan | 5 | 4 | 380 | 0 | 1 | 2 | 0 | 6.20 |
| 2020/21 | League One | Ipswich | 36 | 29 | 2480 | 6 | 4 | 6 | 0 | 6.92 |
| 2020/21 | League Cup | Ipswich | 2 | 1 | 100 | 0 | — | 0 | 0 | 6.75 |
| 2020/21 | FA Cup | Ipswich | 1 | 0 | 52 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Ipswich | 1 | 0 | 44 | 0 | — | 0 | 0 | 6.80 |
| 2020/21 | Friendlies Clubs | Ipswich | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2019/20 | League One | Ipswich | 27 | 22 | 1922 | 2 | 1 | 10 | 0 | 6.76 |
| 2019/20 | League Cup | Ipswich | 1 | 1 | 61 | 0 | — | 0 | 0 | 7.20 |
| 2019/20 | EFL Trophy | Ipswich | 4 | 3 | 314 | 0 | — | 0 | 0 | 6.90 |
| 2019/20 | FA Cup | Ipswich | 3 | 1 | 129 | 0 | — | 0 | 0 | — |
| 2018/19 | Championship | Ipswich | 33 | 24 | 2311 | 6 | 2 | 7 | 0 | 6.71 |
| 2018/19 | FA Cup | Ipswich | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | League One | Peterborough | 26 | 25 | 2127 | 4 | — | 6 | 0 | — |
| 2017/18 | League Cup | Peterborough | 1 | 1 | 90 | 1 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Peterborough | 3 | 3 | 246 | 1 | — | 1 | 0 | — |
| 2017/18 | FA Cup | Peterborough | 3 | 3 | 246 | 1 | — | 0 | 0 | — |
| 2016/17 | League One | Peterborough | 33 | 23 | 2129 | 7 | — | 5 | 0 | — |
| 2016/17 | FA Cup | Peterborough | 4 | 3 | 265 | 2 | — | 0 | 0 | 6.70 |
| 2016/17 | League Cup | Peterborough | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Peterborough | 2 | 2 | 107 | 0 | — | 0 | 0 | — |
| 2015/16 | League Two | Crawley | 42 | 40 | 3594 | 8 | — | 3 | 1 | — |
| 2015/16 | League Cup | Crawley | 1 | 0 | 28 | 0 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Crawley | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Crawley | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2015 | UEFA U21 Championship | Wales U21 | 5 | 3 | 266 | 1 | — | 0 | 0 | — |
| 2014/15 | League One | Crawley | 37 | 29 | 2617 | 4 | — | 4 | 0 | — |
| 2014/15 | League Cup | Crawley | 2 | 2 | 210 | 0 | — | 1 | 0 | — |
| 2014/15 | EFL Trophy | Crawley | 2 | 2 | 174 | 1 | — | 1 | 0 | — |
| 2014/15 | FA Cup | Crawley | 1 | 1 | 61 | 0 | — | 0 | 0 | — |
| 2013/14 | League One | Crawley | 6 | 5 | 464 | 2 | — | 0 | 0 | — |
| 2013/14 | Premiership | St Johnstone | 13 | 4 | 526 | 0 | — | 2 | 0 | — |
| 2013/14 | League Cup | St Johnstone | 1 | 0 | 15 | 1 | — | 0 | 0 | — |
| 2013/14 | UEFA Europa League | St Johnstone | 3 | 0 | 66 | 0 | — | 0 | 0 | — |
| 2013 | UEFA U21 Championship | Wales U21 | 1 | 1 | 60 | 0 | — | 0 | 0 | — |
| 2012/13 | Premiership | St Johnstone | 6 | 0 | 117 | 0 | — | 0 | 0 | — |
| 2012/13 | Scottish Cup | St Johnstone | 1 | 0 | 19 | 0 | — | 0 | 0 | — |
| 2012 | UEFA U19 Championship | Wales U19 | 2 | 1 | 119 | 0 | — | 1 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Injury | 4 Aug 2022 | 31 Oct 2022 | 88 |
| Injury | 21 Mar 2025 | 29 Jun 2025 | 100 |
| Muscle Injury | 20 Apr 2023 | 4 Jan 2024 | 259 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2021/2022 | Winner |
