Ha iniziato la sua carriera nel Boulogne-Billancourt per poi passare nel 2014 al Paris FC dove ha trascorso il biennio 2015-2017. Successivamente è entrato a far parte delle giovanili del Le Havre,[2] dove nella primavera del 2018 è stato promosso nella seconda squadra con cui ha esordito disputando l'incontro di Championnat de France amateur vinto 2-1 contro il Lorient 2. Divenuto titolare a partire dalla stagione seguente, nel dicembre 2019 è stato promosso in prima squadra dal tecnico Paul Le Guen[3] ed il 10 gennaio seguente ha esordito in Ligue 2 disputando da titolare l'incontro vinto 1-0 contro il Niort.[4]
Il 30 giugno 2020 è stato acquistato a titolo definitivo dal Lens, con cui ha firmato un contratto triennale.[5]
Il 5 luglio 2021 viene acquistato dal Rennes per 16 milioni e mezzo di euro, con cui firma un quinquennale.[6][7]
Il 1º settembre 2022 viene acquistato a titolo temporaneo dal Nottingham Forest.[8] Dopo non avere trovato spazio tra le file degli inglesi,[9] nel dicembre dello stesso anno fa ritorno al Rennes e, il 1º gennaio 2023, viene ceduto nuovamente in prestito, stavolta al Siviglia.[10]
A fine stagione, conclusa con la vittoria dell'Europa League da parte degli andalusi[11] (e in cui lui ha segnato nel successo per 3-0 ai quarti contro il Manchester Utd),[12] viene riscattato dal club iberico.[13][14]