| 19-10 | 18 | | Chrono des Nations U23 (1.2U) | 26.0km |
| 12-10 | 18 | | Paris - Tours Espoirs (1.2U) | 176.0km |
| 07-10 | 15 | | Coppa Citta' Di San Daniele (1.2) | 160.0km |
| 05-10 | DNF | | Coppa Agostoni (1.1) | 166.0km |
| 04-10 | 6 | | Il Lombardia Under 23 (1.2U) | 170.0km |
| 26-09 | 22 | | UCI World Championship Kigali U23 (CM) | 164.0km |
| 22-09 | 11 | | UCI World Championship Kigali TT U23 (CM) | 31.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 29-08 | 52 | 49 | Stage 6aLa Rosière Espace San Bernardo - La Rosière Espace San Bernardo (41.0km) | 41.0km |
| 29-08 | 41 | 50 | Stage 6bLa Rosière-Montvalezan - La Rosière-Montvalezan (10.0km) | 10.0km |
| 28-08 | 49 | 48 | Stage 5Saint-Gervais Mont-Blanc - Tignes (121.0km) | 121.0km |
| 27-08 | 36 | 41 | Stage 4Montagnat - Val Suran (110.0km) | 110.0km |
| 26-08 | 109 | 42 | Stage 3Étang-sur-Arroux - Châtillon-sur-Chalaronne (158.0km) | 158.0km |
| 25-08 | 36 | 44 | Stage 2Saint-Symphorien-sur-Coise - Vitry-en-Charollais (136.0km) | 136.0km |
| 24-08 | 56 | 34 | Stage 1Aoste - Saint-Galmier (188.0km) | 188.0km |
| 23-08 | 30 | 30 | PrologueTignes - Tignes (3.0km) | 3.0km |
| | | Tour Alsace (2.2) |
| 64 | | Klassement |
| 30 | | Punten |
| 45 | | Jongeren |
| 03-08 | 71 | 64 | Stage 5Ribeauville - Champ du Feu (135.0km) | 135.0km |
| 02-08 | 106 | 60 | Stage 4Ferrette - Altkirch (133.0km) | 133.0km |
| 01-08 | 55 | 55 | Stage 3Velleminfroy - La Planche des Belles Filles (141.0km) | 141.0km |
| 31-07 | 89 | 133 | Stage 2Rust (Europapark) - Selestat (168.0km) | 168.0km |
| 30-07 | 39 | 133 | Stage 1Sausheim - Sausheim (4.0km) | 4.0km |
| | | Giro Ciclistico della Valle d'Aosta - Mont Blanc (2.2U) |
| 18-07 | DNS | | Stage 3Pré-Saint-Didier - Colle del Gran San Bernardo (121.0km) | 121.0km |
| 16-07 | 9 | 9 | Stage 1Aosta - Aosta (85.0km) | 85.0km |
| 26-05 | 8 | | National Road Championships - USA (CN) | |
| 24-05 | 14 | | National Road Championships - USA U23 (CN) | |
| 21-05 | 1 | | National Road Championships - USA TT U23 (CN) | |
| | | Le Tour de Bretagne Cycliste (2.2) |
| 56 | | Klassement |
| 26 | | Punten |
| 4 | | Berg |
| 01-05 | 34 | 56 | Stage 7Landébia - Plancoët (159.0km) | 159.0km |
| 30-04 | 72 | 65 | Stage 6Missillac - Le Pertre (178.0km) | 178.0km |
| 29-04 | 80 | 60 | Stage 5Erdeven - Guenrouet (164.0km) | 164.0km |
| 28-04 | 18 | 16 | Stage 4Plonéour-Lanvern - Landévant (204.0km) | 204.0km |
| 27-04 | 72 | 10 | Stage 3Loudéac - Plonéour-Lanvern (212.0km) | 212.0km |
| 26-04 | 36 | 6 | Stage 2La Gouesnière - Le Cambout (182.0km) | 182.0km |
| 25-04 | 68 | 68 | Stage 1Hirel - La Fresnais (144.0km) | 144.0km |
| 13-04 | 42 | | Paris-Roubaix Espoirs (1.2U) | 167.0km |
| | | Olympia's Tour (2.2) |
| 60 | | Klassement |
| 29 | | Jongeren |
| 30-03 | 37 | 60 | Stage 5Neede - Tiel (185.0km) | 185.0km |
| 29-03 | 74 | 85 | Stage 4Zwolle - Zwolle (195.0km) | 195.0km |
| 28-03 | 58 | 73 | Stage 3Kerkdriel - Rossum (148.0km) | 148.0km |
| 27-03 | 83 | 80 | Stage 2Beek - Beek (175.0km) | 175.0km |
| 26-03 | 36 | 36 | Stage 1Beltrum - Beltrum (10.0km) | 10.0km |
| 21-03 | 48 | | Youngster Coast Challenge (1.2U) | 170.0km |
| | | Istrian Spring Tour (2.2) |
| 16-03 | DNS | | Stage 3Pazin - Umag (118.0km) | 118.0km |
| 15-03 | 68 | 66 | Stage 2Novigrad - Motovun (139.0km) | 139.0km |
| 14-03 | 88 | 43 | Stage 1Porec - Funtana (142.0km) | 142.0km |
| 13-03 | 53 | 53 | PrologueVrsar - Vrsar (1.0km) | 1.0km |
| 09-03 | 90 | | POREČ Classic (1.2) | 146.0km |