Après un début de carrière en karting et un titre de champion de France, il remporte le championnat de France de Formule Ford en 1994, de Formule 3 en 1996 avant de devenir le premier Français à remporter le Grand Prix de Macao de Formule 3 l'année suivante. De 1997 à 2000, il participe au championnat international de Formule 3000 avec deux victoires et une cinquième place au championnat en 1998. Il participe en 1997 à des essais chez Williams F1.
En 2006, il s'engage dans le Championnat de France GT, et est champion de France en 2006 et 2007 sur Saleen.
À partir de 2003, il court dans le championnat Le Mans Series au volant des Pescarolo-Judd mais ne parvient pas à monter sur le podium des 24 Heures du Mans malgré quelques places d'honneur (4e en 2004 et 2010, 5e en 2009). De 2006 à 2010, il est pilote du Team Oreca avec lequel il a remporté aux côtés de Stéphane Ortelli le titre de Champion LMS GT1 en 2007 sur Saleen.
En 2011, il remporte deux titres: L'Intercontinental Le Mans Cup dans la catégorie LMP2 avec Franck Mailleux, Lucas Odonez et Jean Karl Vernay sur une SignaTech Oreca-Nissan et l'International GT Open avec le JMB Racing sur une Ferrari F 458 GT2.
En 2014 il participe aux 24 Heures du Mans auto qu'il termine à la 29e place en compagnie d'Anthony Pons et de Fabien Barthez, puis enchaîne les 24 Heures Moto en septembre de la même année. Avec ses équipiers Adrien Chareyre(it) et Bertrand Gold, il se classe alors troisième de la catégorie Open et 31e au scratch.
Il compte douze participations aux 24 H du Mans: 1997 et 1999 - Oreca Viper, 2003 à 2005 - Pescarolo, 2007 à 2010 - Oreca Saleen et LMP1 - 2011 Oreca LMP2 Signatech Nissan - 2012 Pecom AF Corse Oreca LMP2 et 2013 ASP Ferrari 458 GT2. Ses meilleurs classements: Pole position et 2e (LMP2) en 2011, 3e (LMP2) en 2012, 4e en 2004 et 2010 (1ercatégorie Essence) et 5e en 2005.
Après une fin de carrière en GT3 et GT4 et quelques victoires entre 2015 et 2019, il est ensuite pilote de GT et Formule 1 Classique.