Au théâtre, depuis 1984, il joue de nombreux textes d’auteurs très divers sous la direction, entre autres, de Jacques Lassalle, Lucian Pintilié, Didier Bezace, David Géry, Stéphane Fiévet, Jean-Paul Tribout, Chantal Morel, Lazare Herson-Macarel, Philippe Adrien, Blandine Pélissier… En 2014, il écrit et met en scène In Heaven, everything is fine d’après divers récits de Dostoïevsky. Il tourne au cinéma principalement avec Bertrand Tavernier, Philippe Lioret, Bertrand Bonello, Louis-Julien Petit et Xavier Giannoli, ainsi que dans de nombreux courts-métrages avec Sandra Städeli, Coline Beal, Guillaume Senez, Annarita Zambrano... À la télévision, il travaille, entre autres, avec Marcel Bluwal, Jean-Pierre Marchand, Rébecca Zlotowski, Jean-Xavier de Lestrade, Moussa Touré... En 2009, il écrit, produit et réalise La Place Léon Blum, moyen-métrage anachronique. Très présent sur les ondes de France Culture, il enregistre également de nombreux livres-audio et prête sa voix à Daniel Craig, Mark Strong ou Willem Dafoe au cinéma.