Dopo aver iniziato negli anni novanta la propria carriera nelle minimoto e poi con gli scooter, categoria nella quale si laurea per tre volte campione italiano,[1] nel 1998 si classifica ventiseiesimo nel campionato europeo Supersport. Esordisce nel mondiale Supersport nel 1999, correndo inizialmente con una Ducati 748 R del Team Ghelfi e passando poi a condurre una Suzuki GSX 600R del team Sacchi Corse; nell'annata coglie un unico risultato a punti, un nono posto in condizioni di bagnato all'A1-Ring che gli vale il 30º posto finale.
L'anno successivo passa a correre nel mondiale Superbike a bordo di una Ducati RS 996 del Team Pedercini, squadra con cui rimane anche nel 2001; in queste due stagioni riesce a portarsi in zona punti in diverse occasioni, finendo prima 32º e poi 30º in classifica, e nel secondo anno fa segnare un giro veloce al Lausitzring.
Nel 2002 cambia squadra passando al team Bertocchi, che porta in gara delle Kawasaki ZX-7RR, e migliora la sua posizione conclusiva, in questa stagione la 19ª. In questa stessa stagione e con la stessa motocicletta è terzo nel campionato italiano. Per il 2003 resta nello stesso team e ottiene il suo miglior risultato nella classifica finale, concludendo all'11º posto, ritirandosi solamente nella manche inaugurale a Valencia e tagliando il traguardo in zona punti nel resto delle gare, contestualmente è campione italiano Superbike. Nel 2004 con la stessa squadra finisce il campionato in 13ª piazza e coglie i propri migliori piazzamenti in gara con i sesti posti di Phillip Island e Oschersleben; in questa stagione inoltre si piazza tredicesimo nell'italiano Superbike. Nel 2005 rimane alla guida di moto Kawasaki, correndo però per il team PSG-1 Corse e giungendo al 19º posto finale. Nello stesso anno disputa l'evento conclusivo del CIV Superbike: con il sesto posto ottiene l'unico piazzamento a punti valido per Kawasaki in stagione.
Nel 2006 fa ritorno al mondiale Supersport gareggiando con una Yamaha YZF R6, prima con RG Team e in seguito con il team Bikersdays Moto 1, con cui ottiene anche un settimo posto a Brno, e raggiungendo la 19ª piazza finale. Nel 2007 corre come wild card i round del mondiale Superbike di Monza e Misano nuovamente con PSG-1 Corse, ottenendo due piazzamenti a punti per la 26ª posizione generale. Nel prosieguo della stagione trova spazio anche in Supersport come pilota sostitutivo con una Honda CBR600RR del team Intermoto Czech, con cui raccoglie un punto e la 40ª posizione finale. Sempre nel 2007 e sempre come wild card, prende parte al Gran Premio di Monza nel CIV Superbike classificandosi quarto, miglior piazzamento stagionale per Kawasaki.
Nel 2007 inizia la carriera di commentatore sportivo per le gare della MotoGP per La3, e nel 2008 anche per la Superbike.[2]
Dal 2009 al 2012 gli viene affidato il ruolo di commentatore tecnico per le gare del mondiale Superbike su LA7 al fianco di Luigi Vignando.[3]
Il 7 giugno 2009 viene eletto consigliere nel comune di Montecalvo in Foglia con una lista civica, restandolo fino al 2014.[4]
Dal 2014 diventa commentatore tecnico del Motomondiale per Sky Sport MotoGP, affiancando nelle telecronache di prove libere, qualifiche, warm-up delle classi Moto3, Moto2 e MotoGP Zoran Filicic (nel 2014 per Moto3, dal 2015 al 2018 per la MotoGp), Guido Meda nelle gare (dal 2016 per la classe MotoGP) e Rosario Triolo.