| Playing Time | Performance | Per 90 Minutes | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1 | 1 | 72 | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2014-2015 | 18 | Celtic | 2. Europa Lg | 0 | 0 | Matches | ||||||||||||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 3 | 2 | 225 | 2.5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | Matches | |||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | Matches |
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 2 | 2 | 162 | 1.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 12 | 12 | 1,001 | 11.1 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 3 | 0.00 | 0.09 | 0.09 | 0.00 | 0.09 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 1 | 1 | 120 | 1.3 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0.75 | 0.00 | 0.75 | 0.75 | 0.75 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 31 | 18 | 1,721 | 19.1 | 2 | 1 | 3 | 2 | 0 | 0 | 4 | 0 | 0.10 | 0.05 | 0.16 | 0.10 | 0.16 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 6 | 6 | 540 | 6.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 31 | 31 | 2,660 | 29.6 | 0 | 1 | 1 | 0 | 0 | 0 | 4 | 0 | 0.00 | 0.03 | 0.03 | 0.00 | 0.03 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 2 | 2 | 180 | 2.0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0.50 | 0.00 | 0.50 | 0.50 | 0.50 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 39 | 39 | 3,391 | 37.7 | 1 | 1 | 2 | 1 | 0 | 0 | 8 | 0 | 0.03 | 0.03 | 0.05 | 0.03 | 0.05 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 45 | 45 | 4,047 | 45.0 | 1 | 3 | 4 | 1 | 0 | 0 | 10 | 0 | 0.02 | 0.07 | 0.09 | 0.02 | 0.09 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | 3 | 2 | 181 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 19 | 17 | 1,515 | 16.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | Matches | |||||
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | 2 | 1 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 1 | 1 | 68 | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 30 | 28 | 2,477 | 27.5 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.07 | 0.07 | 0.00 | 0.07 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 39 | 38 | 3,347 | 37.2 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.05 | 0.05 | 0.00 | 0.05 | Matches |
| 2025-2026 | 29 | Wrexham | eng ENG | 2. Championship | 0 | 0 | Matches | |||||||||||||||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 1 | 0 | 18 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 25 | 24 | 2,045 | 22.7 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | Matches |
| 13 Seasons | 9 Clubs | 10 Leagues | 348 | 324 | 28,683 | 318.7 | 11 | 11 | 20 | 11 | 0 | 0 | 59 | 5 | 0.03 | 0.04 | 0.07 | 0.03 | 0.07 | |||
| Country | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Wrexham (4 Seasons) | 6 Leagues | 90 | 86 | 7,647 | 85.0 | 2 | 4 | 4 | 2 | 0 | 0 | 15 | 0 | 0.02 | 0.06 | 0.06 | 0.02 | 0.06 | ||||
| Celtic (4 Seasons) | 3 Leagues | 8 | 6 | 571 | 6.3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| Rochdale (3 Seasons) | 4 Leagues | 130 | 130 | 11,448 | 127.2 | 3 | 5 | 8 | 3 | 0 | 0 | 25 | 0 | 0.02 | 0.04 | 0.06 | 0.02 | 0.06 | ||||
| Bury (2 Seasons) | 4 Leagues | 46 | 33 | 3,022 | 33.6 | 3 | 2 | 5 | 3 | 0 | 0 | 8 | 3 | 0.09 | 0.06 | 0.15 | 0.09 | 0.15 | ||||
| Barnsley (1 Season) | 2 Leagues | 26 | 24 | 2,063 | 22.9 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | ||||
| Charlton Athletic (1 Season) | 2 Leagues | 22 | 19 | 1,696 | 18.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.05 | 0.00 | 0.05 | 0.05 | 0.05 | ||||
| Walsall (1 Season) | 1 League | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | ||||
| Cork City (1 Season) | 1 League | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | |||||||||
| Oldham Athletic (1 Season) | 1 League | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| League One (8 Seasons) | 184 | 180 | 15,594 | 173.3 | 4 | 5 | 9 | 4 | 0 | 0 | 28 | 5 | 0.02 | 0.03 | 0.05 | 0.02 | 0.05 | |||||
| FA Cup (8 Seasons) | 15 | 14 | 1,256 | 14.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| EFL Cup (7 Seasons) | 13 | 11 | 1,111 | 12.3 | 2 | 0 | 2 | 2 | 0 | 0 | 4 | 0 | 0.16 | 0.00 | 0.16 | 0.16 | 0.16 | |||||
| Premiership (4 Seasons) | 7 | 6 | 549 | 6.1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| League Two (3 Seasons) | 106 | 91 | 8,245 | 91.6 | 3 | 6 | 9 | 3 | 0 | 0 | 20 | 0 | 0.03 | 0.07 | 0.10 | 0.03 | 0.10 | |||||
| National League (1 Season) | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | ||||||||||
| Premier Division (1 Season) | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | ||||||||||
| Champions Lg (1 Season) | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Championship (1 Season) | 0 | 0 | ||||||||||||||||||||
| Europa Lg (1 Season) | 0 | 0 | ||||||||||||||||||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2013-2014 | 17 | Celtic | 1 League | 1 | 1 | 72 | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2014-2015 | 18 | Celtic | 2 Leagues | 3 | 2 | 225 | 2.5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2015-2016 | 19 | Oldham Athletic | 1 League | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2015-2016 | 19 | Celtic | 1 League | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2016 | 20 | Cork City | 1 League | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | ||||||
| 2016-2017 | 20 | Celtic | 2 Leagues | 3 | 2 | 184 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2016-2017 | 20 | Walsall | 1 League | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | |
| 2017-2018 | 21 | Bury | 2 Leagues | 13 | 13 | 1,091 | 12.1 | 0 | 1 | 1 | 0 | 0 | 0 | 3 | 3 | 0.00 | 0.08 | 0.08 | 0.00 | 0.08 | |
| 2018-2019 | 22 | Bury | 3 Leagues | 33 | 20 | 1,931 | 21.5 | 3 | 1 | 4 | 3 | 0 | 0 | 5 | 0 | 0.14 | 0.05 | 0.19 | 0.14 | 0.19 | |
| 2019-2020 | 23 | Rochdale | 3 Leagues | 38 | 38 | 3,290 | 36.6 | 0 | 1 | 1 | 0 | 0 | 0 | 5 | 0 | 0.00 | 0.03 | 0.03 | 0.00 | 0.03 | |
| 2020-2021 | 24 | Rochdale | 3 Leagues | 42 | 42 | 3,661 | 40.7 | 2 | 1 | 3 | 2 | 0 | 0 | 9 | 0 | 0.05 | 0.02 | 0.07 | 0.05 | 0.07 | |
| 2021-2022 | 25 | Rochdale | 3 Leagues | 50 | 50 | 4,497 | 50.0 | 1 | 3 | 4 | 1 | 0 | 0 | 11 | 0 | 0.02 | 0.06 | 0.08 | 0.02 | 0.08 | |
| 2022-2023 | 26 | Charlton Athletic | 2 Leagues | 22 | 19 | 1,696 | 18.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.05 | 0.00 | 0.05 | 0.05 | 0.05 | |
| 2022-2023 | 26 | Wrexham | 1 League | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | ||||||
| 2023-2024 | 27 | Wrexham | 3 Leagues | 33 | 30 | 2,725 | 30.3 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.07 | 0.07 | 0.00 | 0.07 | |
| 2024-2025 | 28 | Wrexham | 2 Leagues | 40 | 39 | 3,437 | 38.2 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.05 | 0.05 | 0.00 | 0.05 | |
| 2025-2026 | 29 | Wrexham | 2 Leagues | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2025-2026 | 29 | Barnsley | 2 Leagues | 26 | 24 | 2,063 | 22.9 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | |
| 13 Seasons | 9 Clubs | 10 Leagues | 348 | 324 | 28,683 | 318.7 | 11 | 11 | 20 | 11 | 0 | 0 | 59 | 5 | 0.03 | 0.04 | 0.07 | 0.03 | 0.07 | ||
| Comp | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Wrexham (4 Seasons) | 6 Leagues | 90 | 86 | 7,647 | 85.0 | 2 | 4 | 4 | 2 | 0 | 0 | 15 | 0 | 0.02 | 0.06 | 0.06 | 0.02 | 0.06 | |||
| Celtic (4 Seasons) | 3 Leagues | 8 | 6 | 571 | 6.3 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||
| Rochdale (3 Seasons) | 4 Leagues | 130 | 130 | 11,448 | 127.2 | 3 | 5 | 8 | 3 | 0 | 0 | 25 | 0 | 0.02 | 0.04 | 0.06 | 0.02 | 0.06 | |||
| Bury (2 Seasons) | 4 Leagues | 46 | 33 | 3,022 | 33.6 | 3 | 2 | 5 | 3 | 0 | 0 | 8 | 3 | 0.09 | 0.06 | 0.15 | 0.09 | 0.15 | |||
| Barnsley (1 Season) | 2 Leagues | 26 | 24 | 2,063 | 22.9 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | |||
| Charlton Athletic (1 Season) | 2 Leagues | 22 | 19 | 1,696 | 18.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.05 | 0.00 | 0.05 | 0.05 | 0.05 | |||
| Walsall (1 Season) | 1 League | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | |||
| Cork City (1 Season) | 1 League | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | ||||||||
| Oldham Athletic (1 Season) | 1 League | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||
| League One (8 Seasons) | 184 | 180 | 15,594 | 173.3 | 4 | 5 | 9 | 4 | 0 | 0 | 28 | 5 | 0.02 | 0.03 | 0.05 | 0.02 | 0.05 | ||||
| FA Cup (8 Seasons) | 15 | 14 | 1,256 | 14.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| EFL Cup (7 Seasons) | 13 | 11 | 1,111 | 12.3 | 2 | 0 | 2 | 2 | 0 | 0 | 4 | 0 | 0.16 | 0.00 | 0.16 | 0.16 | 0.16 | ||||
| Premiership (4 Seasons) | 7 | 6 | 549 | 6.1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| League Two (3 Seasons) | 106 | 91 | 8,245 | 91.6 | 3 | 6 | 9 | 3 | 0 | 0 | 20 | 0 | 0.03 | 0.07 | 0.10 | 0.03 | 0.10 | ||||
| National League (1 Season) | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | |||||||||
| Premier Division (1 Season) | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | |||||||||
| Champions Lg (1 Season) | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||
| Championship (1 Season) | 0 | 0 | |||||||||||||||||||
| Europa Lg (1 Season) | 0 | 0 | |||||||||||||||||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1st | 1 | 1 | 72 | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 1st | 3 | 2 | 225 | 2.5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 17th | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1st | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 2nd | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | Matches | |||||
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1st | 2 | 2 | 162 | 1.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 14th | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | Matches |
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 24th | 12 | 12 | 1,001 | 11.1 | 0 | 1 | 1 | 0 | 0 | 0 | 2 | 3 | 0.00 | 0.09 | 0.09 | 0.00 | 0.09 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 2nd | 31 | 18 | 1,721 | 19.1 | 2 | 1 | 3 | 2 | 0 | 0 | 4 | 0 | 0.10 | 0.05 | 0.16 | 0.10 | 0.16 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 18th | 31 | 31 | 2,660 | 29.6 | 0 | 1 | 1 | 0 | 0 | 0 | 4 | 0 | 0.00 | 0.03 | 0.03 | 0.00 | 0.03 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 21st | 39 | 39 | 3,391 | 37.7 | 1 | 1 | 2 | 1 | 0 | 0 | 8 | 0 | 0.03 | 0.03 | 0.05 | 0.03 | 0.05 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 18th | 45 | 45 | 4,047 | 45.0 | 1 | 3 | 4 | 1 | 0 | 0 | 10 | 0 | 0.02 | 0.07 | 0.09 | 0.02 | 0.09 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 10th | 19 | 17 | 1,515 | 16.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 1st | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | Matches | |||||
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 2nd | 30 | 28 | 2,477 | 27.5 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.07 | 0.07 | 0.00 | 0.07 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 2nd | 39 | 38 | 3,347 | 37.2 | 0 | 2 | 2 | 0 | 0 | 0 | 6 | 0 | 0.00 | 0.05 | 0.05 | 0.00 | 0.05 | Matches |
| 2025-2026 | 29 | Wrexham | eng ENG | 2. Championship | 7th | 0 | 0 | Matches | |||||||||||||||
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 15th | 25 | 24 | 2,045 | 22.7 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | Matches |
| 13 Seasons | 9 Clubs | 6 Leagues | 319 | 299 | 26,294 | 292.2 | 9 | 11 | 18 | 9 | 0 | 0 | 54 | 5 | 0.03 | 0.04 | 0.07 | 0.03 | 0.07 | ||||
| Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Wrexham (4 Seasons) | 4 Leagues | 84 | 81 | 7,129 | 79.2 | 2 | 4 | 4 | 2 | 0 | 0 | 15 | 0 | 0.03 | 0.06 | 0.06 | 0.03 | 0.06 | |||||
| Celtic (4 Seasons) | 1 League | 7 | 6 | 549 | 6.1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Rochdale (3 Seasons) | 2 Leagues | 115 | 115 | 10,098 | 112.2 | 2 | 5 | 7 | 2 | 0 | 0 | 22 | 0 | 0.02 | 0.04 | 0.06 | 0.02 | 0.06 | |||||
| Bury (2 Seasons) | 2 Leagues | 43 | 30 | 2,722 | 30.2 | 2 | 2 | 4 | 2 | 0 | 0 | 6 | 3 | 0.07 | 0.07 | 0.13 | 0.07 | 0.13 | |||||
| Barnsley (1 Season) | 1 League | 25 | 24 | 2,045 | 22.7 | 1 | 0 | 1 | 1 | 0 | 0 | 4 | 0 | 0.04 | 0.00 | 0.04 | 0.04 | 0.04 | |||||
| Charlton Athletic (1 Season) | 1 League | 19 | 17 | 1,515 | 16.8 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | |||||
| Walsall (1 Season) | 1 League | 17 | 17 | 1,455 | 16.2 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 2 | 0.06 | 0.00 | 0.06 | 0.06 | 0.06 | |||||
| Cork City (1 Season) | 1 League | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | ||||||||||
| Oldham Athletic (1 Season) | 1 League | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| League One (8 Seasons) | 184 | 180 | 15,594 | 173.3 | 4 | 5 | 9 | 4 | 0 | 0 | 28 | 5 | 0.02 | 0.03 | 0.05 | 0.02 | 0.05 | ||||||
| Premiership (4 Seasons) | 7 | 6 | 549 | 6.1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||
| League Two (3 Seasons) | 106 | 91 | 8,245 | 91.6 | 3 | 6 | 9 | 3 | 0 | 0 | 20 | 0 | 0.03 | 0.07 | 0.10 | 0.03 | 0.10 | ||||||
| National League (1 Season) | 15 | 15 | 1,305 | 14.5 | 2 | 2 | 0 | 0 | 3 | 0 | 0.14 | 0.14 | |||||||||||
| Premier Division (1 Season) | 7 | 7 | 601 | 6.7 | 0 | 0 | 0 | 0 | 2 | 0 | 0.00 | 0.00 | |||||||||||
| Championship (1 Season) | 0 | 0 | |||||||||||||||||||||
| Playing Time | Performance | Per 90 Minutes | |||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 85th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 58th | 1 | 1 | 120 | 1.3 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0.75 | 0.00 | 0.75 | 0.75 | 0.75 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 65th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 17th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 33rd | 6 | 6 | 540 | 6.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 33rd | 2 | 2 | 180 | 2.0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0.50 | 0.00 | 0.50 | 0.50 | 0.50 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 85th | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | Rd3 | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3 | 3 | 270 | 3.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | QF | 3 | 2 | 181 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | Rd2 | 2 | 1 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 1 | 1 | 68 | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1 | 1 | 90 | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | Rd4 | 2 | 2 | 180 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 1 | 0 | 18 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches | |
| 9 Seasons | 5 Clubs | 2 Leagues | 28 | 25 | 2,367 | 26.3 | 2 | 0 | 2 | 2 | 0 | 0 | 5 | 0 | 0.08 | 0.00 | 0.08 | 0.08 | 0.08 | ||||
| Country | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | ||||||||
| Rochdale (3 Seasons) | 2 Leagues | 15 | 15 | 1,350 | 15.0 | 1 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | 0.07 | 0.00 | 0.07 | 0.07 | 0.07 | |||||
| Wrexham (3 Seasons) | 2 Leagues | 6 | 5 | 518 | 5.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Bury (2 Seasons) | 2 Leagues | 3 | 3 | 300 | 3.3 | 1 | 0 | 1 | 1 | 0 | 0 | 2 | 0 | 0.30 | 0.00 | 0.30 | 0.30 | 0.30 | |||||
| Charlton Athletic (1 Season) | 1 League | 3 | 2 | 181 | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Barnsley (1 Season) | 1 League | 1 | 0 | 18 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| FA Cup (8 Seasons) | 15 | 14 | 1,256 | 14.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | ||||||
| EFL Cup (7 Seasons) | 13 | 11 | 1,111 | 12.3 | 2 | 0 | 2 | 2 | 0 | 0 | 4 | 0 | 0.16 | 0.00 | 0.16 | 0.16 | 0.16 | ||||||
| Playing Time | Performance | Per 90 Minutes | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | LgRank | MP | Starts | Min | 90s | Gls | Ast | G+A | G-PK | PK | PKatt | CrdY | CrdR | Matches | |||||
| 2014-2015 | 18 | Celtic | 2. Europa Lg | R32 | 0 | 0 | Matches | |||||||||||||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | GR | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | Matches |
| 2 Seasons | 1 Club | 2 Leagues | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||
| Champions Lg (1 Season) | 1 | 0 | 22 | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 | |||||
| Europa Lg (1 Season) | 0 | 0 | ||||||||||||||||||||
| Standard | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 0.8 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 2.5 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 2.0 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1.0 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 6.7 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | Matches | ||
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1.8 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 11.1 | 0 | 0 | 1 | 0.00 | 0.09 | 0.00 | 0 | 0 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 1.3 | 1 | 1 | 1 | 100.0 | 0.75 | 0.75 | 1.00 | 1.00 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 19.1 | 2 | 0 | 0 | Matches | |||||||
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 6.0 | 0 | 2 | 1 | 50.0 | 0.33 | 0.17 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 29.6 | 0 | 8 | 3 | 37.5 | 0.27 | 0.10 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 2.0 | 1 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 37.7 | 1 | 26 | 5 | 19.2 | 0.69 | 0.13 | 0.04 | 0.20 | 0 | 0 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | 2.0 | 0 | 2 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3.0 | 0 | 3 | 2 | 66.7 | 1.00 | 0.67 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 45.0 | 1 | 45 | 10 | 22.2 | 1.00 | 0.22 | 0.02 | 0.10 | 0 | 0 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 16.8 | 1 | 7 | 2 | 28.6 | 0.42 | 0.12 | 0.14 | 0.50 | 0 | 0 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 14.5 | 2 | 0 | 0 | Matches | |||||||
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | 2.0 | 0 | 1 | 0 | 0.0 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 0.8 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 27.5 | 0 | 18 | 3 | 16.7 | 0.65 | 0.11 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | Matches | |||||||
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 37.2 | 0 | 8 | 1 | 12.5 | 0.22 | 0.03 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | 2.0 | 0 | 2 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 22.7 | 1 | 12 | 1 | 8.3 | 0.53 | 0.04 | 0.08 | 1.00 | 0 | 0 | Matches |
| 13 Seasons | 9 Clubs | 10 Leagues | 318.7 | 11 | 137 | 35 | 25.5 | 0.51 | 0.13 | 0.05 | 0.20 | 0 | 0 | |||
| Country | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Wrexham (4 Seasons) | 6 Leagues | 85.0 | 2 | 29 | 4 | 13.8 | 0.42 | 0.06 | 0.00 | 0.00 | 0 | 0 | ||||
| Celtic (4 Seasons) | 3 Leagues | 6.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | |||||||
| Rochdale (3 Seasons) | 4 Leagues | 127.2 | 3 | 86 | 21 | 24.4 | 0.68 | 0.17 | 0.03 | 0.14 | 0 | 0 | ||||
| Bury (2 Seasons) | 4 Leagues | 33.6 | 3 | 3 | 2 | 66.7 | 0.21 | 0.14 | 0.33 | 0.50 | 0 | 0 | ||||
| Barnsley (1 Season) | 2 Leagues | 22.9 | 1 | 12 | 1 | 8.3 | 0.52 | 0.04 | 0.08 | 1.00 | 0 | 0 | ||||
| Charlton Athletic (1 Season) | 2 Leagues | 18.8 | 1 | 7 | 2 | 28.6 | 0.37 | 0.11 | 0.14 | 0.50 | 0 | 0 | ||||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | ||||||
| Cork City (1 Season) | 1 League | 6.7 | 0 | 0 | 0 | |||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 0 | 0 | 0.00 | 0 | 0 | |||||||||
| League One (8 Seasons) | 173.3 | 4 | 61 | 18 | 29.5 | 0.36 | 0.10 | 0.07 | 0.22 | 0 | 0 | |||||
| FA Cup (8 Seasons) | 14.0 | 0 | 7 | 3 | 42.9 | 0.54 | 0.23 | 0.00 | 0.00 | 0 | 0 | |||||
| EFL Cup (7 Seasons) | 12.3 | 2 | 6 | 1 | 16.7 | 0.49 | 0.08 | 0.33 | 2.00 | 0 | 0 | |||||
| Premiership (4 Seasons) | 6.1 | 0 | 0 | 0.00 | 0 | 0 | ||||||||||
| League Two (3 Seasons) | 91.6 | 3 | 63 | 13 | 20.6 | 0.87 | 0.18 | 0.02 | 0.08 | 0 | 0 | |||||
| National League (1 Season) | 14.5 | 2 | 0 | 0 | ||||||||||||
| Premier Division (1 Season) | 6.7 | 0 | 0 | 0 | ||||||||||||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||||
| Championship (1 Season) | ||||||||||||||||
| Europa Lg (1 Season) | ||||||||||||||||
| Standard | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2013-2014 | 17 | Celtic | 1 League | 0.8 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2014-2015 | 18 | Celtic | 2 Leagues | 2.5 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2015-2016 | 19 | Oldham Athletic | 1 League | 2.0 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2015-2016 | 19 | Celtic | 1 League | 1.0 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2016 | 20 | Cork City | 1 League | 6.7 | 0 | 0 | 0 | ||||||||
| 2016-2017 | 20 | Celtic | 2 Leagues | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||
| 2016-2017 | 20 | Walsall | 1 League | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | |||
| 2017-2018 | 21 | Bury | 2 Leagues | 12.1 | 0 | 1 | 1 | 100.0 | 0.08 | 0.08 | 0.00 | 0.00 | 0 | 0 | |
| 2018-2019 | 22 | Bury | 3 Leagues | 21.5 | 3 | 2 | 1 | 50.0 | 0.86 | 0.43 | 0.50 | 1.00 | 0 | 0 | |
| 2019-2020 | 23 | Rochdale | 3 Leagues | 36.6 | 0 | 10 | 4 | 40.0 | 0.27 | 0.11 | 0.00 | 0.00 | 0 | 0 | |
| 2020-2021 | 24 | Rochdale | 3 Leagues | 40.7 | 2 | 26 | 5 | 19.2 | 0.64 | 0.12 | 0.08 | 0.40 | 0 | 0 | |
| 2021-2022 | 25 | Rochdale | 3 Leagues | 50.0 | 1 | 50 | 12 | 24.0 | 1.00 | 0.24 | 0.02 | 0.08 | 0 | 0 | |
| 2022-2023 | 26 | Charlton Athletic | 2 Leagues | 18.8 | 1 | 7 | 2 | 28.6 | 0.37 | 0.11 | 0.14 | 0.50 | 0 | 0 | |
| 2022-2023 | 26 | Wrexham | 1 League | 14.5 | 2 | 0 | 0 | ||||||||
| 2023-2024 | 27 | Wrexham | 3 Leagues | 30.3 | 0 | 19 | 3 | 15.8 | 0.63 | 0.10 | 0.00 | 0.00 | 0 | 0 | |
| 2024-2025 | 28 | Wrexham | 2 Leagues | 38.2 | 0 | 8 | 1 | 12.5 | 0.22 | 0.03 | 0.00 | 0.00 | 0 | 0 | |
| 2025-2026 | 29 | Wrexham | 2 Leagues | 2.0 | 0 | 2 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | ||
| 2025-2026 | 29 | Barnsley | 2 Leagues | 22.9 | 1 | 12 | 1 | 8.3 | 0.52 | 0.04 | 0.08 | 1.00 | 0 | 0 | |
| 13 Seasons | 9 Clubs | 10 Leagues | 318.7 | 11 | 137 | 35 | 25.5 | 0.51 | 0.13 | 0.05 | 0.20 | 0 | 0 | ||
| Comp | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Wrexham (4 Seasons) | 6 Leagues | 85.0 | 2 | 29 | 4 | 13.8 | 0.42 | 0.06 | 0.00 | 0.00 | 0 | 0 | |||
| Celtic (4 Seasons) | 3 Leagues | 6.3 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||
| Rochdale (3 Seasons) | 4 Leagues | 127.2 | 3 | 86 | 21 | 24.4 | 0.68 | 0.17 | 0.03 | 0.14 | 0 | 0 | |||
| Bury (2 Seasons) | 4 Leagues | 33.6 | 3 | 3 | 2 | 66.7 | 0.21 | 0.14 | 0.33 | 0.50 | 0 | 0 | |||
| Barnsley (1 Season) | 2 Leagues | 22.9 | 1 | 12 | 1 | 8.3 | 0.52 | 0.04 | 0.08 | 1.00 | 0 | 0 | |||
| Charlton Athletic (1 Season) | 2 Leagues | 18.8 | 1 | 7 | 2 | 28.6 | 0.37 | 0.11 | 0.14 | 0.50 | 0 | 0 | |||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | |||||
| Cork City (1 Season) | 1 League | 6.7 | 0 | 0 | 0 | ||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 0 | 0 | 0.00 | 0 | 0 | ||||||||
| League One (8 Seasons) | 173.3 | 4 | 61 | 18 | 29.5 | 0.36 | 0.10 | 0.07 | 0.22 | 0 | 0 | ||||
| FA Cup (8 Seasons) | 14.0 | 0 | 7 | 3 | 42.9 | 0.54 | 0.23 | 0.00 | 0.00 | 0 | 0 | ||||
| EFL Cup (7 Seasons) | 12.3 | 2 | 6 | 1 | 16.7 | 0.49 | 0.08 | 0.33 | 2.00 | 0 | 0 | ||||
| Premiership (4 Seasons) | 6.1 | 0 | 0 | 0.00 | 0 | 0 | |||||||||
| League Two (3 Seasons) | 91.6 | 3 | 63 | 13 | 20.6 | 0.87 | 0.18 | 0.02 | 0.08 | 0 | 0 | ||||
| National League (1 Season) | 14.5 | 2 | 0 | 0 | |||||||||||
| Premier Division (1 Season) | 6.7 | 0 | 0 | 0 | |||||||||||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | |||||||
| Championship (1 Season) | |||||||||||||||
| Europa Lg (1 Season) | |||||||||||||||
| Standard | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1st | 0.8 | 0 | 0 | 0.00 | 0 | 0 | ||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 1st | 2.5 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 17th | 2.0 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1st | 1.0 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 2nd | 6.7 | 0 | 0 | 0 | Matches | |||||||
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1st | 1.8 | 0 | 0 | 0.00 | 0 | 0 | Matches | |||||
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 14th | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | Matches | ||
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 24th | 11.1 | 0 | 0 | 1 | 0.00 | 0.09 | 0.00 | 0 | 0 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 2nd | 19.1 | 2 | 0 | 0 | Matches | |||||||
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 18th | 29.6 | 0 | 8 | 3 | 37.5 | 0.27 | 0.10 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 21st | 37.7 | 1 | 26 | 5 | 19.2 | 0.69 | 0.13 | 0.04 | 0.20 | 0 | 0 | Matches |
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 18th | 45.0 | 1 | 45 | 10 | 22.2 | 1.00 | 0.22 | 0.02 | 0.10 | 0 | 0 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 10th | 16.8 | 1 | 7 | 2 | 28.6 | 0.42 | 0.12 | 0.14 | 0.50 | 0 | 0 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 1st | 14.5 | 2 | 0 | 0 | Matches | |||||||
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 2nd | 27.5 | 0 | 18 | 3 | 16.7 | 0.65 | 0.11 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 2nd | 37.2 | 0 | 8 | 1 | 12.5 | 0.22 | 0.03 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 15th | 22.7 | 1 | 12 | 1 | 8.3 | 0.53 | 0.04 | 0.08 | 1.00 | 0 | 0 | Matches |
| 13 Seasons | 9 Clubs | 6 Leagues | 292.2 | 9 | 124 | 31 | 25.0 | 0.51 | 0.12 | 0.04 | 0.16 | 0 | 0 | ||||
| Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Wrexham (4 Seasons) | 4 Leagues | 79.2 | 2 | 26 | 4 | 15.4 | 0.40 | 0.06 | 0.00 | 0.00 | 0 | 0 | |||||
| Celtic (4 Seasons) | 1 League | 6.1 | 0 | 0 | 0.00 | 0 | 0 | ||||||||||
| Rochdale (3 Seasons) | 2 Leagues | 112.2 | 2 | 79 | 18 | 22.8 | 0.70 | 0.16 | 0.03 | 0.11 | 0 | 0 | |||||
| Bury (2 Seasons) | 2 Leagues | 30.2 | 2 | 0 | 1 | 0.00 | 0.09 | 0.00 | 0 | 0 | |||||||
| Barnsley (1 Season) | 1 League | 22.7 | 1 | 12 | 1 | 8.3 | 0.53 | 0.04 | 0.08 | 1.00 | 0 | 0 | |||||
| Charlton Athletic (1 Season) | 1 League | 16.8 | 1 | 7 | 2 | 28.6 | 0.42 | 0.12 | 0.14 | 0.50 | 0 | 0 | |||||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 0 | 5 | 0.00 | 0.31 | 0.20 | 0 | 0 | |||||||
| Cork City (1 Season) | 1 League | 6.7 | 0 | 0 | 0 | ||||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 0 | 0 | 0.00 | 0 | 0 | ||||||||||
| League One (8 Seasons) | 173.3 | 4 | 61 | 18 | 29.5 | 0.36 | 0.10 | 0.07 | 0.22 | 0 | 0 | ||||||
| Premiership (4 Seasons) | 6.1 | 0 | 0 | 0.00 | 0 | 0 | |||||||||||
| League Two (3 Seasons) | 91.6 | 3 | 63 | 13 | 20.6 | 0.87 | 0.18 | 0.02 | 0.08 | 0 | 0 | ||||||
| National League (1 Season) | 14.5 | 2 | 0 | 0 | |||||||||||||
| Premier Division (1 Season) | 6.7 | 0 | 0 | 0 | |||||||||||||
| Championship (1 Season) | |||||||||||||||||
| Standard | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 85th | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 58th | 1.3 | 1 | 1 | 1 | 100.0 | 0.75 | 0.75 | 1.00 | 1.00 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 65th | 1.0 | 0 | 1 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 17th | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 33rd | 6.0 | 0 | 2 | 1 | 50.0 | 0.33 | 0.17 | 0.00 | 0.00 | 0 | 0 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 33rd | 2.0 | 1 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 85th | 1.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | Rd3 | 2.0 | 0 | 2 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3.0 | 0 | 3 | 2 | 66.7 | 1.00 | 0.67 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | QF | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | Rd2 | 2.0 | 0 | 1 | 0 | 0.0 | 0.50 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 0.8 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | Matches | ||||||||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | Rd4 | 2.0 | 0 | 2 | 0 | 0.0 | 1.00 | 0.00 | 0.00 | 0 | 0 | Matches | |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | ||||
| 9 Seasons | 5 Clubs | 2 Leagues | 26.3 | 2 | 13 | 4 | 30.8 | 0.51 | 0.16 | 0.15 | 0.50 | 0 | 0 | ||||
| Country | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | ||||||||
| Rochdale (3 Seasons) | 2 Leagues | 15.0 | 1 | 7 | 3 | 42.9 | 0.47 | 0.20 | 0.14 | 0.33 | 0 | 0 | |||||
| Wrexham (3 Seasons) | 2 Leagues | 5.8 | 0 | 3 | 0 | 0.0 | 0.63 | 0.00 | 0.00 | 0 | 0 | ||||||
| Bury (2 Seasons) | 2 Leagues | 3.3 | 1 | 3 | 1 | 33.3 | 0.90 | 0.30 | 0.33 | 1.00 | 0 | 0 | |||||
| Charlton Athletic (1 Season) | 1 League | 2.0 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||||
| Barnsley (1 Season) | 1 League | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||||
| FA Cup (8 Seasons) | 14.0 | 0 | 7 | 3 | 42.9 | 0.54 | 0.23 | 0.00 | 0.00 | 0 | 0 | ||||||
| EFL Cup (7 Seasons) | 12.3 | 2 | 6 | 1 | 16.7 | 0.49 | 0.08 | 0.33 | 2.00 | 0 | 0 | ||||||
| Standard | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | LgRank | 90s | Gls | Sh | SoT | PK | PKatt | Matches | |||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | GR | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | Matches | |||
| 2 Seasons | 1 Club | 2 Leagues | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0.00 | 0.00 | 0 | 0 | ||||||||
| Europa Lg (1 Season) | ||||||||||||||||
| Playing Time | Starts | Subs | Team Success | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1 | 72 | 72 | 2.1 | 0.8 | 1 | 0 | |||||||||||
| 2014-2015 | 18 | Celtic | 2. Europa Lg | 0 | 0 | 0 | 0 | 3 | Matches | |||||||||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 3 | 225 | 75 | 6.6 | 2.5 | 2 | 2 | 1 | 5 | 1.33 | 3 | 2 | +1 | +0.40 | -1.46 | Matches | ||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | Matches | ||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1 | 90 | 90 | 2.6 | 1.0 | 1 | 1 | 0 | 1 | 3.00 | 3 | 1 | +2 | +2.00 | +0.38 | Matches | ||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | Matches | |
| 2016-2017 | 20 | Celtic | 1. Champions Lg | 1 | 22 | 22 | 4.1 | 0.2 | 0 | 0 | 1 | 0 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | Matches | |||
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | Matches | ||
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 2 | 162 | 81 | 4.7 | 1.8 | 2 | 1 | 0 | 3.00 | Matches | ||||||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 3 | -3 | -3.00 | -3.00 | Matches | |
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 12 | 1,001 | 83 | 24.2 | 11.1 | 12 | 10 | 0 | 2 | 0.67 | 7 | 13 | -6 | -0.54 | +0.15 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 1 | 120 | 120 | 100.0 | 1.3 | 1 | 120 | 1 | 0 | 0 | 1.00 | 1 | 1 | 0 | 0.00 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 1 | -1 | -1.00 | -6.00 | Matches | |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 31 | 1,721 | 56 | 41.6 | 19.1 | 18 | 79 | 12 | 13 | 24 | 1 | 1.71 | 32 | 25 | +7 | +0.37 | -0.34 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 3.00 | 2 | 1 | +1 | +1.00 | -0.29 | Matches | |
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 6 | 540 | 90 | 100.0 | 6.0 | 6 | 90 | 6 | 0 | 0 | 1.50 | 5 | 6 | -1 | -0.17 | Matches | ||
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 31 | 2,660 | 86 | 86.9 | 29.6 | 31 | 86 | 28 | 0 | 0 | 1.16 | 36 | 43 | -7 | -0.24 | +2.24 | Matches | |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 1 | 2 | -1 | -0.50 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 39 | 3,391 | 87 | 81.9 | 37.7 | 39 | 87 | 36 | 0 | 0 | 0.97 | 42 | 60 | -18 | -0.48 | -0.60 | Matches | |
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 3 | 4 | -1 | -0.50 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 1.33 | 4 | 4 | 0 | 0.00 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 45 | 4,047 | 90 | 97.8 | 45.0 | 45 | 90 | 44 | 0 | 0 | 1.18 | 49 | 56 | -7 | -0.16 | +0.81 | Matches | |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | 3 | 181 | 60 | 40.2 | 2.0 | 2 | 76 | 1 | 1 | 30 | 0 | 1.33 | 2 | 3 | -1 | -0.50 | -0.16 | Matches |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 19 | 1,515 | 80 | 36.6 | 16.8 | 17 | 86 | 15 | 2 | 24 | 1 | 1.53 | 23 | 19 | +4 | +0.24 | +0.24 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | Matches | |
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | 2 | 180 | 90 | 75.0 | 2.0 | 1 | 120 | 1 | 1 | 60 | 0 | 1.00 | 1 | 0 | +1 | +0.50 | +2.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 1 | 68 | 68 | 18.9 | 0.8 | 1 | 68 | 0 | 0 | 0 | 0.00 | 1 | 4 | -3 | -3.97 | -5.51 | Matches | |
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 30 | 2,477 | 83 | 59.8 | 27.5 | 28 | 85 | 23 | 2 | 43 | 2 | 1.93 | 55 | 30 | +25 | +0.91 | +0.26 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 1 | -1 | -1.00 | Matches | ||
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 39 | 3,347 | 86 | 80.8 | 37.2 | 38 | 87 | 32 | 1 | 28 | 7 | 2.00 | 53 | 26 | +27 | +0.73 | +0.05 | Matches |
| 2025-2026 | 29 | Wrexham | eng ENG | 2. Championship | 0 | 0 | 0 | 0 | 3 | Matches | ||||||||||||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | 2 | 180 | 90 | 50.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 2.00 | 6 | 5 | +1 | +0.50 | 0.00 | Matches | |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 1 | 18 | 18 | 6.7 | 0.2 | 0 | 0 | 1 | 18 | 0 | 0.00 | 0 | 2 | -2 | -10.00 | -10.36 | Matches | |
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 25 | 2,045 | 82 | 49.4 | 22.7 | 24 | 85 | 22 | 1 | 14 | 0 | 1.20 | 30 | 36 | -6 | -0.26 | -0.31 | Matches |
| 13 Seasons | 9 Clubs | 10 Leagues | 348 | 28,683 | 82 | 38.5 | 318.7 | 324 | 87 | 286 | 24 | 27 | 29 | 1.45 | 430 | 397 | +33 | +0.10 | -0.43 | |||
| Country | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Wrexham (4 Seasons) | 6 Leagues | 90 | 7,647 | 85 | 43.4 | 85.0 | 86 | 87 | 73 | 4 | 44 | 14 | 1.98 | 152 | 81 | +71 | +0.84 | -0.32 | ||||
| Celtic (4 Seasons) | 3 Leagues | 8 | 571 | 71 | 3.8 | 6.3 | 6 | 4 | 2 | 9 | 2.11 | 6 | 5 | +1 | +0.27 | -1.23 | ||||||
| Rochdale (3 Seasons) | 4 Leagues | 130 | 11,448 | 88 | 88.7 | 127.2 | 130 | 88 | 123 | 0 | 0 | 1.15 | 143 | 178 | -35 | -0.28 | +0.22 | |||||
| Bury (2 Seasons) | 4 Leagues | 46 | 3,022 | 66 | 34.5 | 33.6 | 33 | 82 | 25 | 13 | 24 | 3 | 1.35 | 40 | 43 | -3 | -0.09 | -0.09 | ||||
| Barnsley (1 Season) | 2 Leagues | 26 | 2,063 | 79 | 46.8 | 22.9 | 24 | 85 | 22 | 2 | 16 | 0 | 1.15 | 30 | 38 | -8 | -0.35 | -0.43 | ||||
| Charlton Athletic (1 Season) | 2 Leagues | 22 | 1,696 | 77 | 36.9 | 18.8 | 19 | 85 | 16 | 3 | 26 | 1 | 1.50 | 25 | 22 | +3 | +0.16 | +0.19 | ||||
| Walsall (1 Season) | 1 League | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | ||||||
| Cork City (1 Season) | 1 League | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | |||||
| Oldham Athletic (1 Season) | 1 League | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | ||||||
| League One (8 Seasons) | 184 | 15,594 | 85 | 48.7 | 173.3 | 180 | 86 | 160 | 4 | 22 | 12 | 1.33 | 215 | 223 | -8 | -0.05 | +0.21 | |||||
| FA Cup (8 Seasons) | 15 | 1,256 | 84 | 63.4 | 14.0 | 14 | 88 | 13 | 1 | 18 | 0 | 0.87 | 11 | 23 | -12 | -0.86 | -2.23 | |||||
| EFL Cup (7 Seasons) | 13 | 1,111 | 85 | 60.7 | 12.3 | 11 | 93 | 10 | 2 | 45 | 0 | 1.54 | 16 | 16 | 0 | 0.00 | -0.25 | |||||
| Premiership (4 Seasons) | 7 | 549 | 78 | 4.0 | 6.1 | 6 | 4 | 1 | 6 | 2.17 | 6 | 3 | +3 | +0.86 | -0.88 | |||||||
| League Two (3 Seasons) | 106 | 8,245 | 78 | 66.4 | 91.6 | 91 | 86 | 79 | 15 | 26 | 3 | 1.55 | 136 | 111 | +25 | +0.27 | -0.37 | |||||
| National League (1 Season) | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | ||||||
| Premier Division (1 Season) | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | ||||||
| Champions Lg (1 Season) | 1 | 22 | 22 | 4.1 | 0.2 | 0 | 0 | 1 | 0 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | |||||||
| Championship (1 Season) | 0 | 0 | 0 | 0 | 3 | |||||||||||||||||
| Europa Lg (1 Season) | 0 | 0 | 0 | 0 | 3 | |||||||||||||||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2013-2014 | 17 | Celtic | 1 League | 1 | 72 | 72 | 2.1 | 0.8 | 1 | 0 | |||||||||||
| 2014-2015 | 18 | Celtic | 2 Leagues | 3 | 225 | 75 | 5.4 | 2.5 | 2 | 2 | 1 | 8 | 1.33 | 3 | 2 | +1 | +0.40 | -1.46 | |||
| 2015-2016 | 19 | Oldham Athletic | 1 League | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | |||
| 2015-2016 | 19 | Celtic | 1 League | 1 | 90 | 90 | 2.6 | 1.0 | 1 | 1 | 0 | 1 | 3.00 | 3 | 1 | +2 | +2.00 | +0.38 | |||
| 2016 | 20 | Cork City | 1 League | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | ||
| 2016-2017 | 20 | Celtic | 2 Leagues | 3 | 184 | 61 | 4.6 | 2.0 | 2 | 1 | 1 | 0 | 2.58 | 0 | 2 | -2 | -8.18 | -6.62 | |||
| 2016-2017 | 20 | Walsall | 1 League | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | |||
| 2017-2018 | 21 | Bury | 2 Leagues | 13 | 1,091 | 84 | 25.3 | 12.1 | 13 | 90 | 11 | 0 | 2 | 0.62 | 7 | 16 | -9 | -0.74 | -0.07 | ||
| 2018-2019 | 22 | Bury | 3 Leagues | 33 | 1,931 | 59 | 43.5 | 21.5 | 20 | 81 | 14 | 13 | 24 | 1 | 1.64 | 33 | 27 | +6 | +0.28 | -0.58 | |
| 2019-2020 | 23 | Rochdale | 3 Leagues | 38 | 3,290 | 87 | 84.4 | 36.6 | 38 | 87 | 35 | 0 | 0 | 1.26 | 43 | 50 | -7 | -0.19 | +0.99 | ||
| 2020-2021 | 24 | Rochdale | 3 Leagues | 42 | 3,661 | 87 | 83.0 | 40.7 | 42 | 87 | 39 | 0 | 0 | 0.97 | 44 | 64 | -20 | -0.49 | -0.61 | ||
| 2021-2022 | 25 | Rochdale | 3 Leagues | 50 | 4,497 | 90 | 98.0 | 50.0 | 50 | 90 | 49 | 0 | 0 | 1.20 | 56 | 64 | -8 | -0.16 | +0.81 | ||
| 2022-2023 | 26 | Charlton Athletic | 2 Leagues | 22 | 1,696 | 77 | 36.9 | 18.8 | 19 | 85 | 16 | 3 | 26 | 1 | 1.50 | 25 | 22 | +3 | +0.16 | +0.19 | |
| 2022-2023 | 26 | Wrexham | 1 League | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | ||
| 2023-2024 | 27 | Wrexham | 3 Leagues | 33 | 2,725 | 83 | 57.5 | 30.3 | 30 | 86 | 24 | 3 | 49 | 2 | 1.82 | 57 | 34 | +23 | +0.76 | +0.04 | |
| 2024-2025 | 28 | Wrexham | 2 Leagues | 40 | 3,437 | 86 | 81.3 | 38.2 | 39 | 87 | 33 | 1 | 28 | 7 | 1.95 | 53 | 27 | +26 | +0.68 | 0.00 | |
| 2025-2026 | 29 | Wrexham | 2 Leagues | 2 | 180 | 90 | 4.0 | 2.0 | 2 | 90 | 2 | 0 | 3 | 2.00 | 6 | 5 | +1 | +0.50 | 0.00 | ||
| 2025-2026 | 29 | Barnsley | 2 Leagues | 26 | 2,063 | 79 | 46.8 | 22.9 | 24 | 85 | 22 | 2 | 16 | 0 | 1.15 | 30 | 38 | -8 | -0.35 | -0.43 | |
| 13 Seasons | 9 Clubs | 10 Leagues | 348 | 28,683 | 82 | 38.5 | 318.7 | 324 | 87 | 286 | 24 | 27 | 29 | 1.45 | 430 | 397 | +33 | +0.10 | -0.43 | ||
| Comp | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Wrexham (4 Seasons) | 6 Leagues | 90 | 7,647 | 85 | 43.4 | 85.0 | 86 | 87 | 73 | 4 | 44 | 14 | 1.98 | 152 | 81 | +71 | +0.84 | -0.32 | |||
| Celtic (4 Seasons) | 3 Leagues | 8 | 571 | 71 | 3.8 | 6.3 | 6 | 4 | 2 | 9 | 2.11 | 6 | 5 | +1 | +0.27 | -1.23 | |||||
| Rochdale (3 Seasons) | 4 Leagues | 130 | 11,448 | 88 | 88.7 | 127.2 | 130 | 88 | 123 | 0 | 0 | 1.15 | 143 | 178 | -35 | -0.28 | +0.22 | ||||
| Bury (2 Seasons) | 4 Leagues | 46 | 3,022 | 66 | 34.5 | 33.6 | 33 | 82 | 25 | 13 | 24 | 3 | 1.35 | 40 | 43 | -3 | -0.09 | -0.09 | |||
| Barnsley (1 Season) | 2 Leagues | 26 | 2,063 | 79 | 46.8 | 22.9 | 24 | 85 | 22 | 2 | 16 | 0 | 1.15 | 30 | 38 | -8 | -0.35 | -0.43 | |||
| Charlton Athletic (1 Season) | 2 Leagues | 22 | 1,696 | 77 | 36.9 | 18.8 | 19 | 85 | 16 | 3 | 26 | 1 | 1.50 | 25 | 22 | +3 | +0.16 | +0.19 | |||
| Walsall (1 Season) | 1 League | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | |||||
| Cork City (1 Season) | 1 League | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | ||||
| Oldham Athletic (1 Season) | 1 League | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | |||||
| League One (8 Seasons) | 184 | 15,594 | 85 | 48.7 | 173.3 | 180 | 86 | 160 | 4 | 22 | 12 | 1.33 | 215 | 223 | -8 | -0.05 | +0.21 | ||||
| FA Cup (8 Seasons) | 15 | 1,256 | 84 | 63.4 | 14.0 | 14 | 88 | 13 | 1 | 18 | 0 | 0.87 | 11 | 23 | -12 | -0.86 | -2.23 | ||||
| EFL Cup (7 Seasons) | 13 | 1,111 | 85 | 60.7 | 12.3 | 11 | 93 | 10 | 2 | 45 | 0 | 1.54 | 16 | 16 | 0 | 0.00 | -0.25 | ||||
| Premiership (4 Seasons) | 7 | 549 | 78 | 4.0 | 6.1 | 6 | 4 | 1 | 6 | 2.17 | 6 | 3 | +3 | +0.86 | -0.88 | ||||||
| League Two (3 Seasons) | 106 | 8,245 | 78 | 66.4 | 91.6 | 91 | 86 | 79 | 15 | 26 | 3 | 1.55 | 136 | 111 | +25 | +0.27 | -0.37 | ||||
| National League (1 Season) | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | |||||
| Premier Division (1 Season) | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | |||||
| Champions Lg (1 Season) | 1 | 22 | 22 | 4.1 | 0.2 | 0 | 0 | 1 | 0 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | ||||||
| Championship (1 Season) | 0 | 0 | 0 | 0 | 3 | ||||||||||||||||
| Europa Lg (1 Season) | 0 | 0 | 0 | 0 | 3 | ||||||||||||||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1st | 1 | 72 | 72 | 2.1 | 0.8 | 1 | 0 | |||||||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 1st | 3 | 225 | 75 | 6.6 | 2.5 | 2 | 2 | 1 | 5 | 1.33 | 3 | 2 | +1 | +0.40 | -1.46 | Matches | ||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 17th | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | Matches | ||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1st | 1 | 90 | 90 | 2.6 | 1.0 | 1 | 1 | 0 | 1 | 3.00 | 3 | 1 | +2 | +2.00 | +0.38 | Matches | ||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 2nd | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | Matches | |
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1st | 2 | 162 | 81 | 4.7 | 1.8 | 2 | 1 | 0 | 3.00 | Matches | ||||||||
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 14th | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | Matches | ||
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 24th | 12 | 1,001 | 83 | 24.2 | 11.1 | 12 | 10 | 0 | 2 | 0.67 | 7 | 13 | -6 | -0.54 | +0.15 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 2nd | 31 | 1,721 | 56 | 41.6 | 19.1 | 18 | 79 | 12 | 13 | 24 | 1 | 1.71 | 32 | 25 | +7 | +0.37 | -0.34 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 18th | 31 | 2,660 | 86 | 86.9 | 29.6 | 31 | 86 | 28 | 0 | 0 | 1.16 | 36 | 43 | -7 | -0.24 | +2.24 | Matches | |
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 21st | 39 | 3,391 | 87 | 81.9 | 37.7 | 39 | 87 | 36 | 0 | 0 | 0.97 | 42 | 60 | -18 | -0.48 | -0.60 | Matches | |
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 18th | 45 | 4,047 | 90 | 97.8 | 45.0 | 45 | 90 | 44 | 0 | 0 | 1.18 | 49 | 56 | -7 | -0.16 | +0.81 | Matches | |
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 10th | 19 | 1,515 | 80 | 36.6 | 16.8 | 17 | 86 | 15 | 2 | 24 | 1 | 1.53 | 23 | 19 | +4 | +0.24 | +0.24 | Matches |
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 1st | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | Matches | |
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 2nd | 30 | 2,477 | 83 | 59.8 | 27.5 | 28 | 85 | 23 | 2 | 43 | 2 | 1.93 | 55 | 30 | +25 | +0.91 | +0.26 | Matches |
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 2nd | 39 | 3,347 | 86 | 80.8 | 37.2 | 38 | 87 | 32 | 1 | 28 | 7 | 2.00 | 53 | 26 | +27 | +0.73 | +0.05 | Matches |
| 2025-2026 | 29 | Wrexham | eng ENG | 2. Championship | 7th | 0 | 0 | 0 | 0 | 3 | Matches | ||||||||||||
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 15th | 25 | 2,045 | 82 | 49.4 | 22.7 | 24 | 85 | 22 | 1 | 14 | 0 | 1.20 | 30 | 36 | -6 | -0.26 | -0.31 | Matches |
| 13 Seasons | 9 Clubs | 6 Leagues | 319 | 26,294 | 82 | 37.9 | 292.2 | 299 | 86 | 263 | 20 | 25 | 26 | 1.48 | 403 | 356 | +47 | +0.16 | -0.39 | ||||
| Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Wrexham (4 Seasons) | 4 Leagues | 84 | 7,129 | 85 | 43.0 | 79.2 | 81 | 87 | 69 | 3 | 38 | 14 | 2.05 | 144 | 71 | +73 | +0.92 | -0.27 | |||||
| Celtic (4 Seasons) | 1 League | 7 | 549 | 78 | 4.0 | 6.1 | 6 | 4 | 1 | 6 | 2.17 | 6 | 3 | +3 | +0.86 | -0.88 | |||||||
| Rochdale (3 Seasons) | 2 Leagues | 115 | 10,098 | 88 | 89.0 | 112.2 | 115 | 88 | 108 | 0 | 0 | 1.10 | 127 | 159 | -32 | -0.29 | +0.51 | ||||||
| Bury (2 Seasons) | 2 Leagues | 43 | 2,722 | 63 | 32.9 | 30.2 | 30 | 79 | 22 | 13 | 24 | 3 | 1.42 | 39 | 38 | +1 | +0.03 | +0.11 | |||||
| Barnsley (1 Season) | 1 League | 25 | 2,045 | 82 | 49.4 | 22.7 | 24 | 85 | 22 | 1 | 14 | 0 | 1.20 | 30 | 36 | -6 | -0.26 | -0.31 | |||||
| Charlton Athletic (1 Season) | 1 League | 19 | 1,515 | 80 | 36.6 | 16.8 | 17 | 86 | 15 | 2 | 24 | 1 | 1.53 | 23 | 19 | +4 | +0.24 | +0.24 | |||||
| Walsall (1 Season) | 1 League | 17 | 1,455 | 86 | 35.1 | 16.2 | 17 | 15 | 0 | 1 | 1.53 | 22 | 19 | +3 | +0.19 | +0.52 | |||||||
| Cork City (1 Season) | 1 League | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | ||||||
| Oldham Athletic (1 Season) | 1 League | 2 | 180 | 90 | 4.3 | 2.0 | 2 | 2 | 0 | 1 | 0.00 | 2 | 7 | -5 | -2.50 | -2.30 | |||||||
| League One (8 Seasons) | 184 | 15,594 | 85 | 48.7 | 173.3 | 180 | 86 | 160 | 4 | 22 | 12 | 1.33 | 215 | 223 | -8 | -0.05 | +0.21 | ||||||
| Premiership (4 Seasons) | 7 | 549 | 78 | 4.0 | 6.1 | 6 | 4 | 1 | 6 | 2.17 | 6 | 3 | +3 | +0.86 | -0.88 | ||||||||
| League Two (3 Seasons) | 106 | 8,245 | 78 | 66.4 | 91.6 | 91 | 86 | 79 | 15 | 26 | 3 | 1.55 | 136 | 111 | +25 | +0.27 | -0.37 | ||||||
| National League (1 Season) | 15 | 1,305 | 87 | 31.5 | 14.5 | 15 | 87 | 14 | 0 | 2 | 2.40 | 36 | 15 | +21 | +1.45 | -0.20 | |||||||
| Premier Division (1 Season) | 7 | 601 | 86 | 20.2 | 6.7 | 7 | 86 | 6 | 0 | 0 | 1.71 | 10 | 4 | +6 | +0.90 | -0.47 | |||||||
| Championship (1 Season) | 0 | 0 | 0 | 0 | 3 | ||||||||||||||||||
| Playing Time | Starts | Subs | Team Success | ||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 85th | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 3 | -3 | -3.00 | -3.00 | Matches | |
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 58th | 1 | 120 | 120 | 100.0 | 1.3 | 1 | 120 | 1 | 0 | 0 | 1.00 | 1 | 1 | 0 | 0.00 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 65th | 1 | 90 | 90 | 50.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 1 | -1 | -1.00 | -6.00 | Matches | |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 17th | 1 | 90 | 90 | 30.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 3.00 | 2 | 1 | +1 | +1.00 | -0.29 | Matches | |
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 33rd | 6 | 540 | 90 | 100.0 | 6.0 | 6 | 90 | 6 | 0 | 0 | 1.50 | 5 | 6 | -1 | -0.17 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 33rd | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 1 | 2 | -1 | -0.50 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 85th | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 1 | 2 | -1 | -1.00 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | Rd3 | 2 | 180 | 90 | 100.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 1.50 | 3 | 4 | -1 | -0.50 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3 | 270 | 90 | 100.0 | 3.0 | 3 | 90 | 3 | 0 | 0 | 1.33 | 4 | 4 | 0 | 0.00 | Matches | |||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | QF | 3 | 181 | 60 | 40.2 | 2.0 | 2 | 76 | 1 | 1 | 30 | 0 | 1.33 | 2 | 3 | -1 | -0.50 | -0.16 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | Rd2 | 2 | 180 | 90 | 75.0 | 2.0 | 1 | 120 | 1 | 1 | 60 | 0 | 1.00 | 1 | 0 | +1 | +0.50 | +2.00 | Matches |
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 1 | 68 | 68 | 18.9 | 0.8 | 1 | 68 | 0 | 0 | 0 | 0.00 | 1 | 4 | -3 | -3.97 | -5.51 | Matches | ||
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1 | 90 | 90 | 100.0 | 1.0 | 1 | 90 | 1 | 0 | 0 | 0.00 | 0 | 1 | -1 | -1.00 | Matches | |||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | Rd4 | 2 | 180 | 90 | 50.0 | 2.0 | 2 | 90 | 2 | 0 | 0 | 2.00 | 6 | 5 | +1 | +0.50 | 0.00 | Matches | |
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 1 | 18 | 18 | 6.7 | 0.2 | 0 | 0 | 1 | 18 | 0 | 0.00 | 0 | 2 | -2 | -10.00 | -10.36 | Matches | ||
| 9 Seasons | 5 Clubs | 2 Leagues | 28 | 2,367 | 85 | 62.1 | 26.3 | 25 | 90 | 23 | 3 | 36 | 0 | 1.18 | 27 | 39 | -12 | -0.46 | -1.27 | ||||
| Country | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | ||||||||||
| Rochdale (3 Seasons) | 2 Leagues | 15 | 1,350 | 90 | 86.5 | 15.0 | 15 | 90 | 15 | 0 | 0 | 1.47 | 16 | 19 | -3 | -0.20 | -1.49 | ||||||
| Wrexham (3 Seasons) | 2 Leagues | 6 | 518 | 86 | 49.3 | 5.8 | 5 | 92 | 4 | 1 | 60 | 0 | 1.00 | 8 | 10 | -2 | -0.35 | -1.19 | |||||
| Bury (2 Seasons) | 2 Leagues | 3 | 300 | 100 | 62.5 | 3.3 | 3 | 100 | 3 | 0 | 0 | 0.33 | 1 | 5 | -4 | -1.20 | -3.70 | ||||||
| Charlton Athletic (1 Season) | 1 League | 3 | 181 | 60 | 40.2 | 2.0 | 2 | 76 | 1 | 1 | 30 | 0 | 1.33 | 2 | 3 | -1 | -0.50 | -0.16 | |||||
| Barnsley (1 Season) | 1 League | 1 | 18 | 18 | 6.7 | 0.2 | 0 | 0 | 1 | 18 | 0 | 0.00 | 0 | 2 | -2 | -10.00 | -10.36 | ||||||
| FA Cup (8 Seasons) | 15 | 1,256 | 84 | 63.4 | 14.0 | 14 | 88 | 13 | 1 | 18 | 0 | 0.87 | 11 | 23 | -12 | -0.86 | -2.23 | ||||||
| EFL Cup (7 Seasons) | 13 | 1,111 | 85 | 60.7 | 12.3 | 11 | 93 | 10 | 2 | 45 | 0 | 1.54 | 16 | 16 | 0 | 0.00 | -0.25 | ||||||
| Playing Time | Starts | Subs | Team Success | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | LgRank | MP | Min | 90s | Starts | Compl | Subs | unSub | onG | onGA | +/- | Matches | |||||||
| 2014-2015 | 18 | Celtic | 2. Europa Lg | R32 | 0 | 0 | 0 | 0 | 3 | Matches | ||||||||||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | GR | 1 | 22 | 22 | 4.1 | 0.2 | 0 | 0 | 1 | 0 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | Matches | ||
| 2 Seasons | 1 Club | 2 Leagues | 1 | 22 | 22 | 1.7 | 0.2 | 0 | 0 | 1 | 3 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | |||||
| Champions Lg (1 Season) | 1 | 22 | 22 | 4.1 | 0.2 | 0 | 0 | 1 | 0 | 1.75 | 0 | 2 | -2 | -8.18 | -6.62 | |||||||
| Europa Lg (1 Season) | 0 | 0 | 0 | 0 | 3 | |||||||||||||||||
| Performance | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 0.8 | 0 | 0 | 0 | ||||||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 2.5 | 0 | 0 | Matches | ||||||||||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 2.0 | 1 | 0 | 3 | Matches | |||||||||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1.0 | 1 | 0 | 1 | Matches | |||||||||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 6.7 | 2 | 0 | 0 | 0 | Matches | ||||||||
| 2016-2017 | 20 | Celtic | 1. Champions Lg | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | Matches | |
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1.8 | 0 | 0 | 2 | Matches | |||||||||
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 1.0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 11.1 | 2 | 3 | 1 | 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 1.3 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 19.1 | 4 | 0 | 0 | 0 | Matches | ||||||||
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 1.0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 6.0 | 0 | 0 | 0 | 3 | 2 | 0 | 2 | 5 | 2 | 1 | Matches | ||
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 29.6 | 4 | 0 | 0 | 18 | 16 | 0 | 2 | 34 | 19 | 0 | 0 | 2 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 2.0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 1 | 0 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 37.7 | 8 | 0 | 0 | 34 | 24 | 1 | 11 | 42 | 23 | 1 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | 2.0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | 0 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3.0 | 0 | 0 | 0 | 1 | 2 | 0 | 2 | 2 | 1 | 0 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 45.0 | 10 | 0 | 0 | 40 | 25 | 0 | 3 | 53 | 38 | 0 | Matches | ||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | Matches | ||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 16.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 37 | 11 | 0 | Matches | ||
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 14.5 | 3 | 0 | 0 | 0 | Matches | ||||||||
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | 2.0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 4 | 0 | Matches | ||
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | Matches | ||
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 27.5 | 6 | 0 | 0 | 23 | 9 | 0 | 3 | 55 | 32 | 1 | Matches | ||
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | Matches | ||||||||
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 37.2 | 6 | 0 | 0 | 24 | 30 | 0 | 5 | 45 | 49 | 0 | Matches | ||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | 2.0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 5 | 0 | 0 | Matches | ||
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 22.7 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | Matches | ||
| 13 Seasons | 9 Clubs | 10 Leagues | 318.7 | 59 | 5 | 2 | 213 | 130 | 2 | 32 | 314 | 203 | 0 | 0 | 5 | |||
| Country | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Wrexham (4 Seasons) | 6 Leagues | 85.0 | 15 | 0 | 0 | 49 | 41 | 0 | 9 | 108 | 85 | 1 | ||||||
| Celtic (4 Seasons) | 3 Leagues | 6.3 | 1 | 0 | 0 | 3 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | ||||
| Rochdale (3 Seasons) | 4 Leagues | 127.2 | 25 | 0 | 0 | 99 | 70 | 1 | 21 | 141 | 84 | 0 | 0 | 4 | ||||
| Bury (2 Seasons) | 4 Leagues | 33.6 | 8 | 3 | 1 | 25 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | ||||
| Barnsley (1 Season) | 2 Leagues | 22.9 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | ||||||
| Charlton Athletic (1 Season) | 2 Leagues | 18.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 41 | 11 | 0 | ||||||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||||
| Cork City (1 Season) | 1 League | 6.7 | 2 | 0 | 0 | 0 | ||||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 1 | 0 | 3 | |||||||||||||
| League One (8 Seasons) | 173.3 | 28 | 5 | 2 | 135 | 87 | 2 | 19 | 179 | 121 | 0 | 0 | 3 | |||||
| FA Cup (8 Seasons) | 14.0 | 1 | 0 | 0 | 6 | 6 | 0 | 5 | 9 | 3 | 0 | 0 | 1 | |||||
| EFL Cup (7 Seasons) | 12.3 | 4 | 0 | 0 | 6 | 3 | 0 | 2 | 15 | 5 | 0 | 0 | 0 | |||||
| Premiership (4 Seasons) | 6.1 | 1 | 0 | 3 | ||||||||||||||
| League Two (3 Seasons) | 91.6 | 20 | 0 | 0 | 63 | 34 | 0 | 6 | 108 | 70 | 1 | |||||||
| National League (1 Season) | 14.5 | 3 | 0 | 0 | 0 | |||||||||||||
| Premier Division (1 Season) | 6.7 | 2 | 0 | 0 | 0 | |||||||||||||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | |||||
| Championship (1 Season) | ||||||||||||||||||
| Europa Lg (1 Season) | ||||||||||||||||||
| Performance | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2013-2014 | 17 | Celtic | 1 League | 0.8 | 0 | 0 | 0 | ||||||||||
| 2014-2015 | 18 | Celtic | 2 Leagues | 2.5 | 0 | 0 | |||||||||||
| 2015-2016 | 19 | Oldham Athletic | 1 League | 2.0 | 1 | 0 | 3 | ||||||||||
| 2015-2016 | 19 | Celtic | 1 League | 1.0 | 1 | 0 | 1 | ||||||||||
| 2016 | 20 | Cork City | 1 League | 6.7 | 2 | 0 | 0 | 0 | |||||||||
| 2016-2017 | 20 | Celtic | 2 Leagues | 2.0 | 0 | 0 | 0 | 2 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | |
| 2016-2017 | 20 | Walsall | 1 League | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 2017-2018 | 21 | Bury | 2 Leagues | 12.1 | 3 | 3 | 1 | 23 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
| 2018-2019 | 22 | Bury | 3 Leagues | 21.5 | 5 | 0 | 0 | 2 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |
| 2019-2020 | 23 | Rochdale | 3 Leagues | 36.6 | 5 | 0 | 0 | 22 | 18 | 0 | 4 | 39 | 21 | 0 | 0 | 3 | |
| 2020-2021 | 24 | Rochdale | 3 Leagues | 40.7 | 9 | 0 | 0 | 35 | 24 | 1 | 12 | 44 | 24 | 1 | |||
| 2021-2022 | 25 | Rochdale | 3 Leagues | 50.0 | 11 | 0 | 0 | 42 | 28 | 0 | 5 | 58 | 39 | 0 | |||
| 2022-2023 | 26 | Charlton Athletic | 2 Leagues | 18.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 41 | 11 | 0 | |||
| 2022-2023 | 26 | Wrexham | 1 League | 14.5 | 3 | 0 | 0 | 0 | |||||||||
| 2023-2024 | 27 | Wrexham | 3 Leagues | 30.3 | 6 | 0 | 0 | 24 | 10 | 0 | 3 | 58 | 36 | 1 | |||
| 2024-2025 | 28 | Wrexham | 2 Leagues | 38.2 | 6 | 0 | 0 | 24 | 30 | 0 | 5 | 45 | 49 | 0 | |||
| 2025-2026 | 29 | Wrexham | 2 Leagues | 2.0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 5 | 0 | 0 | |||
| 2025-2026 | 29 | Barnsley | 2 Leagues | 22.9 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | |||
| 13 Seasons | 9 Clubs | 10 Leagues | 318.7 | 59 | 5 | 2 | 213 | 130 | 2 | 32 | 314 | 203 | 0 | 0 | 5 | ||
| Comp | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Wrexham (4 Seasons) | 6 Leagues | 85.0 | 15 | 0 | 0 | 49 | 41 | 0 | 9 | 108 | 85 | 1 | |||||
| Celtic (4 Seasons) | 3 Leagues | 6.3 | 1 | 0 | 0 | 3 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | |||
| Rochdale (3 Seasons) | 4 Leagues | 127.2 | 25 | 0 | 0 | 99 | 70 | 1 | 21 | 141 | 84 | 0 | 0 | 4 | |||
| Bury (2 Seasons) | 4 Leagues | 33.6 | 8 | 3 | 1 | 25 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |||
| Barnsley (1 Season) | 2 Leagues | 22.9 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | |||||
| Charlton Athletic (1 Season) | 2 Leagues | 18.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 41 | 11 | 0 | |||||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| Cork City (1 Season) | 1 League | 6.7 | 2 | 0 | 0 | 0 | |||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 1 | 0 | 3 | ||||||||||||
| League One (8 Seasons) | 173.3 | 28 | 5 | 2 | 135 | 87 | 2 | 19 | 179 | 121 | 0 | 0 | 3 | ||||
| FA Cup (8 Seasons) | 14.0 | 1 | 0 | 0 | 6 | 6 | 0 | 5 | 9 | 3 | 0 | 0 | 1 | ||||
| EFL Cup (7 Seasons) | 12.3 | 4 | 0 | 0 | 6 | 3 | 0 | 2 | 15 | 5 | 0 | 0 | 0 | ||||
| Premiership (4 Seasons) | 6.1 | 1 | 0 | 3 | |||||||||||||
| League Two (3 Seasons) | 91.6 | 20 | 0 | 0 | 63 | 34 | 0 | 6 | 108 | 70 | 1 | ||||||
| National League (1 Season) | 14.5 | 3 | 0 | 0 | 0 | ||||||||||||
| Premier Division (1 Season) | 6.7 | 2 | 0 | 0 | 0 | ||||||||||||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | ||||
| Championship (1 Season) | |||||||||||||||||
| Europa Lg (1 Season) | |||||||||||||||||
| Performance | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2013-2014 | 17 | Celtic | sct SCO | 1. Premiership | 1st | 0.8 | 0 | 0 | 0 | ||||||||||
| 2014-2015 | 18 | Celtic | sct SCO | 1. Premiership | 1st | 2.5 | 0 | 0 | Matches | ||||||||||
| 2015-2016 | 19 | Oldham Athletic | eng ENG | 3. League One | 17th | 2.0 | 1 | 0 | 3 | Matches | |||||||||
| 2015-2016 | 19 | Celtic | sct SCO | 1. Premiership | 1st | 1.0 | 1 | 0 | 1 | Matches | |||||||||
| 2016 | 20 | Cork City | ie IRL | 1. Premier Division | 2nd | 6.7 | 2 | 0 | 0 | 0 | Matches | ||||||||
| 2016-2017 | 20 | Celtic | sct SCO | 1. Premiership | 1st | 1.8 | 0 | 0 | 2 | Matches | |||||||||
| 2016-2017 | 20 | Walsall | eng ENG | 3. League One | 14th | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2017-2018 | 21 | Bury | eng ENG | 3. League One | 24th | 11.1 | 2 | 3 | 1 | 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | 4. League Two | 2nd | 19.1 | 4 | 0 | 0 | 0 | Matches | ||||||||
| 2019-2020 | 23 | Rochdale | eng ENG | 3. League One | 18th | 29.6 | 4 | 0 | 0 | 18 | 16 | 0 | 2 | 34 | 19 | 0 | 0 | 2 | Matches |
| 2020-2021 | 24 | Rochdale | eng ENG | 3. League One | 21st | 37.7 | 8 | 0 | 0 | 34 | 24 | 1 | 11 | 42 | 23 | 1 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | 4. League Two | 18th | 45.0 | 10 | 0 | 0 | 40 | 25 | 0 | 3 | 53 | 38 | 0 | Matches | ||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | 3. League One | 10th | 16.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 37 | 11 | 0 | Matches | ||
| 2022-2023 | 26 | Wrexham | eng ENG | 5. National League | 1st | 14.5 | 3 | 0 | 0 | 0 | Matches | ||||||||
| 2023-2024 | 27 | Wrexham | eng ENG | 4. League Two | 2nd | 27.5 | 6 | 0 | 0 | 23 | 9 | 0 | 3 | 55 | 32 | 1 | Matches | ||
| 2024-2025 | 28 | Wrexham | eng ENG | 3. League One | 2nd | 37.2 | 6 | 0 | 0 | 24 | 30 | 0 | 5 | 45 | 49 | 0 | Matches | ||
| 2025-2026 | 29 | Barnsley | eng ENG | 3. League One | 15th | 22.7 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | Matches | ||
| 13 Seasons | 9 Clubs | 6 Leagues | 292.2 | 54 | 5 | 2 | 201 | 121 | 2 | 25 | 287 | 191 | 0 | 0 | 4 | ||||
| Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Wrexham (4 Seasons) | 4 Leagues | 79.2 | 15 | 0 | 0 | 47 | 39 | 0 | 8 | 100 | 81 | 1 | |||||||
| Celtic (4 Seasons) | 1 League | 6.1 | 1 | 0 | 3 | ||||||||||||||
| Rochdale (3 Seasons) | 2 Leagues | 112.2 | 22 | 0 | 0 | 92 | 65 | 1 | 16 | 129 | 80 | 0 | 0 | 3 | |||||
| Bury (2 Seasons) | 2 Leagues | 30.2 | 6 | 3 | 1 | 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| Barnsley (1 Season) | 1 League | 22.7 | 4 | 0 | 0 | 13 | 6 | 1 | 1 | 21 | 19 | 0 | |||||||
| Charlton Athletic (1 Season) | 1 League | 16.8 | 2 | 0 | 0 | 10 | 11 | 0 | 0 | 37 | 11 | 0 | |||||||
| Walsall (1 Season) | 1 League | 16.2 | 1 | 2 | 1 | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||
| Cork City (1 Season) | 1 League | 6.7 | 2 | 0 | 0 | 0 | |||||||||||||
| Oldham Athletic (1 Season) | 1 League | 2.0 | 1 | 0 | 3 | ||||||||||||||
| League One (8 Seasons) | 173.3 | 28 | 5 | 2 | 135 | 87 | 2 | 19 | 179 | 121 | 0 | 0 | 3 | ||||||
| Premiership (4 Seasons) | 6.1 | 1 | 0 | 3 | |||||||||||||||
| League Two (3 Seasons) | 91.6 | 20 | 0 | 0 | 63 | 34 | 0 | 6 | 108 | 70 | 1 | ||||||||
| National League (1 Season) | 14.5 | 3 | 0 | 0 | 0 | ||||||||||||||
| Premier Division (1 Season) | 6.7 | 2 | 0 | 0 | 0 | ||||||||||||||
| Championship (1 Season) | |||||||||||||||||||
| Performance | |||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2017-2018 | 21 | Bury | eng ENG | FA Cup | 85th | 1.0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2018-2019 | 22 | Bury | eng ENG | EFL Cup | 58th | 1.3 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2018-2019 | 22 | Bury | eng ENG | FA Cup | 65th | 1.0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches |
| 2019-2020 | 23 | Rochdale | eng ENG | EFL Cup | 17th | 1.0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | ||
| 2019-2020 | 23 | Rochdale | eng ENG | FA Cup | 33rd | 6.0 | 0 | 0 | 0 | 3 | 2 | 0 | 2 | 5 | 2 | 1 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | EFL Cup | 33rd | 2.0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 2 | 1 | 0 | Matches | ||
| 2020-2021 | 24 | Rochdale | eng ENG | FA Cup | 85th | 1.0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | EFL Cup | Rd3 | 2.0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 3 | 0 | 0 | Matches | ||
| 2021-2022 | 25 | Rochdale | eng ENG | FA Cup | 3.0 | 0 | 0 | 0 | 1 | 2 | 0 | 2 | 2 | 1 | 0 | Matches | |||
| 2022-2023 | 26 | Charlton Athletic | eng ENG | EFL Cup | QF | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | Matches | ||
| 2023-2024 | 27 | Wrexham | eng ENG | EFL Cup | Rd2 | 2.0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 4 | 0 | Matches | ||
| 2023-2024 | 27 | Wrexham | eng ENG | FA Cup | 0.8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | Matches | |||
| 2024-2025 | 28 | Wrexham | eng ENG | FA Cup | 1.0 | 0 | 0 | 0 | 0 | Matches | |||||||||
| 2025-2026 | 29 | Wrexham | eng ENG | EFL Cup | Rd4 | 2.0 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 5 | 0 | 0 | Matches | ||
| 2025-2026 | 29 | Barnsley | eng ENG | FA Cup | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Matches | |||
| 9 Seasons | 5 Clubs | 2 Leagues | 26.3 | 5 | 0 | 0 | 12 | 9 | 0 | 7 | 24 | 8 | 0 | 0 | 1 | ||||
| Country | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches | |||
| Rochdale (3 Seasons) | 2 Leagues | 15.0 | 3 | 0 | 0 | 7 | 5 | 0 | 5 | 12 | 4 | 1 | |||||||
| Wrexham (3 Seasons) | 2 Leagues | 5.8 | 0 | 0 | 0 | 2 | 2 | 0 | 1 | 8 | 4 | 0 | |||||||
| Bury (2 Seasons) | 2 Leagues | 3.3 | 2 | 0 | 0 | 3 | 2 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | |||||
| Charlton Athletic (1 Season) | 1 League | 2.0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 4 | 0 | 0 | |||||||
| Barnsley (1 Season) | 1 League | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||
| FA Cup (8 Seasons) | 14.0 | 1 | 0 | 0 | 6 | 6 | 0 | 5 | 9 | 3 | 0 | 0 | 1 | ||||||
| EFL Cup (7 Seasons) | 12.3 | 4 | 0 | 0 | 6 | 3 | 0 | 2 | 15 | 5 | 0 | 0 | 0 | ||||||
| Performance | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Season | Age | Squad | Comp | LgRank | 90s | CrdY | CrdR | 2CrdY | Fls | Fld | Off | Crs | Int | TklW | PKwon | PKcon | OG | Matches |
| 2016-2017 | 20 | Celtic | 1. Champions Lg | GR | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | Matches |
| 2 Seasons | 1 Club | 2 Leagues | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | |||
| Champions Lg (1 Season) | 0.2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3 | 4 | 0 | 0 | 0 | |||||
| Europa Lg (1 Season) | ||||||||||||||||||
About FBref.com
FBref.com launched (June 13, 2018) with domestic league coverage for England, France, Germany, Italy, Spain, and United States. Since then we have been steadily expanding our coverage to include domestic leagues from over 40 countries as well as domestic cup, super cup and youth leagues from top European countries. We have also added coverage for major international cups such as the UEFA Champions League and Copa Libertadores.
FBref is the most complete sources for women's football data on the internet. This includes the entire history of the FIFA Women's World Cup as well as recent domestic league seasons from nine countries.
Note that player records are likely not complete for their careers. Players may come from or move to leagues we don't currently cover. This issue will go down over time, as we add new leagues and seasons.
You can sign up to receive an e-mail when new countries and features launch.
For more information, see our Launch Blog Post, the overall leagues/competition page with details on leagues and seasons we include, or our About Page. Let us know if you find an issue or have a suggestion.
FBref is one of seven Sports-Reference.com sites.

Player Club Summary