05.10 | 52 | | | Il Lombardia Under 23 (1.2U) | 170.6 | | | more |
01.10 | 8 | | | Coppa Città di San Daniele (1.2) | 160 | | 3 | more |
27.09 | 38 | | | World Championships MU - Road Race (WC) | 173.6 | | 3 | more |
08.09 | 28 | | | D&D Verhuur Eurode Omloop (NAT) | 156 | | | more |
07.09 | DNF | | | GP Rik Van Looy (1.2) | 181.1 | | | more |
18.08 › 24.0818-24/8 | | | | Tour de l'Avenir (2.Ncup) | | | | more |
| 14 | | | Mountains classificationMountains classification | | | | |
| 12 | | | Points classificationPoints classification | | | | |
| 25 | | | General classificationGeneral classification | | | | |
24.08 | 29 | | | S6Stage 6 - Bobbio Pelice › Colle delle Finestre | 127.2 | | | |
23.08 | 5 | 31 | | S5Stage 5 - Les Karellis › Condoue 84k | 119.3 | | | |
22.08 | 2 | 43 | | S4Stage 4 - La Rosière › Les Karellis | 142.6 | 2 | 9 | |
21.08 | 78 | 71 | | S3Stage 3 - Peisey-Vallandry › La Rosière | 70.7 | | | |
20.08 | 47 | 32 | | S2Stage 2 - Mouchard › Plateau d'Hauteville | 170.2 | | | |
19.08 | 61 | 44 | | S1Stage 1 - Sarrebourg › Ronchamp-Champagney | 184.5 | | | |
18.08 | 44 | 44 | | ProloguePrologue - Sarrebourg › Sarrebourg | 7.1 | | | |
23.06 | 23 | | | National Championships Netherlands MU - Road Race (NC) | 139 | | | more |
19.06 | DNS | | | National Championships Netherlands MU - ITT (NC) | 36.8 | | | more |
09.06 › 16.069-16/6 | | | | Giro d'Italia Next Gen (2.2U) | | | | more |
| 22 | | | Mountains classificationMountains classification | | | | |
| 46 | | | Points classificationPoints classification | | | | |
| 16 | | | General classificationGeneral classification | | | | |
16.06 | 47 | | | S8Stage 8 - Cesena › Forlimpopoli | 137 | | | |
15.06 | 24 | 16 | | S7Stage 7 - Montegrotto Terme › Zocca | 182 | | | |
14.06 | 7 | 17 | | S6Stage 6 - Borgo Virgilio › Fosse | 172 | | | |
13.06 | 38 | 25 | | S5Stage 5 - Bergamo › Cremona | 138 | | | |
12.06 | 79 | 25 | | S4Stage 4 - Pertusio › Borgomanero | 139 | | | |
11.06 | 29 | 26 | | S3Stage 3 - Verrès › Pian della Mussa | 134 | | | |
10.06 | 43 | 22 | | S2Stage 2 - Aymavilles › Saint-Vincent | 105 | | | |
09.06 | 39 | 39 | | S1 (ITT)Stage 1 (ITT) - Aosta › Aosta | 8.8 | | | |
30.05 › 02.0630-2/5 | | | | Course de la Paix Grand Prix Jeseníky (2.Ncup) Netherlands | | | | more |
| 22 | | | Points classificationPoints classification | | | | |
| 6 | | | General classificationGeneral classification | | 6 | 20 | |
02.06 | 33 | | | S4Stage 4 - Šumperk › Jeseník | 126.8 | | | |
01.06 | 7 | 6 | | S3Stage 3 - Bruntál › Dlouhé stráně | 99.7 | | | |
31.05 | 51 | 55 | | S2Stage 2 - Uničov › Rýmařov | 117.6 | | | |
30.05 | 81 | 81 | | S1Stage 1 - Krnov › Opava | 123.8 | | | |
20.05 | DNF | | | Ronde van Limburg (1.1) 105k Team Visma | Lease a Bike | 195.6 | | | more |
12.05 | 55 | | | Flèche Ardennaise (1.2) | 174 | | | more |
01.05 › 05.051-5/5 | | | | Ronde de l'Isard (2.2U) | | | | more |
| 1 | | | Mountains classificationMountains classification | | | | |
| 2 | | | Points classificationPoints classification | | | | |
| 1 | | | General classificationGeneral classification | | 25 | 30 | |
05.05 | 12 | | | S5Stage 5 - Pamiers › Saint-Girons | 134.4 | | | |
04.05 | 1 | 1 | | S4Stage 4 - Lavelanet › Plateau-de-Beille | 122.3 | 5 | 5 +1 | |
03.05 | 2 | 7 | | S3Stage 3 - Bagnères-de-Luchon › Saverdun | 153.2 | 2 | 1 | |
02.05 | 12 | 9 | | S2Stage 2 - Bagnères-de-Bigorre › Bagnères-de-Luchon | 125.8 | | | |
01.05 | 26 | 27 | | S1Stage 1 - L'Isle-en-Dodon › Trie-sur-Baïse | 146.1 | | | |
02.04 | 12 | | | G.P. Palio del Recioto - Trofeo C&F Resinatura Blocchi (1.2U) | 148.3 | | | more |
01.04 | 12 | | | Giro del Belvedere (1.2U) | 168 | | | more |
19.03 › 23.0319-23/3 | | | | Settimana Internazionale Coppi e Bartali (2.1) Team Visma | Lease a Bike | | | | more |
| 18 | | | Youth classificationYouth classification | | | | |
| 41 | | | General classificationGeneral classification | | | | |
23.03 | 30 | | | S5Stage 5 - Forlì › Forlì | 157.9 | | | |
22.03 | 63 | 50 | | S4Stage 4 - Brisighella › Brisighella | 150.7 | | | |
21.03 | 62 | 48 | | S3Stage 3 - Riccione › Riccione | 132.2 | | | |
20.03 | 59 | 56 | | S2Stage 2 - Riccione › Sogliano al Rubicone | 156.5 | | | |
19.03 | 75 | 75 | | S1Stage 1 - Pesaro › Pesaro | 109.7 | | | |
07.03 › 10.037-10/3 | | | | Istarsko Proljeće - Istrian Spring Trophy (2.2) | | | | more |
| 1 | | | Mountains classificationMountains classification | | | | |
| 2 | | | Points classificationPoints classification | | | | |
| 2 | | | General classificationGeneral classification | | 18 | 30 | |
10.03 | 5 | | | S3Stage 3 - Pazin › Umag | 118 | | | |
09.03 | 2 | 2 | | S2Stage 2 - Novigrad › Motovun | 139.3 | 2 | 3 | |
08.03 | 64 | 13 | | S1Stage 1 - Poreč › Funtana | 142.1 | | | |
07.03 | 15 | 15 | | ProloguePrologue - Vrsar › Vrsar | 1.4 | | | |
03.03 | 53 | | | Trofej Poreč - Poreč Trophy (1.2) | 146.3 | | | more |
28.02 | 36 | | | Trofej Umag - Umag Trophy (1.2) | 142.3 | | | more |