Crebbe nel Cuoiopelli e nel 1966 approdò nella Fiorentina, ma non venne mai impiegato in prima squadra. La stagione successiva passa al Verona, società dove rimarrà per sei stagioni giocando per molte di queste in Serie A, in cui esordì il 29 settembre 1968 in Napoli-Verona 1-1. Con la squadra veneta disputa 4 annate ad alto livello, mentre nelle ultime due viene lasciato un po' al di sotto nelle gerarchie.
Nel 1973 lasciò la città scaligera per trasferirsi alla Roma, nell'ambito dell'operazione che porta Aldo Bet agli scaligeri. Esordisce il 1º ottobre 1973 in Roma-Bologna 2-1; nella capitale il difensore di origine pisana disputò tre stagioni con 69 presenze in campionato. Nell'estate del 1976, è uno di coloro che vengono sacrificati alla rivoluzione che tende a ricostruire una squadra giovane e che dovrebbe gettare le basi per un futuro più luminoso della società giallorossa.[2] Passa quindi al Cesena; concluse la carriera alla Spezia, in Serie C.
Durante la sua attività agonistica, non è riuscito a realizzare nessuna rete.