| Season | Team |  |  |  |  |  |  |  |  |  |  | 
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2024-2025 |  Cape Town City (PSL) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2024-2025 |  Cape Town City (8 Cup) | 226 | 3 | 3 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2024-2025 |  Cape Town City (Premier Soccer League) | 1063 | 18 | 13 | 5 | 9 | 12 | 0 | 1 | 0 | 0 | 
| 2024-2025 |  Cape Town City (Cup) | 87 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2024 |  Cape Town City (League Cup) | 120 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2023-2024 |  Sekhukhune United (PSL) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2023-2024 |  Sekhukhune United (Premier Soccer League) | 2171 | 28 | 25 | 3 | 8 | 5 | 0 | 1 | 0 | 0 | 
| 2023-2024 |  Sekhukhune United (8 Cup) | 90 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2023-2024 |  Sekhukhune United (CAF Confederation Cup) | 246 | 3 | 3 | 0 | 2 | 3 | 0 | 0 | 0 | 0 | 
| 2023-2024 |  Sekhukhune United (Cup) | 120 | 2 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2023-2024 |  Cape Town City (Premier Soccer League) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2023 |  Sekhukhune United (League Cup) | 210 | 2 | 2 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 
| 2022-2023 |  Sekhukhune United (Premier Soccer League) | 651 | 9 | 8 | 1 | 2 | 4 | 0 | 2 | 0 | 0 | 
| 2022-2023 |  Sekhukhune United (Cup) | 402 | 5 | 4 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 
| 2022 |  FC Cincinnati (Major League Soccer) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2021 |  FC Cincinnati (Major League Soccer) | 457 | 13 | 4 | 9 | 4 | 26 | 0 | 1 | 0 | 0 | 
| 2020 |  FC Cincinnati (Major League Soccer) | 550 | 9 | 6 | 3 | 4 | 3 | 0 | 0 | 0 | 0 | 
| 2020 |  South Africa (Friendlies) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2019-2020 |  Brentford (Championship) | 1369 | 25 | 14 | 11 | 5 | 14 | 1 | 0 | 0 | 0 | 
| 2019-2020 |  Brentford (League Cup) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2019-2020 |  Brentford (FA Cup) | 46 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2019 |  South Africa (Africa Cup of Nations) | 366 | 5 | 4 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2019 |  South Africa (Friendlies) | 110 | 2 | 2 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 
| 2018-2019 |  Brentford (Championship) | 2202 | 34 | 24 | 10 | 9 | 13 | 3 | 0 | 0 | 0 | 
| 2018-2019 |  Brentford (League Cup) | 180 | 2 | 2 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 
| 2018-2019 |  Brentford (FA Cup) | 78 | 1 | 1 | 0 | 1 | 2 | 0 | 0 | 0 | 0 | 
| 2018 |  South Africa (WC Qualification Africa) | 228 | 4 | 2 | 2 | 0 | 5 | 0 | 0 | 0 | 0 | 
| 2018 |  South Africa (Friendlies) | 66 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 
| 2018 |  South Africa (World Cup - Qualification Africa) | 228 | 4 | 2 | 2 | 0 | 5 | 0 | 0 | 0 | 0 | 
| 2017-2018 |  Brentford (Championship) | 2185 | 35 | 25 | 10 | 13 | 20 | 1 | 0 | 0 | 0 | 
| 2017-2018 |  Brentford (League Cup) | 226 | 3 | 3 | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 
| 2017-2018 |  Brentford (FA Cup) | 63 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2017 |  South Africa (Friendlies) | 67 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 
| 2016-2017 |  Twente (Eredivisie) | 2831 | 33 | 32 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 
| 2016 |  South Africa (Friendlies) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2015-2016 |  Twente (Eredivisie) | 2784 | 31 | 31 | 0 | 1 | 0 | 1 | 3 | 0 | 0 | 
| 2015-2016 |  Twente (KNVB Beker) | 86 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2015 |  South Africa (Friendlies) | 181 | 3 | 2 | 1 | 1 | 2 | 0 | 0 | 0 | 0 | 
| 2014-2015 |  PEC Zwolle (Eredivisie) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2014-2015 |  Twente (Eredivisie) | 2874 | 33 | 32 | 1 | 5 | 1 | 1 | 4 | 0 | 0 | 
| 2014-2015 |  Twente (KNVB Beker) | 492 | 5 | 5 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 
| 2014-2015 |  Twente (UEFA Europa League) | 180 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2014 |  South Africa (WC Qualification Africa) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2014 |  South Africa (Friendlies) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2014 |  South Africa (CAF World Cup Qualifiers) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2013-2014 |  PEC Zwolle (Eredivisie) | 2314 | 27 | 27 | 0 | 4 | 0 | 2 | 1 | 0 | 0 | 
| 2013-2014 |  PEC Zwolle (KNVB Beker) | 496 | 6 | 6 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 
| 2013 |  South Africa (Friendlies) | 40 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2012-2013 |  Feyenoord (Eredivisie) | 0 | 1 | 0 | 1 | 0 | 15 | 0 | 1 | 0 | 0 | 
| 2012-2013 |  Feyenoord (KNVB Beker) | 0 | 0 | 0 | 0 | 0 | 3 | 0 | 0 | 0 | 0 | 
| 2012-2013 |  Feyenoord (UEFA Europa League) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2012-2013 |  Feyenoord (UEFA Champions League) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2012 |  South Africa (Friendlies) | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2011-2012 |  Feyenoord (Eredivisie) | 738 | 20 | 5 | 15 | 0 | 25 | 0 | 1 | 0 | 0 | 
| 2011-2012 |  Feyenoord (KNVB Beker) | 180 | 2 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2010-2011 |  Feyenoord (Eredivisie) | 1126 | 14 | 13 | 1 | 2 | 10 | 0 | 2 | 0 | 0 | 
| 2010-2011 |  Feyenoord (KNVB Beker) | 120 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2010-2011 |  Feyenoord (UEFA Europa League) | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 
| 2009-2010 |  Excelsior (Eerste Divisie) | 2087 | 25 | 23 | 2 | 3 | 0 | 1 | 1 | 0 | 0 | 
| 2009-2010 |  Excelsior (KNVB Beker) | 120 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 
| 2009 |  South Africa U20 (FIFA U20 World Cup) | 67 | 1 | 1 | 0 | 1 | 3 | 0 | 0 | 0 | 0 | 
| 2008-2009 |  Supersport United (PSL) | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |