Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Cheltenham | 2026/27 | 14 | 0 | 2 |
| Port Vale | 2025/26 | 33 | 2 | 5 |
| Shrewsbury | 2022/23 – 2024/25 | 125 | 16 | 15 |
| Coventry | 2016/17 – 2021/22 | 163 | 20 | 6 |
| Republic of Ireland U21 | 2019 | 2 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 10 Jun 2022 | Coventry | Shrewsbury | — |
| 30 Jun 2025 | Shrewsbury | Port Vale | Free agent |
| 30 Jun 2026 | Port Vale | Cheltenham | Transfer |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Cheltenham | 1 | 1 | 79 | 0 | 0 | 0 | 0 | 6.20 |
| 2026/27 | EFL Trophy | Cheltenham | 1 | 0 | 45 | 0 | 1 | 0 | 0 | 6.01 |
| 2026/27 | League Two | Cheltenham | 12 | 11 | 882 | 0 | 1 | 3 | 0 | 6.29 |
| 2025/26 | League Cup | Port Vale | 1 | 1 | 90 | 0 | 1 | 0 | 0 | 6.60 |
| 2025/26 | EFL Trophy | Port Vale | 3 | 3 | 160 | 1 | 0 | 1 | 0 | 7.40 |
| 2025/26 | FA Cup | Port Vale | 2 | 2 | 210 | 1 | 0 | 1 | 0 | 7.30 |
| 2025/26 | League One | Port Vale | 27 | 18 | 1494 | 0 | 4 | 2 | 0 | 6.80 |
| 2024/25 | League One | Shrewsbury | 33 | 14 | 1510 | 2 | 2 | 2 | 0 | 6.67 |
| 2024/25 | League Cup | Shrewsbury | 2 | 1 | 98 | 2 | 0 | 0 | 0 | 7.60 |
| 2024/25 | EFL Trophy | Shrewsbury | 2 | 2 | 180 | 0 | 1 | 1 | 0 | 7.30 |
| 2024/25 | FA Cup | Shrewsbury | 1 | 0 | 10 | 0 | — | 0 | 0 | — |
| 2023/24 | League One | Shrewsbury | 33 | 33 | 2630 | 6 | 6 | 6 | 1 | 7.01 |
| 2023/24 | League Cup | Shrewsbury | 1 | 0 | 35 | 0 | — | 0 | 0 | 6.20 |
| 2023/24 | FA Cup | Shrewsbury | 3 | 3 | 246 | 1 | — | 1 | 0 | 6.90 |
| 2022/23 | League One | Shrewsbury | 45 | 43 | 3809 | 4 | 6 | 11 | 0 | 6.85 |
| 2022/23 | League Cup | Shrewsbury | 2 | 2 | 180 | 0 | — | 1 | 0 | 6.55 |
| 2022/23 | FA Cup | Shrewsbury | 3 | 3 | 270 | 1 | — | 2 | 0 | — |
| 2021/22 | Championship | Coventry | 11 | 8 | 614 | 1 | — | 1 | 0 | 6.91 |
| 2021/22 | League Cup | Coventry | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2021/22 | FA Cup | Coventry | 2 | 1 | 122 | 0 | — | 1 | 0 | 6.30 |
| 2020/21 | Championship | Coventry | 27 | 15 | 1371 | 3 | 1 | 1 | 0 | 6.70 |
| 2020/21 | League Cup | Coventry | 1 | 1 | 65 | 0 | — | 1 | 0 | 6.30 |
| 2020/21 | FA Cup | Coventry | 1 | 1 | 79 | 0 | — | 0 | 0 | 7.00 |
| 2019/20 | League One | Coventry | 31 | 24 | 2057 | 5 | 5 | 3 | 0 | 6.98 |
| 2019/20 | League Cup | Coventry | 2 | 1 | 101 | 0 | — | 0 | 0 | 6.25 |
| 2019/20 | EFL Trophy | Coventry | 2 | 1 | 120 | 0 | — | 0 | 0 | — |
| 2019/20 | FA Cup | Coventry | 7 | 6 | 392 | 2 | — | 0 | 0 | — |
| 2019 | UEFA U21 Championship | Republic of Ireland U21 | 2 | 2 | 149 | 0 | — | 0 | 0 | — |
| 2018/19 | League One | Coventry | 33 | 22 | 1935 | 3 | — | 2 | 0 | — |
| 2018/19 | League Cup | Coventry | 1 | 0 | 12 | 0 | — | 0 | 0 | — |
| 2018/19 | EFL Trophy | Coventry | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Coventry | 1 | 1 | 90 | 0 | — | 1 | 0 | — |
| 2017/18 | League Two | Coventry | 33 | 28 | 2334 | 5 | — | 3 | 0 | — |
| 2017/18 | League Cup | Coventry | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2017/18 | EFL Trophy | Coventry | 2 | 1 | 140 | 0 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Coventry | 5 | 4 | 356 | 1 | — | 0 | 0 | 7.00 |
| 2016/17 | League One | Coventry | 1 | 0 | 6 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2019/2020 | Winner |
| EFL Trophy (England) | 2016/2017 | Winner |
