Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Wrexham | 2019/20 – 2026/27 | 15 | 1 | 0 |
| Sheffield Wed | 2026/27 | 6 | 3 | 1 |
| Barnsley | 2024/25 – 2025/26 | 78 | 32 | 6 |
| Mansfield | 2022/23 – 2024/25 | 75 | 29 | 18 |
| Burton | 2022/23 | 26 | 6 | — |
| Oldham | 2020/21 – 2021/22 | 105 | 28 | 9 |
| Ross County | 2016/17 – 2019/20 | 46 | 6 | — |
| Ross County U21 | 2019 | 2 | 2 | — |
| Falkirk | 2018/19 | 11 | 3 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 30 Aug 2024 | Mansfield Town | Barnsley | — |
| 31 Jan 2023 | Burton Albion | Mansfield Town | — |
| 1 Jul 2022 | Oldham | Burton Albion | Free |
| 11 Aug 2020 | Wrexham | Oldham | — |
| 1 Jul 2019 | Falkirk | Ross County | — |
| 1 Feb 2026 | Barnsley | Wrexham | Transfer |
| 31 Aug 2026 | Wrexham | Sheffield Wednesday | Loan |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League One | Sheffield Wed | 6 | 4 | 376 | 2 | 1 | 0 | 0 | 7.10 |
| 2026/27 | League Cup | Wrexham | 1 | 0 | 14 | 0 | 0 | 0 | 0 | 6.50 |
| 2026/27 | Championship | Wrexham | 1 | 0 | 18 | 0 | 0 | 0 | 0 | 6.90 |
| 2025/26 | League Cup | Barnsley | 3 | 3 | 181 | 0 | 0 | 0 | 0 | 6.37 |
| 2025/26 | EFL Trophy | Barnsley | 4 | 2 | 150 | 1 | 0 | 0 | 0 | 6.50 |
| 2025/26 | FA Cup | Barnsley | 3 | 3 | 147 | 0 | 0 | 0 | 0 | 6.40 |
| 2025/26 | FA Cup | Wrexham | 1 | 0 | 8 | 0 | 0 | 0 | 0 | 6.50 |
| 2025/26 | Championship | Wrexham | 6 | 0 | 98 | 0 | 0 | 0 | 0 | 6.40 |
| 2025/26 | League One | Barnsley | 24 | 22 | 1986 | 13 | 1 | 3 | 0 | 6.94 |
| 2024/25 | League One | Barnsley | 42 | 42 | 3565 | 18 | 5 | 3 | 0 | 7.15 |
| 2024/25 | League One | Mansfield | 3 | 3 | 241 | 0 | 5 | 0 | 0 | 7.15 |
| 2024/25 | FA Cup | Barnsley | 2 | 2 | 115 | — | 0 | 0 | 0 | 6.20 |
| 2024/25 | League Cup | Mansfield | 1 | 0 | 27 | 1 | 0 | 1 | 0 | 7.30 |
| 2024/25 | EFL Trophy | Mansfield | 1 | 0 | 44 | 0 | 0 | 0 | 0 | 7.20 |
| 2023/24 | League Two | Mansfield | 46 | 40 | 3407 | 22 | 10 | 7 | 0 | 7.54 |
| 2023/24 | League Cup | Mansfield | 4 | 3 | 316 | 0 | — | 0 | 0 | 7.33 |
| 2023/24 | FA Cup | Mansfield | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2022/23 | League Two | Mansfield | 19 | 18 | 1531 | 6 | 3 | 2 | 0 | 7.34 |
| 2022/23 | League One | Burton | 19 | 16 | 1274 | 5 | — | 0 | 0 | 6.85 |
| 2022/23 | EFL Trophy | Burton | 3 | 3 | 270 | 1 | — | 0 | 0 | 6.30 |
| 2022/23 | FA Cup | Burton | 3 | 2 | 134 | 0 | — | 0 | 0 | 6.90 |
| 2022/23 | League Cup | Burton | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.20 |
| 2021/22 | League Two | Oldham | 46 | 43 | 3801 | 15 | 2 | 0 | 0 | 6.90 |
| 2021/22 | FA Cup | Oldham | 2 | 2 | 158 | 1 | — | 1 | 0 | — |
| 2021/22 | EFL Trophy | Oldham | 5 | 3 | 323 | 1 | 1 | 0 | 0 | 6.80 |
| 2021/22 | League Cup | Oldham | 3 | 2 | 209 | 0 | — | 1 | 0 | 6.77 |
| 2020/21 | League Two | Oldham | 41 | 34 | 2926 | 10 | 5 | 2 | 0 | 6.87 |
| 2020/21 | League Cup | Oldham | 2 | 1 | 105 | 0 | — | 0 | 0 | 6.75 |
| 2020/21 | FA Cup | Oldham | 2 | 2 | 180 | 0 | — | 0 | 0 | 6.20 |
| 2020/21 | EFL Trophy | Oldham | 4 | 3 | 262 | 1 | 1 | 0 | 0 | 7.43 |
| 2019/20 | National League | Wrexham | 6 | 3 | 311 | 1 | — | 0 | 0 | — |
| 2019 | Challenge Cup | Ross County U21 | 2 | 2 | 180 | 2 | — | 0 | 0 | — |
| 2018/19 | Championship | Falkirk | 11 | 7 | 618 | 3 | — | 3 | 1 | — |
| 2018/19 | Championship | Ross County | 11 | 6 | 586 | 1 | — | 1 | 0 | — |
| 2018/19 | League Cup | Ross County | 2 | 0 | 36 | 0 | — | 0 | 0 | — |
| 2018/19 | Challenge Cup | Ross County | 3 | 3 | 229 | 2 | — | 0 | 0 | — |
| 2017/18 | Premiership | Ross County | 29 | 18 | 1747 | 3 | — | 2 | 0 | — |
| 2017/18 | League Cup | Ross County | 1 | 0 | 21 | 0 | — | 0 | 0 | — |
| 2016/17 | Challenge Cup | 1 | 1 | 96 | 0 | — | 0 | 0 | — |
Availability history
No injuries or suspensions recorded.
Trophies
| Competition | Season | Place |
|---|---|---|
| Development League (Scotland) | 2016/2017 | Winner |
