Clubs
| Club | Seasons | Apps | Goals | Assists |
|---|---|---|---|---|
| Mansfield | 2026/27 | 10 | 5 | 2 |
| Preston | 2024/25 – 2025/26 | 86 | 11 | 7 |
| Sheffield Wed | 2022/23 – 2024/25 | 128 | 32 | 14 |
| Rotherham | 2017/18 – 2021/22 | 210 | 61 | 18 |
| Bury | 2017/18 – 2018/19 | 23 | 2 | — |
| Portsmouth | 2015/16 – 2017/18 | 37 | 10 | — |
| Northampton | 2016/17 | 14 | 2 | — |
| Swindon | 2013/14 – 2015/16 | 71 | 26 | — |
| Barnsley | 2015/16 | 13 | 0 | — |
| Wimbledon | 2013/14 | 25 | 10 | — |
| Charlton | 2011/12 – 2012/13 | 2 | 0 | — |
| Colchester | 2012/13 | 8 | 2 | — |
| Newport | 2012/13 | 10 | 4 | — |
| Darlington | 2009/10 – 2011/12 | 21 | 1 | — |
| Accrington | 2011/12 | 6 | 3 | — |
| Workington | 2010/11 | 5 | 0 | — |
Transfers
| Date | From | To | Type |
|---|---|---|---|
| 22 Jun 2022 | Rotherham | Sheffield Wednesday | — |
| 11 Jan 2018 | Bury | Rotherham | — |
| 31 Aug 2017 | Portsmouth | Bury | Free |
| 1 Jul 2017 | Northampton | Portsmouth | — |
| 31 Jan 2017 | Portsmouth | Northampton | Loan |
| 1 Jul 2016 | Swindon Town | Portsmouth | — |
| 1 Jun 2016 | Portsmouth | Swindon Town | — |
| 1 Feb 2016 | Swindon Town | Portsmouth | Loan |
| 4 Jan 2016 | Barnsley | Swindon Town | — |
| 1 Sept 2015 | Swindon Town | Barnsley | Loan |
| 23 Jan 2014 | Charlton | Swindon Town | — |
| 5 Nov 2012 | Charlton | Newport County | Loan |
| 18 Jan 2012 | Charlton | Accrington ST | Loan |
| 15 Jul 2025 | Sheffield Wednesday | Preston | Free agent |
| 22 Jul 2025 | Sheffield Wednesday | Preston | Free Transfer |
| 12 Jul 2026 | Preston | Mansfield Town | Free agent |
| 11 Jul 2026 | Preston | Mansfield Town | Free agent |
Season by season
| Season | Competition | Club | Apps | Starts | Min | Goals | Assists | Yellow | Red | Rating |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026/27 | League Cup | Mansfield | 1 | 0 | 16 | 0 | 0 | 0 | 0 | 6.60 |
| 2026/27 | League One | Mansfield | 9 | 9 | 728 | 5 | 2 | 1 | 0 | 7.13 |
| 2025/26 | League Cup | Preston | 2 | 0 | 87 | 0 | 0 | 0 | 0 | 6.20 |
| 2025/26 | FA Cup | Preston | 1 | 0 | 26 | 0 | 0 | 0 | 0 | 6.70 |
| 2025/26 | Championship | Preston | 37 | 13 | 1480 | 3 | 1 | 2 | 0 | 6.64 |
| 2024/25 | Championship | Sheffield Wed | 41 | 16 | 1830 | 8 | 4 | 3 | 0 | 6.95 |
| 2024/25 | League Cup | Sheffield Wed | 3 | 2 | 190 | 0 | 2 | 1 | 0 | 7.07 |
| 2024/25 | Championship | Preston | 43 | 30 | 1849 | 8 | 4 | 3 | 0 | 6.95 |
| 2024/25 | League Cup | Preston | 3 | 3 | 190 | — | 2 | 1 | 0 | 7.07 |
| 2023/24 | Championship | Sheffield Wed | 31 | 11 | 1217 | 4 | — | 2 | 0 | 6.58 |
| 2023/24 | League Cup | Sheffield Wed | 1 | 0 | 19 | 0 | — | 1 | 0 | 6.90 |
| 2023/24 | FA Cup | Sheffield Wed | 2 | 0 | 44 | 0 | — | 0 | 0 | 6.70 |
| 2022/23 | League One | Sheffield Wed | 43 | 38 | 3218 | 17 | 7 | 5 | 0 | 7.10 |
| 2022/23 | League Cup | Sheffield Wed | 1 | 0 | 34 | 0 | — | 0 | 0 | 6.90 |
| 2022/23 | EFL Trophy | Sheffield Wed | 1 | 1 | 46 | 1 | — | 0 | 0 | — |
| 2022/23 | FA Cup | Sheffield Wed | 5 | 2 | 251 | 2 | 1 | 0 | 0 | 6.70 |
| 2021/22 | League One | Rotherham | 45 | 45 | 4001 | 19 | 6 | 7 | 0 | 7.30 |
| 2021/22 | EFL Trophy | Rotherham | 6 | 3 | 370 | 5 | 1 | 0 | 0 | 7.40 |
| 2021/22 | League Cup | Rotherham | 1 | 0 | 30 | 0 | — | 0 | 0 | 6.20 |
| 2021/22 | FA Cup | Rotherham | 2 | 2 | 195 | 1 | — | 1 | 0 | 7.30 |
| 2020/21 | Championship | Rotherham | 44 | 34 | 3138 | 10 | 3 | 9 | 1 | 6.99 |
| 2020/21 | League Cup | Rotherham | 1 | 1 | 57 | 0 | — | 0 | 0 | 6.70 |
| 2020/21 | FA Cup | Rotherham | 1 | 1 | 77 | 0 | — | 0 | 0 | 6.70 |
| 2019/20 | League One | Rotherham | 34 | 26 | 2324 | 9 | 3 | 3 | 0 | 7.12 |
| 2019/20 | League Cup | Rotherham | 2 | 1 | 158 | 0 | 1 | 0 | 0 | 7.15 |
| 2019/20 | EFL Trophy | Rotherham | 2 | 1 | 126 | 0 | — | 1 | 0 | — |
| 2019/20 | FA Cup | Rotherham | 3 | 2 | 207 | 3 | — | 0 | 0 | 7.50 |
| 2018/19 | Championship | Rotherham | 45 | 44 | 3925 | 8 | 4 | 4 | 0 | 6.98 |
| 2018/19 | FA Cup | Rotherham | 1 | 1 | 90 | 0 | — | 0 | 0 | 6.70 |
| 2017/18 | League One | Rotherham | 23 | 21 | 1871 | 6 | — | 3 | 0 | 7.23 |
| 2017/18 | League One | Bury | 19 | 16 | 1470 | 1 | — | 1 | 0 | 7.23 |
| 2017/18 | EFL Trophy | Bury | 2 | 2 | 180 | 0 | — | 0 | 0 | — |
| 2017/18 | FA Cup | Bury | 2 | 2 | 180 | 1 | — | 2 | 0 | 7.20 |
| 2016/17 | League One | Northampton | 14 | 13 | 1077 | 2 | — | 2 | 0 | — |
| 2016/17 | League Two | Portsmouth | 18 | 14 | 1184 | 3 | — | 0 | 0 | — |
| 2016/17 | EFL Trophy | Portsmouth | 3 | 3 | 253 | 3 | — | 0 | 0 | — |
| 2015/16 | League Two | Portsmouth | 16 | 13 | 1143 | 4 | — | 2 | 0 | — |
| 2015/16 | League One | Barnsley | 13 | 4 | 422 | 0 | — | 0 | 0 | — |
| 2015/16 | League One | Swindon | 4 | 4 | 333 | 0 | — | 0 | 0 | — |
| 2014/15 | League One | Swindon | 43 | 35 | 3084 | 15 | — | 5 | 0 | — |
| 2014/15 | League Cup | Swindon | 2 | 2 | 210 | 2 | — | 0 | 0 | — |
| 2014/15 | EFL Trophy | Swindon | 1 | 0 | 35 | 1 | — | 0 | 0 | — |
| 2014/15 | FA Cup | Swindon | 1 | 0 | 34 | 0 | — | 0 | 0 | — |
| 2013/14 | League One | Swindon | 20 | 20 | 1751 | 8 | — | 4 | 0 | — |
| 2013/14 | League Two | Wimbledon | 23 | 23 | 2048 | 9 | — | 1 | 0 | — |
| 2013/14 | EFL Trophy | Wimbledon | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2013/14 | FA Cup | Wimbledon | 1 | 1 | 90 | 1 | — | 0 | 0 | — |
| 2012/13 | League One | Colchester | 8 | 3 | 345 | 2 | — | 0 | 0 | — |
| 2012/13 | National League | Newport | 9 | 9 | 719 | 4 | — | 0 | 0 | — |
| 2012/13 | FA Trophy | Newport | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2012/13 | League Cup | Charlton | 1 | 1 | 106 | 0 | — | 0 | 0 | — |
| 2011/12 | League Two | Accrington | 6 | 4 | 379 | 3 | — | 0 | 0 | — |
| 2011/12 | National League | Darlington | 1 | 0 | 20 | 0 | — | 0 | 0 | — |
| 2011/12 | FA Cup | Charlton | 1 | 0 | 2 | 0 | — | 0 | 0 | — |
| 2010/11 | National League N / S | Workington | 5 | 3 | 301 | 0 | — | 0 | 0 | — |
| 2010/11 | FA Trophy | Darlington | 1 | 1 | 90 | 0 | — | 0 | 0 | — |
| 2010/11 | National League | Darlington | 12 | 8 | 756 | 0 | — | 1 | 0 | — |
| 2009/10 | League Two | Darlington | 7 | 3 | 386 | 1 | — | 0 | 0 | — |
Availability history
| Reason | From | Until | Days |
|---|---|---|---|
| Knock | 11 Apr 2025 | 17 Apr 2025 | 6 |
| Muscle Injury | 5 Nov 2023 | 9 Dec 2023 | 34 |
Trophies
| Competition | Season | Place |
|---|---|---|
| FA Trophy (England) | 2010/2011 | Winner |
| League One (England) | 2011/2012 | Winner |
| League One (England) | 2021/2022 | 2nd Place |
| League One (England) | 2019/2020 | 2nd Place |
| EFL Trophy (England) | 2021/2022 | Winner |
