Ha iniziato la propria carriera al Nancy, club francese militante in Division 1. Ha debuttato con la maglia del club biancorosso il 29 maggio 1999, nell'incontro di campionato Sochaux-Nancy (1-1)[1], subentrando ad Abdelnasser Ouadah al minuto 82. Dopo la retrocessione del club in Division 2, ha ottenuto il posto da titolare. Ha militato nel club biancorosso per cinque stagioni, totalizzando 110 presenze e 18 reti. Nel 2003 si è trasferito al Bastia, club militante in Ligue 1. Il debutto con la nuova maglia è avvenuto il 2 agosto 2003, nell'incontro di campionato Paris Saint-Germain-Bastia (0-0)[2]. Ha militato nelle file del club blu per due stagioni, collezionando 13 reti in 68 presenze.
Rennes e Nancy
Nel 2005 è passato al Rennes[3]. Ha debuttato con la maglia del club rossonero è avvenuto il 27 agosto 2005, nell'incontro di campionato Nancy-Rennes (6-0)[4], subentrando ad Olivier Monterrubio al minuto 63. Il 15 settembre 2005 ha debuttato nelle competizioni europee, disputando l'incontro di Coppa UEFARennes-Osasuna (3-1)[5], gara in cui ha siglato la rete del definitivo 3-1 al minuto 84. Ha militato nelle file del club rossonero per una stagione e mezza, totalizzando 40 presenze e 4 reti. Il 10 gennaio 2007 è stato ufficializzato il suo ritorno al Nancy[6]. Il nuovo debutto con il club biancorosso è avvenuto il successivo 13 gennaio, nell'incontro di campionato Sedan-Nancy (2-2)[7]. Il debutto in Coppa UEFA, invece, è avvenuto il 14 febbraio 2007, nell'incontro Shakhtar Donetsk-Nancy (1-1)[8]. Ha militato nelle file del Nancy fino al 2011, collezionando un totale di 146 presenze e 39 reti. Il 31 agosto 2011 è tornato al Rennes[9][10], club in cui aveva militato fra il 2005 e il 2007. Il nuovo debutto con la maglia del club rossonero è avvenuto il successivo 10 settembre, nell'incontro di campionato Olympique Marsiglia-Rennes (0-1)[11]. Cinque giorni dopo ha debuttato in Europa League, disputando l'incontro Udinese-Rennes (2-1)[12], gara in cui ha siglato la rete del momentaneo 0-1 al minuto 18 del primo tempo. Ha militato nel club rossonero fino al 2012, totalizzando 8 reti in 33 incontri disputati.
Al-Arabi ed Elazığspor
Il 25 giugno 2012 è stato ufficializzato il suo trasferimento all'Al-Arabi[13], club qatariota. Il debutto con il club rosso è avvenuto il 23 settembre 2012, nell'incontro di campionato Al-Arabi-Al-Khor (1-1)[14]. Ha militato nel club qatariota per una stagione, totalizzando 3 presenze. Il 13 agosto 2013 è stato ufficializzato il suo trasferimento all'Elazığspor[15][16], club turco. Il debutto con la nuova maglia è avvenuto il 25 agosto 2013, nell'incontro di campionato Elazığspor-Kardemir (2-2)[17]. Ha militato nel club turco per una stagione, totalizzando 10 presenze. Il 19 febbraio 2014 ha rescisso il proprio contratto[18], rimanendo svincolato.
Ritorno al Nancy
Il 22 maggio 2014 è stato ingaggiato dal Nancy[19], tornando così per la terza volta nel club biancorosso. Ha debuttato con il club biancorosso il 1º agosto 2014, nell'incontro di campionato Nancy-Digione (1-1)[20]. Ha militato nel club biancorosso fino al 2018, totalizzando 37 reti in 129 incontri disputati. Il 10 maggio 2018 ha annunciato il ritiro dal calcio giocato al termine della stagione[21].