 
          | Season | League | Team | A | G | Assists | Y/YR/R | MP | 
|---|---|---|---|---|---|---|---|
| 2024/2025 | National League |  Eastleigh | 29 | 0 | 1 | 2/0/0 | 269 | 
| 2023/2024 | FA Cup |  Eastleigh | 3 | 0 | 1 | 0/0/0 | 226 | 
| 2023/2024 | FA Trophy |  Eastleigh | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2023/2024 | National League |  Eastleigh | 32 | 0 | 1 | 4/0/0 | 2392 | 
| 2022/2023 | League Cup |  Partick Thistle | 1 | 0 | 0 | 0/0/0 | 67 | 
| 2022/2023 | League Cup |  Kilmarnock | 4 | 0 | 0 | 0/0/0 | 114 | 
| 2022/2023 | Premiership |  Kilmarnock | 0 | 0 | 0 | 0/0/0 | 0 | 
| 2022/2023 | Championship |  Partick Thistle | 23 | 1 | 0 | 2/0/0 | 1193 | 
| 2022/2023 | Challenge Cup |  Partick Thistle | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2022/2023 | Scottish Cup |  Partick Thistle | 3 | 0 | 0 | 0/0/0 | 179 | 
| 2022/2023 | Premiership Play-Offs |  Partick Thistle | 2 | 0 | 0 | 0/0/0 | 33 | 
| 2021/2022 | League Cup |  Kilmarnock | 0 | 0 | 0 | 0/0/0 | 0 | 
| 2021/2022 | Championship |  Kilmarnock | 18 | 0 | 0 | 2/0/0 | 1567 | 
| 2021/2022 | Challenge Cup |  Kilmarnock | 2 | 0 | 0 | 0/0/0 | 104 | 
| 2021/2022 | Scottish Cup |  Kilmarnock | 1 | 0 | 0 | 0/0/0 | 0 | 
| 2021 | Club Friendlies |  Kilmarnock | 0 | 0 | 0 | 0/0/0 | 0 | 
| 2021 | Club Friendlies |  Leyton Orient | 0 | 0 | 0 | 0/0/0 | 0 | 
| 2020/2021 | Premiership |  Hamilton Academical | 33 | 2 | 1 | 0/0/0 | 2831 | 
| 2020/2021 | League Cup |  Hamilton Academical | 2 | 0 | 0 | 0/0/0 | 180 | 
| 2020/2021 | Scottish Cup |  Hamilton Academical | 1 | 0 | 0 | 0/0/0 | 0 | 
| 2020/2021 | Premiership Play-Offs |  Kilmarnock | 0 | 0 | 0 | 0/0/0 | 0 | 
| 2019/2020 | EFL Trophy |  Gillingham | 3 | 0 | 0 | 0/0/0 | 270 | 
| 2019/2020 | League One |  Gillingham | 7 | 0 | 0 | 0/0/0 | 401 | 
| 2019/2020 | Premiership |  St. Mirren | 7 | 0 | 1 | 0/0/0 | 450 | 
| 2019/2020 | Carabao Cup |  Gillingham | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2019/2020 | Scottish Cup |  St. Mirren | 3 | 0 | 0 | 0/0/0 | 261 | 
| 2018/2019 | Scottish Cup |  St. Mirren | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2018/2019 | Premiership |  St. Mirren | 20 | 0 | 0 | 2/0/0 | 720 | 
| 2018/2019 | Premiership Play-Offs |  St. Mirren | 2 | 0 | 0 | 0/0/0 | 180 | 
| 2017/2018 | Premiership |  Rangers | 6 | 0 | 0 | 0/0/0 | 393 | 
| 2017/2018 | Linafoot |  Rangers | 5 | 0 | 0 | 0/0/0 | 371 | 
| 2017/2018 | First Division |  Rangers | 3 | 0 | 0 | 0/0/0 | 198 | 
| 2017/2018 | Scottish Cup |  Rangers | 1 | 0 | 0 | 0/0/0 | 90 | 
| 2017 | League Cup |  Rangers | 2 | 0 | 0 | 1/0/0 | 131 | 
| 2016/2017 | Premiership |  Rangers | 11 | 1 | 0 | 1/0/0 | 0 | 
| 2016/2017 | Scottish Cup |  Rangers | 2 | 0 | 0 | 0/0/0 | 97 | 
| 2015/2016 | Premiership Play-Offs |  Kilmarnock | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2015/2016 | Championship |  Milton Keynes Dons | 3 | 0 | 0 | 1/0/0 | 51 | 
| 2015/2016 | FA Cup |  Milton Keynes Dons | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2015/2016 | Carabao Cup |  Milton Keynes Dons | 3 | 0 | 0 | 0/0/0 | 0 | 
| 2015/2016 | Premiership |  Kilmarnock | 13 | 0 | 0 | 2/0/0 | 0 | 
| 2015/2016 | Scottish Cup |  Kilmarnock | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2014/2015 | League One |  Milton Keynes Dons | 14 | 1 | 1 | 1/0/0 | 1113 | 
| 2013/2014 | League One |  Milton Keynes Dons | 23 | 1 | 0 | 0/0/0 | 1856 | 
| 2013/2014 | FA Cup |  Milton Keynes Dons | 4 | 0 | 0 | 1/0/0 | 0 | 
| 2012/2013 | FA Cup |  Brentford | 3 | 0 | 1 | 0/0/0 | 0 | 
| 2012/2013 | League One |  Brentford | 14 | 0 | 0 | 0/0/0 | 756 | 
| 2012/2013 | Carabao Cup |  Watford | 2 | 0 | 0 | 0/0/0 | 0 | 
| 2012/2013 | Championship |  Watford | 2 | 0 | 0 | 0/0/0 | 91 | 
| 2011/2012 | Championship |  Watford | 20 | 0 | 0 | 1/0/0 | 1800 | 
| 2010/2011 | Championship |  Watford | 29 | 1 | 1 | 1/0/0 | 2317 | 
| 2009/2010 | Carabao Cup |  Watford | 2 | 0 | 0 | 1/0/0 | 0 | 
| 2009/2010 | Championship |  Watford | 31 | 0 | 2 | 1/0/0 | 2610 | 
| 2008/2009 | Championship |  Watford | 1 | 0 | 0 | 0/0/0 | 25 | 
| Total: | 400 | 7 | 10 | 23/0/0 | 23696 | 
| Season | League | Team | A | G | Assists | Y/YR/R | MP | 
|---|---|---|---|---|---|---|---|
| 2016 | European Championship |  Northern Ireland | 0 | 0 | 0 | 0/0/0 | 0 | 
| Total: | 0 | 0 | 0 | 0/0/0 | 0 | 
| From | To | Date | Amount | 
|---|---|---|---|
|  Eastleigh |  Kilmarnock | 01/07/2023 | Free | 
|  Kilmarnock |  Partick Thistle | 05/06/2023 | N/a | 
|  Kilmarnock |  Partick Thistle | 31/01/2023 | N/a | 
|  Kilmarnock |  Partick Thistle | 09/01/2023 | N/a | 
|  Kilmarnock |  Partick Thistle | 01/01/2023 | N/a | 
|  Partick Thistle |  Kilmarnock | 12/08/2022 | Loan | 
|  Kilmarnock |  Leyton Orient | 01/09/2021 | Free | 
|  Leyton Orient |  Gillingham | 16/07/2021 | N/a | 
|  Gillingham |  Hamilton Academical | 01/07/2021 | N/a | 
|  Hamilton Academical |  Gillingham | 10/08/2020 | Loan | 
|  St. Mirren |  Gillingham | 31/01/2020 | Loan | 
|  Gillingham |  Rangers | 01/07/2019 | Free | 
|  St. Mirren |  Rangers | 20/08/2018 | Loan | 
|  Rangers |  Milton Keynes Dons | 02/07/2016 | N/a | 
|  Milton Keynes Dons |  Kilmarnock | 01/07/2016 | N/a | 
|  Kilmarnock |  Milton Keynes Dons | 01/02/2016 | Loan | 
|  Milton Keynes Dons |  Watford | 21/07/2013 | Free | 
|  Watford |  Brentford | 21/05/2013 | N/a | 
|  Brentford |  Watford | 22/11/2012 | Loan |