| 05-10 | 53 | | Il Lombardia Under 23 (1.2U) | 170.0km |
| 27-09 | DNF | | UCI World Championship Zurich U23 (CM) | 173.0km |
| | | Skoda Tour de Luxembourg (2.Pro) |
| 10 | | Klassement |
| 6 | | Jongeren |
| 22-09 | 17 | 10 | Stage 5Mersch - Luxembourg (176.0km) | 176.0km |
| 21-09 | 20 | 9 | Stage 4Differdange - Differdange (15.0km) | 15.0km |
| 20-09 | 11 | 13 | Stage 3Rosport - Diekirch (201.0km) | 201.0km |
| 19-09 | 62 | 38 | Stage 2Junglinster - Schifflange (155.0km) | 155.0km |
| 18-09 | 36 | 36 | Stage 1Luxembourg - Luxembourg (156.0km) | 156.0km |
| 13-09 | 4 | | UEC Road European Championships U23 (CC) | 162.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 9 | | Klassement |
| 11 | | Punten |
| 23 | | Berg |
| 24-08 | 17 | 9 | Stage 6 Bobbio Pellice - Colle delle Finestre (120.0km) | 120.0km |
| 23-08 | 10 | 9 | Stage 5Les Karellis - Condove (120.0km) | 120.0km |
| 22-08 | 14 | 9 | Stage 4La Rosière-Montvalezan - Les Karellis (143.0km) | 143.0km |
| 21-08 | 8 | 8 | Stage 3Peisey-Vallandry - La Rosière-Montvalezan (71.0km) | 71.0km |
| 20-08 | 4 | 27 | Stage 2Mouchard - Plateau d'Hauteville (170.0km) | 170.0km |
| 19-08 | 34 | 37 | Stage 1Sarrebourg - Ronchamp (185.0km) | 185.0km |
| 18-08 | 36 | 36 | PrologueSarrebourg - Sarrebourg (7.0km) | 7.0km |
| | | Czech Tour (2.1) |
| 25 | | Klassement |
| 9 | | Berg |
| 5 | | Jongeren |
| 28-07 | 24 | 25 | Stage 4Šumperk - Šternberk (129.0km) | 129.0km |
| 27-07 | 31 | 25 | Stage 3Moravska Trebova - Dlouhé (131.0km) | 131.0km |
| 26-07 | 24 | 27 | Stage 2Zlin - Pustevny (170.0km) | 170.0km |
| 25-07 | 135 | 135 | Stage 1Prostejov - Ostrava (151.0km) | 151.0km |
| 30-06 | 1 | | National Road Championships - Luxembourg U23 (CN) | |
| 23-06 | 2 | | National Road Championships - Luxembourg (CN) | 144.0km |
| 21-06 | 1 | | National Road Championships - Luxembourg TT U23 (CN) | 20.0km |
| | | Giro d'Italia Next Gen (2.2U) |
| 8 | | Klassement |
| 52 | | Punten |
| 28 | | Berg |
| 16-06 | 43 | 8 | Stage 8Cesena - Forlimpopoli (146.0km) | 146.0km |
| 15-06 | 16 | 8 | Stage 7Montegrotto Terme - Zocca (170.0km) | 170.0km |
| 14-06 | 10 | 8 | Stage 6Borgo Virgilio - Fosse (145.0km) | 145.0km |
| 13-06 | 107 | 6 | Stage 5Bergamo - Cremona (136.0km) | 136.0km |
| 12-06 | 91 | 6 | Stage 4Pertusio - Borgomanero (130.0km) | 130.0km |
| 11-06 | 8 | 6 | Stage 3Verrès - Pian della Mussa (127.0km) | 127.0km |
| 10-06 | 36 | 15 | Stage 2Aymavilles - Saint-Vincent (121.0km) | 121.0km |
| 09-06 | 22 | 22 | Stage 1Aosta - Aosta (11.0km) | 11.0km |
| | | Orlen Nations Grand Prix (2.NCUP) |
| 13 | | Klassement |
| 19-05 | 9 | 13 | Stage 5Lesko - Arlamów (143.0km) | 143.0km |
| 18-05 | 21 | 14 | Stage 4Bukovina Resort - Jaslo (175.0km) | 175.0km |
| 17-05 | 21 | 14 | Stage 3Tvrdosin - Štrbské Pleso (121.0km) | 121.0km |
| 16-05 | 14 | 14 | Stage 2Prerov - Kohútka (110.0km) | 110.0km |
| 15-05 | 11 | 11 | Stage 1Prostejov - Bouzov (135.0km) | 135.0km |
| | | Flèche du Sud (2.2) |
| 8 | | Klassement |
| 30 | | Punten |
| 15 | | Berg |
| 12-05 | 42 | 8 | Stage 5Esch-sur-Alzette - Esch-sur-Alzette (149.0km) | 149.0km |
| 11-05 | 21 | 8 | Stage 4Sanem - Sanem (18.0km) | 18.0km |
| 10-05 | 8 | 11 | Stage 3Bourscheid - Bourscheid (127.0km) | 127.0km |
| 09-05 | 63 | 67 | Stage 2Rumelange - Rumelange (151.0km) | 151.0km |
| 08-05 | 67 | 67 | Stage 1Canach - Canach (85.0km) | 85.0km |
| | | Tour des Alpes-Maritimes (2.1) |
| 17-02 | DNS | | Stage 1Levens - Antibes (165.0km) | 165.0km |
| 16-02 | DNF | | Classic Var (1.1) | 184.0km |
| 10-02 | 70 | | Figueira Champions Classic (1.Pro) | 220.0km |
| 27-01 | 26 | | Trofeo Pollença - Port d'Andratx (1.1) | |
| 26-01 | 34 | | Trofeo Serra Tramuntana (1.1) | |
| 24-01 | 28 | | Trofeo Calvià (1.1) | 150.0km |
| 21-01 | 55 | | Ruta de la Cerámica - Gran Premio Castellón (1.1) | |
| 13-01 | 1 | | Luxembourg National Championships CX U23 (CN) | |