Ha disputato 2 incontri nel campionato di Serie A 1980-1981 con la maglia del Como, esordendo in massima serie il 28 dicembre 1980 in occasione del successo interno sul Cagliari.
Il suo nome è legato essenzialmente alla Ternana, con cui ha disputato dieci campionati (tre di Serie B, cinque di Serie C1 e due di Serie C2), risultando, con 312 incontri disputati,(incluse le coppe nazionali) il giocatore con più presente in campionato nella storia della Ternana, indossando la fascia da capitano nella squadra rossoverde dal 1985 al 1988, .[1].
In carriera ha totalizzato complessivamente 2 presenze in Serie A e 90 presenze in Serie B.
Allenatore
Dopo aver allenato per sette anni la formazione Primavera della Ternana, nel 2002 passa al Lecco, allenandolo fino al 2006.
Nella stagione 2012-2013 è stato allenatore in seconda del Lecco[2], con cui ha chiuso al quinto posto in classifica il campionato di Serie D, perdendo la finale playoff contro l'Olginatese.
Dal 28 luglio 2013 lavora come preparatore atletico al Lecco[3]. Il 21 novembre, a seguito delle dimissioni di Giuseppe Butti, riassume la guida tecnica della prima squadra del Lecco[4] fino all'arrivo di Rocco Cotroneoavvenuto a dicembre 2013. Torna in bluceleste nel corso dell'estate 2018, raccogliendo la proposta del nuovo allenatore Marco Gaburro: al termine della stagione i blucelesti conquistano la promozione dalla Serie D alla Serie C, vincendo il campionato il 31 marzo 2019 sul campo del Borgaro Nobis e chiudendo la stagione con 27 punti di vantaggio sulla Sanremese seconda. In Poule Scudetto il cammino si arresta solo in finale: nella finalissima di Perugia, disputata il 2 giugno 2019 allo stadio "Renato Curi", è l'Avellino a prevalere ai calci di rigore dopo l'1-1 dei tempi regolamentari.