Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Chesterfield | 2022/23 – 2026/27 | 120 | 41 | 6 |
| MK Dons | 2014/15 – 2022/23 | 118 | 37 | 3 |
| Sunderland | 2018/19 – 2022/23 | 62 | 8 | 6 |
| Rotherham | 2021/22 | 28 | 6 | 2 |
| Northern Ireland | 2012 – 2020 | 13 | 2 | — |
| Wigan | 2015/16 – 2018/19 | 151 | 65 | 3 |
| Northern Ireland U21 | 2011 – 2013 | 8 | 1 | — |
| Brentford | 2013/14 | 36 | 5 | — |
| Walsall | 2008/09 – 2012/13 | 109 | 28 | — |
| Northern Ireland U19 | 2010 | 6 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 22 Jun 2023 | Milton Keynes Dons | Chesterfield | — |
| 14 Jul 2022 | Sunderland | Milton Keynes Dons | Free |
| 1 Jun 2022 | Rotherham | Sunderland | — |
| 31 Aug 2021 | Sunderland | Rotherham | Loan |
| 1 Jun 2021 | Milton Keynes Dons | Sunderland | — |
| 1 Feb 2021 | Sunderland | Milton Keynes Dons | Loan |
| 31 Jan 2019 | Wigan | Sunderland | € 4.6M |
| 14 Jul 2015 | Brentford | Wigan | — |
| 1 Jun 2015 | Milton Keynes Dons | Brentford | — |
| 18 Jul 2014 | Brentford | Milton Keynes Dons | Loan |
| 1 Jul 2013 | Walsall | Brentford | Free |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | EFL Trophy | Chesterfield | 1 | 0 | 25 | 0 | 0 | 0 | 0 | 6.52 |
| 2026/27 | League Two | Chesterfield | 2 | 0 | 15 | 0 | 0 | 0 | 0 | 6.29 |
| 2025/26 | League Cup | Chesterfield | 1 | 1 | 68 | 0 | 0 | 0 | 0 | 6.30 |
| 2025/26 | EFL Trophy | Chesterfield | 1 | 1 | 71 | 0 | 0 | 0 | 0 | 6.00 |
| 2025/26 | FA Cup | Chesterfield | 1 | 0 | 16 | 0 | 0 | 0 | 0 | 6.30 |
| 2025/26 | League Two | Chesterfield | 34 | 12 | 1141 | 4 | 3 | 1 | 0 | 6.47 |
| 2024/25 | League Two | Chesterfield | 32 | 29 | 1876 | 12 | 3 | 3 | 0 | 6.89 |
| 2024/25 | FA Cup | Chesterfield | 3 | 1 | 51 | — | 0 | 1 | 0 | 6.70 |
| 2024/25 | EFL Trophy | Chesterfield | 3 | 0 | 51 | 0 | 0 | 1 | 0 | 6.70 |
| 2023/24 | National League | Chesterfield | 38 | 32 | 2766 | 24 | — | 3 | 0 | — |
| 2023/24 | FA Cup | Chesterfield | 4 | 3 | 259 | 1 | — | 0 | 0 | — |
| 2022/23 | League One | MK Dons | 42 | 18 | 1599 | 5 | — | 2 | 0 | 6.54 |
| 2022/23 | League Cup | MK Dons | 2 | 2 | 128 | 0 | — | 0 | 0 | 6.30 |
| 2022/23 | EFL Trophy | MK Dons | 2 | 1 | 96 | 1 | — | 0 | 0 | 6.60 |
| 2022/23 | FA Cup | MK Dons | 2 | 1 | 68 | 1 | — | 0 | 0 | — |
| 2021/22 | League One | Rotherham | 19 | 13 | 936 | 2 | — | 0 | 0 | 6.58 |
| 2021/22 | EFL Trophy | Rotherham | 6 | 5 | 359 | 3 | 2 | 0 | 0 | 7.03 |
| 2021/22 | FA Cup | Rotherham | 3 | 2 | 170 | 1 | — | 0 | 0 | 7.20 |
| 2021/22 | League Cup | Sunderland | 1 | 0 | 25 | 0 | — | 0 | 0 | 6.20 |
| 2020/21 | League One | MK Dons | 20 | 14 | 1226 | 8 | 3 | 0 | 0 | 6.88 |
| 2020/21 | League Cup | Sunderland | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2020/21 | FA Cup | Sunderland | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2020/21 | EFL Trophy | Sunderland | 1 | 1 | 64 | 0 | — | 0 | 0 | 6.20 |
| 2020/21 | League One | Sunderland | 9 | 4 | 375 | 0 | 3 | 0 | 0 | 6.88 |
| 2019/20 | League One | Sunderland | 20 | 8 | 903 | 1 | 1 | 0 | 0 | 6.57 |
| 2019/20 | FA Cup | Sunderland | 2 | 2 | 179 | 0 | — | 0 | 0 | — |
| 2019/20 | League Cup | Sunderland | 3 | 2 | 181 | 1 | — | 0 | 0 | 6.60 |
| 2019/20 | EFL Trophy | Sunderland | 2 | 1 | 106 | 1 | — | 0 | 0 | — |
| 2018/19 | League One | Sunderland | 20 | 15 | 1296 | 4 | — | 1 | 0 | 6.30 |
| 2018/19 | Championship | Wigan | 17 | 10 | 895 | 4 | 1 | 2 | 0 | 6.75 |
| 2018/19 | EFL Trophy | Sunderland | 2 | 2 | 167 | 1 | — | 0 | 0 | — |
| 2018/19 | FA Cup | Wigan | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.80 |
| 2018 | UEFA Nations League | Northern Ireland | 2 | 0 | 32 | 1 | — | 0 | 0 | — |
| 2018 | World Cup - Qualification Europe | Northern Ireland | 1 | 0 | 28 | 0 | — | 0 | 0 | — |
| 2018 | Friendlies | Northern Ireland | 1 | 1 | 65 | 0 | — | 0 | 0 | — |
| 2017/18 | League One | Wigan | 43 | 29 | 2449 | 19 | — | 1 | 0 | — |
| 2017/18 | FA Cup | Wigan | 8 | 6 | 517 | 7 | — | 1 | 0 | 7.25 |
| 2017/18 | League Cup | Wigan | 2 | 2 | 139 | 0 | — | 0 | 0 | — |
| 2016/17 | Championship | Wigan | 33 | 24 | 2172 | 5 | 2 | 3 | 0 | 6.65 |
| 2016/17 | League Cup | Wigan | 1 | 1 | 70 | 1 | — | 0 | 0 | — |
| 2016/17 | FA Cup | Wigan | 2 | 2 | 159 | 1 | — | 0 | 0 | 6.50 |
| 2016/17 | Club Friendlies | Wigan | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2016 | Friendlies | Northern Ireland | 2 | 0 | 51 | 1 | — | 0 | 0 | — |
| 2015/16 | League One | Wigan | 40 | 35 | 3092 | 25 | — | 2 | 0 | — |
| 2015/16 | League Cup | Wigan | 1 | 1 | 78 | 1 | — | 0 | 0 | — |
| 2015/16 | EFL Trophy | Wigan | 1 | 1 | 90 | 2 | — | 0 | 0 | — |
| 2015/16 | FA Cup | Wigan | 1 | 1 | 46 | 0 | — | 0 | 0 | — |
| 2015 | Friendlies | Northern Ireland | 2 | 2 | 132 | 0 | — | 0 | 0 | — |
| 2014/15 | League One | MK Dons | 44 | 31 | 2804 | 20 | — | 5 | 0 | — |
| 2014/15 | League Cup | MK Dons | 3 | 1 | 109 | 2 | — | 0 | 0 | — |
| 2014/15 | FA Cup | MK Dons | 3 | 2 | 191 | 0 | — | 0 | 0 | — |
| 2014 | UEFA World Cup Qualifiers | Northern Ireland | 3 | 0 | 20 | 0 | — | 0 | 0 | — |
| 2013/14 | League One | Brentford | 34 | 16 | 1494 | 5 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Brentford | 2 | 1 | 128 | 0 | — | 0 | 0 | — |
| 2013 | UEFA U21 Championship | Northern Ireland U21 | 6 | 4 | 313 | 0 | — | 1 | 0 | — |
| 2013 | Friendlies | Northern Ireland | 1 | 1 | 86 | 0 | — | 0 | 0 | — |
| 2012/13 | League One | Walsall | 41 | 38 | 3387 | 19 | — | 1 | 0 | — |
| 2012/13 | EFL Trophy | Walsall | 1 | 1 | 84 | 1 | — | 0 | 0 | — |
| 2012/13 | League Cup | Walsall | 2 | 2 | 158 | 0 | — | 1 | 0 | — |
| 2012/13 | FA Cup | Walsall | 1 | 1 | 70 | 0 | — | 0 | 0 | — |
| 2012 | Friendlies | Northern Ireland | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2011/12 | League One | Walsall | 29 | 17 | 1498 | 4 | — | 0 | 0 | — |
| 2011/12 | FA Cup | Walsall | 3 | 2 | 162 | 0 | — | 0 | 0 | — |
| 2011/12 | EFL Trophy | Walsall | 1 | 1 | 62 | 0 | — | 0 | 0 | — |
| 2011 | UEFA U21 Championship | Northern Ireland U21 | 2 | 0 | 37 | 1 | — | 0 | 0 | — |
| 2010/11 | League One | Walsall | 28 | 8 | 1066 | 4 | — | 0 | 0 | — |
| 2010/11 | FA Cup | Walsall | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2010/11 | League Cup | Walsall | 1 | 0 | 25 | 0 | — | 0 | 0 | — |
| 2010 | UEFA U19 Championship | Northern Ireland U19 | 6 | 6 | 487 | 0 | — | 0 | 0 | — |
| 2008/09 | League One | Walsall | 1 | 0 | 0 | 0 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Calf Injury | 21 Dec 2024 | 20 Mar 2025 | 89 |
| Injury | 28 Mar 2025 | 30 Mar 2025 | 2 |
| Knock | 18 Sept 2018 | 27 Sept 2018 | 9 |
| Muscle Injury | 12 Oct 2018 | 22 Nov 2018 | 41 |
| Knee Injury | 15 Apr 2017 | 3 Aug 2017 | 110 |
| Ankle Injury | 19 Jan 2019 | 7 Feb 2019 | 19 |
Trophies
| Competition | Season | Place |
|---|---|---|
| League One (England) | 2017/2018 | Winner |
| League One (England) | 2015/2016 | Winner |
| League One (England) | 2021/2022 | 2nd Place |
| League One (England) | 2014/2015 | 2nd Place |
| League One (England) | 2013/2014 | 2nd Place |
| EFL Trophy (England) | 2021/2022 | Winner |
| EFL Trophy (England) | 2018/2019 | 2nd Place |
| National League (England) | 2023/2024 | Winner |
