Il suo repertorio spazia dal ’700 al ’900 ed ha interpretato i ruoli principali di autori fra i quali Traetta (Le serve rivali ed Il cavaliere errante), Rossini (L’Italiana in Algeri, La scala di seta, La Cenerentola, La cambiale di matrimonio, Il signor Bruschino), Donizetti (L’elisir d’amore, Don Pasquale, Il campanello, Le convenienze e le inconvenienze teatrali, Lucia di Lammermoor), Mozart (Così fan tutte, Le nozze di Figaro, Don Giovanni), Verdi (La traviata, Falstaff, Giovanna d’Arco, Stiffelio, Luisa Miller, I due Foscari), Puccini (La bohème, Madama Butterfly) ed autori moderni (Il cappello di paglia di Firenze di N. Rota; Il piccolo spazzacamino di B. Britten, Carmina burana di K. Orff).
Si è esibito in numerosi teatri italiani (Bari, Como, Bergamo, Cremona, Pavia, Lecce, Roma, Fermo, Ferrara, Brescia, Jesi, Novara) ed esteri (Losanna, Ginevra, Berna, Biel, Lima, Santacruz di Tenerife, Bregenz, Strasburgo, Lisbona, Porto, Liverpool, Bergen, Canterbury, Tokio, Osaka, Nagoya, Palma di Maiorca).
Ha collaborato con direttori d’orchestra come Aprea, Martin, Rovaris, Carminati, Pidò, Andretta, Franci, Bonynge e con registi come Zeffirelli, Mariani, Crivelli, Maestrini, Vizioli, Nichetti.
Ha al suo attivo le incisioni discografiche de Le serve rivali di Tommaso Traetta, La serva padrona di G.B. Pergolesi e La frascatana di Giovanni Paisiello per la Bongiovanni.
Fra gli impegni del 2007 da segnalare una produzione di La traviata di G. Verdi (Giorgio Germont) allo Stadt Theater di Berna (marzo-aprile), La finta semplice di Mozart (Cassandro) a Ginevra (luglio) e I due Foscari di G. Verdi (Francesco Foscari ) allo Stadt Theater di Biel-Solothurn (ottobre-gennaio).
Nel 2008 ha interpretato il ruolo di Figaro in Il barbiere di Siviglia di Rossini a Firenze (Giardino di Boboli) ed attualmente è impegnato nel ruolo di Lord Enrico nella Lucia di Lammermoor di Donizetti a Bienne-Solothurn (CH).