Carriera 2012-2017: le stagioni da Juniores e Under-23 Nel 2012, al primo anno da Juniores, ottiene cinque vittorie di cui due a cronometro. Si piazza al secondo posto al Gran Premio Capodarco Juniores dietro Giulio Ciccone e al decimo posto al campionato italiano vinto da Umberto Orsini. L'anno successivo si classifica secondo al campionato italiano a cronometro vinto da Seid Lizde. Ottiene una vittoria nella prova Bracciale del Cronoman ad Alfonsine. Con la maglia della Nazionale viene selezionato per il Trofeo Karlsberg, in cui chiude undicesimo, e per il Giro della Lunigiana, nel quale però non ottiene piazzamenti di rilievo.
Nel 2014 passa tra gli Elite/Under-23 gareggiando per l'Area Zero Pro Team, neonata squadra con licenza continental, con cui in stagione ottiene un settimo posto al campionato italiano a cronometro. Nel biennio successivo indossa la maglia della Unieuro-Wilier Trevigiani. Il 25 luglio 2015 è medaglia d'argento al campionato italiano a cronometro di categoria; la settimana successiva partecipa al campionato europeo di Tartu, classificandosi decimo nella prova a cronometro Under-23. Nel 2016 è ancora secondo al campionato italiano a cronometro Under-23. Con la maglia della Nazionale partecipa alla Corsa della Pace, chiudendo al settimo posto, e al Tour de l'Avenir; è poi quinto al Gran Premio Capodarco vinto da Jai Hindley, e nuovamente "azzurro" per le prove Under-23 del campionato europeo, senza però ottenere risultati di rilievo.
Nel 2017 cambia squadra e corre per il Team Colpack, con cui ottiene cinque successi. Vince infatti la prima tappa e la classifica generale del Giro del Veneto e una tappa al Giro della Valle d'Aosta, in cui arriva quinto in generale, oltre a due prove in linea. Si piazza inoltre al nono posto al Trofeo Piva e al settimo al Giro del Medio Brenta, e a fine settembre conclude al diciottesimo posto la gara in linea Under-23 del campionato del mondo a Bergen.
Dal 2018: il professionismo Passa professionista nel 2018 con la Bardiani CSF, facendo il suo debutto alla Colombia Oro y Paz. Al primo anno di professionismo il risultato più significativo è il terzo posto nella settima tappa del Tour of Britain. Nella seconda stagione in Bardiani, partecipa per la prima volta al Giro d'Italia: si mette in luce nella sesta tappa, con arrivo a San Giovanni Rotondo, in quanto, dopo essere andato in fuga e aver terminato quinto all'arrivo, indossa la maglia bianca di miglior giovane e risale in seconda posizione in classifica generale, alle spalle di Valerio Conti.
Nel 2022 lascia la Bardiani CSF per vestire la maglia della russa Gazprom-RusVelo, ma in seguito alla sospensione subita dalla squadra e al conseguente svincolo, già a marzo rimane privo di contratto. Ciò nonostante, il 6 giugno ottiene la prima vittoria da professionista, aggiudicandosi, con la maglia della Nazionale italiana, la terza tappa della Adriatica Ionica Race a Brisighella. Nel mese di settembre viene quindi tesserato dal ProTeam spagnolo Kern Pharma.
Palmarès Strada 2012 (Juniores) Bracciale del Cronoman - Ponte San Giovanni (cronometro) Gran Premio Adalberto Gabrielloni Memorial Daniele Nardoni (cronometro) Coppa d'Oro Trofeo Balaco Paponi
2013 (Juniores) Bracciale del Cronoman - Alfonsine (cronometro)
2017 (Team Colpack) Astico-Brenta Classifica finale Giro del Veneto e delle Dolomiti 1ª tappa Giro del Veneto e delle Dolomiti (Puos d'Alpago > Pieve d'Alpago) 1ª tappa Giro della Valle d'Aosta (Quassolo > Quincinetto) Trofeo Mario Zanchi
2022 (Italia, una vittoria) 3ª tappa Adriatica Ionica Race (Ferrara > Brisighella)
2024 (JCL Team Ukyo, quattro vittorie) 3ª tappa Tour of Japan (Inabe > Inabe) 6ª tappa Tour of Japan (Oyama > Monte Fuji) Classifica generale Tour of Japan 2ª tappa Tour de Bulgarie (Trojan > Kazanlăk)
Altri successi 2015 (Unieuro Wilier) Classifica giovani Sibiu Cycling Tour
2025 (Unibet Tietema Rockets) Classifica scalatori International Tour of Hellas
Piazzamenti Grandi Giri Giro d'Italia 2019: 57º 2020: 82º 2021: 35º
Classiche monumento
Milano-Sanremo 2018: 98º 2019: 90º
Giro di Lombardia 2018: 46º 2019: 64º 2020: 50º 2021: ritirato
Competizioni mondiali
Campionati del mondo su strada Bergen 2017 - In linea Under-23: 18º
Campionati del mondo gravel Veneto 2023 - Elite: 18º
Competizioni europee Campionati europei Tartu 2015 - Cronometro Under-23: 10º Tartu 2015 - In linea Under-23: ritirato Plumelec 2016 - Cronometro Under-23: 16º Plumelec 2016 - In linea Under-23: 61º
Note
Altri progetti
Collegamenti esterni