Carriera Buon velocista, nelle categorie giovanili vinse circa 80 competizioni, ed in particolare il titolo nazionale su strada nella categoria Esordienti e il titolo nazionale della cronometro a squadre nella categoria Juniores. Da dilettante ottenne 10 vittorie di cui alcune, nel 1997, di valore internazionale (Trofeo Alcide de Gasperi a Trento e Trofeo Papà Cervi a Reggio Emilia); sempre nel 1997 vestì la maglia della Nazionale partecipando al Campionato del mondo militari.
Passò professionista nel 1998 con il Team Polti diretto da Gianluigi Stanga, andando a svolgere prevalentemente mansioni di gregariato, con il compito di tirare le volate ai propri capitani. Nei primi due anni di carriera professionistica ottenne comunque tre vittorie, La Côte Picarde nel 1998 e una frazione al Regio-Tour e una allo Hessen-Rundfahrt nel 1999, oltre a numerosi piazzamenti top 10 specialmente in tappe di brevi corse a tappe; partecipò anche alla Vuelta a España 1998.
Nel 2000 passò al Team Colpack di Antonio Bevilacqua, poi nel 2001 alla Alexia/Index diretta da Giovanni Fidanza; proprio in maglia Index nel 2002 affiancò durante il Giro d'Italia il capitano Paolo Savoldelli, seriano come lui e vincitore di quella "Corsa rosa". La sua caratteristica di velocista gregario lo portò in quegli anni a essere selezionato anche per diverse prove di Coppa del mondo, tra cui Milano-Sanremo, Parigi-Roubaix, Amstel Gold Race, Classica di San Sebastián, Classica di Amburgo, Campionato di Zurigo e Giro di Lombardia.
Concluse la carriera a fine 2004, dopo una stagione all'Amore & Vita (in cui vinse una tappa alla Wyścig Solidarności i Olimpijczyków) e una alla Vini Caldirola, e sette anni nel mondo professionistico.
Palmarès 1996 (L'Edile Gaverina, Dilettanti) Trofeo Antonietto Rancilio
1997 (Team Colpack-Polti, Dilettanti / Team Polti, una vittoria) Trofeo Papà Cervi Memorial Luciano Pasinetti Trofeo Alcide De Gasperi 4ª tappa Tour de Hokkaido (Takikawa > Takikawa, cronometro)
1998 (Team Polti, una vittoria) La Côte Picarde
1999 (Team Polti, due vittorie) 3ª tappa, 1ª semitappa Regio-Tour (Lahr > Bahlingen) 6ª tappa Hessen-Rundfahrt (Allendorf > Wiesbaden)
2003 (Amore & Vita-Beretta, una vittoria) 1ª tappa Wyścig Solidarności i Olimpijczyków (Rybnik > Rybnik)
Altri successi 1998 (Team Polti) Classifica sprint Tour du Limousin
1999 (Team Polti) Classifica a punti Regio-Tour
Piazzamenti Grandi Giri
Giro d'Italia 2002: ritirato (16ª tappa)
Vuelta a España 1998: ritirato (11ª tappa)
Classiche monumento
Milano-Sanremo 2002: 14º 2004: 152º
Giro delle Fiandre 1999: ritirato
Parigi-Roubaix 1999: ritirato 2002: ritirato
Giro di Lombardia 1999: ritirato 2001: ritirato 2002: ritirato
Collegamenti esterni