| 30-12 | 56 | | Telenet Superprestige Diegem (C1) | |
| 27-12 | 37 | | Exact Azencross Loenhout (C1) | 21.0km |
| 23-12 | 56 | | Telenet Superprestige Mol (C2) | |
| 06-10 | 44 | | Paris - Tours Espoirs (1.2U) | |
| 03-10 | 51 | | Sparkassen Münsterland Giro (1.Pro) | 205.0km |
| 27-09 | 67 | | UCI World Championship Zurich U23 (CM) | 173.0km |
| | | Skoda Tour de Luxembourg (2.Pro) |
| 84 | | Klassement |
| 36 | | Jongeren |
| 22-09 | 60 | 84 | Stage 5Mersch - Luxembourg (176.0km) | 176.0km |
| 21-09 | 68 | 94 | Stage 4Differdange - Differdange (15.0km) | 15.0km |
| 20-09 | 91 | 94 | Stage 3Rosport - Diekirch (201.0km) | 201.0km |
| 19-09 | 16 | 98 | Stage 2Junglinster - Schifflange (155.0km) | 155.0km |
| 18-09 | 105 | 105 | Stage 1Luxembourg - Luxembourg (156.0km) | 156.0km |
| 13-09 | 19 | | UEC Road European Championships U23 (CC) | 162.0km |
| 11-09 | 21 | | UEC Road European Championships TT U23 (CC) | 31.0km |
| | | Tour de l'Avenir (2.NCUP) |
| 83 | | Klassement |
| 27 | | Punten |
| 24-08 | 90 | 83 | Stage 6 Bobbio Pellice - Colle delle Finestre (120.0km) | 120.0km |
| 23-08 | 61 | 81 | Stage 5Les Karellis - Condove (120.0km) | 120.0km |
| 22-08 | 55 | 81 | Stage 4La Rosière-Montvalezan - Les Karellis (143.0km) | 143.0km |
| 21-08 | 99 | 96 | Stage 3Peisey-Vallandry - La Rosière-Montvalezan (71.0km) | 71.0km |
| 20-08 | 112 | 96 | Stage 2Mouchard - Plateau d'Hauteville (170.0km) | 170.0km |
| 19-08 | 7 | 26 | Stage 1Sarrebourg - Ronchamp (185.0km) | 185.0km |
| 18-08 | 25 | 25 | PrologueSarrebourg - Sarrebourg (7.0km) | 7.0km |
| | | Tour of Austria (2.1) |
| 45 | | Klassement |
| 17 | | Jongeren |
| 07-07 | | 45 | Stage 5Kufstein - Kühtai (143.0km) | 143.0km |
| 06-07 | 36 | 45 | Stage 4St. Johann/Alpendorf - Grossglockner (151.0km) | 151.0km |
| 05-07 | 105 | 63 | Stage 3Schladming - St. Johann/Alpendorf (153.0km) | 153.0km |
| 04-07 | 39 | 31 | Stage 2Maria Taferl - Steyr (184.0km) | 184.0km |
| 03-07 | 36 | 29 | Stage 1Bad Tatzmannsdorf - Bad Tatzmannsdorf (174.0km) | 174.0km |
| 02-07 | 34 | 34 | PrologueSankt Pölten - Sankt Pölten (3.0km) | 3.0km |
| 23-06 | 4 | | National Road Championships - Luxembourg (CN) | 144.0km |
| 21-06 | 2 | | National Road Championships - Luxembourg TT U23 (CN) | 20.0km |
| | | Giro d'Italia Next Gen (2.2U) |
| 33 | | Klassement |
| 16-06 | 22 | 33 | Stage 8Cesena - Forlimpopoli (146.0km) | 146.0km |
| 15-06 | 29 | 35 | Stage 7Montegrotto Terme - Zocca (170.0km) | 170.0km |
| 14-06 | 31 | 41 | Stage 6Borgo Virgilio - Fosse (145.0km) | 145.0km |
| 13-06 | 21 | 71 | Stage 5Bergamo - Cremona (136.0km) | 136.0km |
| 12-06 | 16 | 72 | Stage 4Pertusio - Borgomanero (130.0km) | 130.0km |
| 11-06 | 47 | 78 | Stage 3Verrès - Pian della Mussa (127.0km) | 127.0km |
| 10-06 | 137 | 134 | Stage 2Aymavilles - Saint-Vincent (121.0km) | 121.0km |
| 09-06 | 31 | 31 | Stage 1Aosta - Aosta (11.0km) | 11.0km |
| | | Orlen Nations Grand Prix (2.NCUP) |
| 48 | | Klassement |
| 19-05 | 34 | 48 | Stage 5Lesko - Arlamów (143.0km) | 143.0km |
| 18-05 | 20 | 63 | Stage 4Bukovina Resort - Jaslo (175.0km) | 175.0km |
| 17-05 | 1 | 64 | Stage 3Tvrdosin - Štrbské Pleso (121.0km) | 121.0km |
| 16-05 | 80 | 74 | Stage 2Prerov - Kohútka (110.0km) | 110.0km |
| 15-05 | 72 | 72 | Stage 1Prostejov - Bouzov (135.0km) | 135.0km |
| | | Flèche du Sud (2.2) |
| 47 | | Klassement |
| 23 | | Punten |
| 12-05 | 24 | 47 | Stage 5Esch-sur-Alzette - Esch-sur-Alzette (149.0km) | 149.0km |
| 11-05 | 6 | 48 | Stage 4Sanem - Sanem (18.0km) | 18.0km |
| 10-05 | 53 | 50 | Stage 3Bourscheid - Bourscheid (127.0km) | 127.0km |
| 09-05 | 16 | 33 | Stage 2Rumelange - Rumelange (151.0km) | 151.0km |
| 08-05 | 48 | 48 | Stage 1Canach - Canach (85.0km) | 85.0km |
| 01-05 | 15 | | Eschborn-Frankfurt U23 (1.2U) | 129.0km |
| 21-04 | 11 | | Gent-Wevelgem / Kattekoers-Ieper U23 (1.2U) | 182.0km |
| | | Tour du Loir et Cher (2.2) |
| 81 | | Klassement |
| 8 | | Berg |
| 14-04 | 24 | 81 | Stage 5Blois - Blois (97.0km) | 97.0km |
| 13-04 | 26 | 94 | Stage 4Salbris - Salbris (121.0km) | 121.0km |
| 12-04 | 64 | 96 | Stage 3Freteval - Vendôme (199.0km) | 199.0km |
| 11-04 | 107 | 103 | Stage 2Selles-sur-Cher - Fougères-sur-Bièvre (183.0km) | 183.0km |
| 10-04 | 57 | 57 | Stage 1Blois - Vineuil (183.0km) | 183.0km |
| 07-04 | 30 | | Paris-Roubaix Espoirs (1.2U) | 164.0km |
| 30-03 | DNF | | Volta Limburg Classic (1.1) | 190.0km |
| | | Olympia's Tour (2.2) |
| 23 | | Klassement |
| 30 | | Punten |
| 24-03 | 16 | 23 | Stage 5Neede - Tiel (161.0km) | 161.0km |
| 23-03 | 14 | 33 | Stage 4Gieten - Ruurlo (168.0km) | 168.0km |
| 22-03 | 54 | 54 | Stage 3Assen - Roden (140.0km) | 140.0km |
| 21-03 | 68 | 62 | Stage 2Baflo - Baflo (144.0km) | 144.0km |
| 20-03 | 59 | 59 | Stage 1Medemblik - Medemblik (145.0km) | 145.0km |
| 17-03 | 35 | | Dorpenomloop Rucphen (1.2) | 181.0km |
| 15-03 | 32 | | Youngster Coast Challenge (1.2U) | |
| 02-03 | DNF | | Salverda Bouw Ster van Zwolle (1.2) | 183.0km |
| 13-01 | 2 | | Luxembourg National Championships CX U23 (CN) | |
| 01-01 | 12 | | Grand Prix Garage Colle (C2) | |