Cresciuto calcisticamente in patria, nel 2014 viene ingaggiato dal Cape Town All Stars. Dopo una stagione e mezza trascorse nella seconda divisione locale, all'inizio del 2016 viene acquistato dagli svedesi del Djurgården; il 19 aprile 2016 ha esordito in Allsvenskan, in occasione dell'incontro perso per 1-3 contro l'Hammarby. Conclude la stagione con 13 presenze e una rete tra campionato e coppa. Nelle successive due stagioni gioca in prestito con Degerfors e Brage, entrambe nella seconda divisione svedese. Nel 2018 viene ceduto in prestito al Farense, militante nella seconda divisione portoghese; al termine della stagione viene acquistato a titolo definitivo. Nel gennaio 2020 passa in prestito agli israeliani dello Bnei Yehuda. Rientrato alla base, non viene impiegato e nel gennaio 2021 viene prestato all'Académica, altro club della seconda divisione portoghese. Nel 2022 si trasferisce ai ciprioti dell'Arīs Limassol, con cui esordisce anche nelle competizioni UEFA per club.
Il 24 settembre 2022 ha esordito con la nazionale sudafricana, disputando l'amichevole vinta per 4-0 contro la Sierra Leone, in cui realizza anche il suo primo gol in nazionale.