Cresciuto nelle giovanili dell'Armando Picchi, seconda squadra della sua città.
Nel 1979 passa alla Sampdoria, con cui debutta in Serie B il 10 maggio 1981 in occasione del derby contro il Genoa (1-1). Con i blucerchiati rimane fino al 1982, giocando in tutto 8 partite in cadetteria.
In seguito si trasferisce al Bologna, che però lo cede pochi mesi più tardi alla Lucchese, in Serie C2. La stagione seguente passa alla Rondinella Marzocco, in Serie C1, dove segna 9 reti, suo miglior bottino stagionale.
Dal 1984 torna a calcare i campi della Serie B, militando un anno nel Perugia, uno nel Catanzaro, due nel Bari e infine uno nell'Ancona. Nell'autunno 1989 fa ritorno alla Lucchese dove gioca la sua ultima annata fra i professionisti, in Serie C1, prima di passare per un ultimo anno alla Pistoiese nel Campionato Interregionale.
In carriera ha totalizzato 164 presenze e 17 reti in Serie B.
Allenatore
Una volta appese la scarpe al chiodo ha intrapreso la carriera di allenatore, iniziando come vice di Gianfranco Bellotto alla Pistoiese.
Nel luglio 2011 viene ingaggiato dal Rosignano Sei Rose, in Serie D[1], venendo esonerato nel successivo mese di dicembre[2].
Dal luglio 2012 viene nominato direttore tecnico del settore giovanile del Forcoli, società di Serie D[3]; dal successivo mese di novembre diventa allenatore della squadra[4].
Nell'estate 2014 torna a Livorno come tecnico degli Allievi Nazionali. Il 27 giugno 2015 passa ad allenare la formazione Primavera, dopo le dimissioni di Luciano Bruni.
Nel marzo 2022 sostituisce Paolo Stringara alla guida della Pro Livorno Sorgenti, in Serie D. Al termine della stagione, dopo non essere riuscito ad evitare la retrocessione nel torneo di Eccellenza,non viene confermato.