| 13-10 | DNS | | UCI World Championship Doha U23 (WC) | 166.0km |
| 09-10 | 96 | | Paris-Tours Espoirs (1.2U) | 180.0km |
| 01-10 | 36 | | 88°Piccolo Giro di Lombardia (1.2U) | |
| 25-09 | 4 | | Duo Normand (1.1) | 54.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 25-08 | DNF | | Stage 6Saint-Gervais Mont-Blanc - Tignes (123.0km) | 123.0km |
| 24-08 | 99 | 91 | Stage 5Scionzier - Les Carroz-d'Arâches (97.0km) | 97.0km |
| 23-08 | 23 | 26 | Stage 4Lugny - Lugny (16.0km) | 16.0km |
| 22-08 | 69 | 80 | Stage 3Bourg-en-Bresse - Autun (171.0km) | 171.0km |
| 21-08 | 112 | | Stage 2Montrond-les-Bains - Trévoux (156.0km) | 156.0km |
| 20-08 | 78 | 78 | Stage 1Le Puy-en-Velay - Veauche (139.0km) | 139.0km |
| | | Tour Alsace (2.2) |
| 2 | | Klassement |
| 7 | | Punten |
| 5 | | Berg |
| 31-07 | 38 | 2 | Stage 4Colmar - Selestat (149.0km) | 149.0km |
| 30-07 | 2 | 2 | Stage 3Ribeauville - Lac Blanc (157.0km) | 157.0km |
| 29-07 | 70 | 26 | Stage 2Altkirch - Huningue (151.0km) | 151.0km |
| 28-07 | 75 | 10 | Stage 1Velleminfroy - Dannemarie (171.0km) | 171.0km |
| 27-07 | 9 | 9 | PrologueSausheim - Sausheim (7.0km) | 7.0km |
| | | Giro Ciclistico della Valle d'Aosta Mont Blanc (2.2U) |
| 39 | | Klassement |
| 17-07 | 45 | 39 | Stage 5Valtournenche - Breuil-Cervinia (107.0km) | 107.0km |
| 16-07 | 41 | 35 | Stage 4Pontey - Val Clavalité (166.0km) | 166.0km |
| 15-07 | 29 | 23 | Stage 3Quincinetto - Tavagnasco (159.0km) | 159.0km |
| 14-07 | 16 | 13 | Stage 2Morillon - Saint-Gervais Mont-Blanc (136.0km) | 136.0km |
| 13-07 | | 38 | Stage 1Pont-Saint-Martin - Montjovet (19.0km) | 19.0km |
| 26-06 | DNF | | National Road Championships - Great Britain (CN) | 201.0km |
| 23-06 | 1 | | National Road Championships - Great Britain TT U23 (CN) | 34.0km |
| | | Course de la Paix U23 (2.NCUP) |
| 17 | | Klassement |
| 05-06 | | 17 | Stage 3Jeseník - Jeseník (160.0km) | 160.0km |
| | | Ronde de l'Isard (2.2U) |
| 9 | | Klassement |
| 22-05 | 1 | 9 | Stage 4Eaunes - Saint-Girons (159.0km) | 159.0km |
| 19-05 | 15 | | Stage 1Lorp Sentaraille - Goulier Neige (138.0km) | 138.0km |
| | | Tour de Yorkshire (2.1) |
| 29-04 | DNF | | Stage 1Beverley - Settle (185.0km) | 185.0km |
| | | Tour of Croatia (2.1) |
| 9 | | Klassement |
| 24-04 | 17 | 9 | Stage 6Sveti Martin na Muri - Zagreb (177.0km) | 177.0km |
| 23-04 | 11 | 10 | Stage 5Porec - Umag (40.0km) | 40.0km |
| 22-04 | 9 | 9 | Stage 4Crikvenica - Ucka (122.0km) | 122.0km |
| 21-04 | 64 | 63 | Stage 3Makarska - Sibenik (189.0km) | 189.0km |
| 20-04 | 68 | 73 | Stage 2Plitvička - Split (240.0km) | 240.0km |
| 19-04 | 75 | 76 | Stage 1Osijek - Varaždin (235.0km) | 235.0km |
| 16-04 | 25 | | Liège - Bastogne - Liège U23 (1.2U) | |
| | | Le Triptyque des Monts et Châteaux (2.2) |
| 03-04 | 2 | 5 | Stage 3aChièvres - Chièvres (10.0km) | 10.0km |
| 03-04 | 34 | 6 | Stage 3bTournai - Chièvres (91.0km) | 91.0km |
| 02-04 | 10 | 9 | Stage 2Frasnes-lez-Buissenal - Mont-de-l'Enclus (153.0km) | 153.0km |
| 01-04 | 38 | 42 | Stage 1Antoing - Hérinnes (165.0km) | 165.0km |
| | | Settimana Internazionale Coppi e Bartali (2.1) |
| 23 | | Klassement |
| 27-03 | 13 | 23 | Stage 4Pavullo nel Frignano - Pavullo nel Frignano (163.0km) | 163.0km |
| 26-03 | 117 | 42 | Stage 3Calderara di Reno - Crevalcore (172.0km) | 172.0km |
| 25-03 | 44 | 42 | Stage 2Riccione - Sogliano al Rubicone (154.0km) | 154.0km |
| 24-03 | 57 | 57 | Stage 1aGatteo - Gatteo (95.0km) | 95.0km |
| 24-03 | 19 | 52 | Stage 1bGatteo - Gatteo (13.0km) | 13.0km |
| 18-03 | DNF | | Handzame Classic (1.1) | 199.0km |
| 06-03 | 6 | | Grand Prix de la Ville de Lillers Souvenir Bruno Comini (1.2) | 181.0km |
| 30-01 | 79 | | Trofeo Serra de Tramuntana (1.1) | |
| 29-01 | 44 | | Trofeo Pollença-Port de Andratx (1.1) | |