| STRT | FC | FA | YC | RC | G | A | SHOT | SOG | OFF | |
|---|---|---|---|---|---|---|---|---|---|---|
| 2026-27 South African Premiership MSU | 9 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2025-26 South African Premiership MSU | 29 | 0 | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 2024-25 South African Premiership MSU | 17 | 1 | 4 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
| 2023-24 South African Premier Division MSU | 21 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 0 | 0 |
| CS | SV | GA | |
|---|---|---|---|
| 2026-27 South African Premiership MSU | 3 | 21 | 8 |
| 2025-26 South African Premiership MSU | 13 | 46 | 21 |
| 2024-25 South African Premiership MSU | 10 | 34 | 7 |
| 2023-24 South African Premier Division MSU | 15 | 0 | 7 |
Includes finals, playoffs and exhibition games, so totals run higher than regular-season figures.
| Season | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026 FIFA World CupSouth Africa | 4 | 0 | 0 | 0 | 0 | 360 | 0 | 0 | 11 | 4 | 0 | 0 | 0 | 0 | 4 | 0 |
| 2026 International FriendlySouth Africa | 2 | 0 | 0 | 0 | 0 | 135 | 0 | 0 | 2 | 2 | 0 | 0 | 0 | 0 | 1 | 0 |
| 2025 International FriendlySouth Africa | 1 | – | – | – | – | 45 | – | – | – | – | – | – | – | – | – | – |
| 2024 International FriendlySouth Africa | 1 | – | – | – | – | 90 | – | – | – | – | – | – | – | – | – | – |
| 2023 International FriendlySouth Africa | 1 | – | – | – | – | 90 | – | – | – | – | – | – | – | – | – | – |
| 2022 International FriendlySouth Africa | 4 | 0 | 0 | 0 | 0 | 349 | 0 | 0 | 17 | 4 | 0 | 0 | 0 | 0 | 7 | 30 |
| Career6 seasons | 13 | 0 | 0 | 0 | 0 | 1,069 | 0 | 0 | 30 | 10 | 0 | 0 | 0 | 0 | 12 | 30 |
| Game | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 29 June v CanadaL 0-1 29 June | 0 | 0 | 0 | 0 | 90 | 0 | 0 | 5 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 25 June v South KoreaW 1-0 25 June | 0 | 0 | 0 | 0 | 90 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
| 19 June @ CzechiaD 1-1 19 June | 0 | 0 | 0 | 0 | 90 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 12 June @ MexicoL 0-2 12 June | 0 | 0 | 0 | 0 | 90 | 0 | 0 | 2 | 1 | 0 | 0 | 0 | 0 | 2 | 0 |
| Split | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AwayHome or away · won 0 of 2 | 2 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.5 | 0.0 |
| HomeHome or away · won 1 of 2 | 2 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 3.5 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.5 | 0.0 |
| LossesResult | 2 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 3.5 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.5 | 0.0 |
| DrawsResult | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| WinsResult | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| Regular seasonStage · won 1 of 4 | 4 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.8 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| CanadaOpponent · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 5.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| CzechiaOpponent · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| MexicoOpponent · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 0.0 |
| South KoreaOpponent · won 1 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| Estadio Banorte, Mexico CityGround · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 2.0 | 0.0 |
| Estadio BBVA, GuadalupeGround · won 1 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |
| Mercedes-Benz Stadium, Atlanta, GeorgiaGround · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 2.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| SoFi Stadium, Inglewood, CaliforniaGround · won 0 of 1 | 1 | 0.0 | 0.0 | 0.0 | 0.0 | 90.0 | 0.0 | 0.0 | 5.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
Stats from official league and public sports feeds. Updated hourly.