Cresciuto nel Kumasi Corner Babies, nel 2016 si trasferisce al , con cui disputa due stagioni. Acquistato nel 2017 dal , il 13 luglio 2018 passa all'Udinese, legandosi al club friulano con un quadriennale. Ha esordito in Serie A con la maglia dell'Udinese il 26 agosto 2018 nella partita vinta contro la Sampdoria, sostituendo Valon Behrami nei minuti di recupero.