Figlio di attori di teatro, esordisce sul palcoscenico a otto anni ne "Il Sempione strizza l'occhio al Frejus" di Elio Vittorini diretto da Italo Spinelli, per poi diventare protagonista per due stagioni dello spettacolo "Zio Mario", diretto da Mario Prosperi.
L'esordio al cinema arriva nel 2002 con Il pranzo della domenica di Carlo Vanzina, dove interpreta il figlio di Rocco Papaleo ed Elena Sofia Ricci, ma la vera notorietà la raggiunge solo nel 2007 con il ruolo di Cesare Schifani nella serie TV I liceali, per il quale gli viene assegnato il premio come personalità europea emergente dal Ministero del turismo.
Decide poi di continuare la sua formazione da attore al Centro Sperimentale di Cinematografia di Roma, per riprendere la carriera sul grande schermo solo nel 2012 con 100 metri dal paradiso di Raffaele Verzillo, La terra e il vento di Sebastian Maulucci, per il quale gli viene proposto il ruolo da protagonista, e Sotto una buona stella di Carlo Verdone, in cui interpreta il figlio dello stesso regista.
La svolta avviene nel 2014 con la produzione originale Netflix della serie TV Marco Polo dove viene scelto come protagonista accanto a Pierfrancesco Favino. Le due stagioni vengono distribuite prima sulla piattaforma USA per poi approdare in Italia nel 2015 e 2016. Il 2017 lo vede tornare a partecipare a grandi progetti cinematografici quali La ragazza nella nebbia di Donato Carrisi e Una questione privata di Paolo e Vittorio Taviani. Accanto a Matilda De Angelis ed Eugenio Franceschini è il protagonista di Una vita spericolata di Marco Ponti (2018) e poi è diretto da Jacopo Rondinelli in Ride.
Dopo il successo de I liceali, l'impegno nella televisione italiana è proseguito con piccole parti nella miniserie Sposami (2011) e I Borgia (2013), un ruolo in Una Ferrari per due (2014), film per la tv del ciclo Purché finisca bene.
Tra le ultime interpretazioni troviamo Una questione privata dei fratelli Taviani, Una vita spericolata, Il talento del calabrone, The Bunker Game e il film di Marco Martani Eravamo bambini.