16.10 | 67 | | | Veneto Classic (1.1) | 190 | | | more |
12.10 | 60 | | | Giro del Veneto (1.1) | 159.8 | | | more |
09.10 | 22 | | | UCI Gravel World Championships ME (GRV) Switzerland | 190 | | | more |
23.09 | 39 | | | World Championships MU - Road Race (WC) | 169.8 | | 3 | more |
04.09 | 45 | | | Tour du Doubs (1.1) | 204 | | | more |
18.08 › 28.0818-28/8 | | | | Tour de l'Avenir (2.Ncup) | | | | more |
| 37 | | | Mountains classificationMountains classification | | | | |
| 30 | | | General classificationGeneral classification | | | | |
28.08 | 29 | | | S9Stage 9 - Bessans › Villaroger | 134.1 | | | |
27.08 | 22 | 35 | | S8Stage 8 - Ugine › La Toussuire | 100.2 | | | |
26.08 | 86 | 57 | | S7Stage 7 - Thonon-les-Bains › Saint-François-Longchamp | 175.4 | | | |
24.08 | 36 | 40 | | S6Stage 6 - Saint-Amour › Oyonnax | 124.6 | | | |
23.08 | 12 | 61 | | S5 (TTT)Stage 5 (TTT) - Gueugnon › Saint Vallier | 27.9 | | | |
22.08 | 82 | 68 | | S4Stage 4 - Sainte Sévère sur Indre › Chaillac | 142.8 | | | |
21.08 | 41 | 36 | | S3Stage 3 - Civray › La Trimouille | 153.7 | | | |
20.08 | 33 | 41 | | S2Stage 2 - Benet › Civray | 152.8 | | | |
19.08 | 63 | 63 | | S1Stage 1 - La Roche-sur-Yon › La Roche-sur-Yon | 121.6 | | | |
18.08 | 16 | | | TTT PrologueTTT Prologue - La Roche-sur-Yon › La Roche-sur-Yon | 3.9 | | | |
14.08 | 77 | | | La Polynormande (1.1) | 168.9 | | | more |
06.08 | 6 | | | La Maurienne (1.2) | 139.1 | 1 | 10 | more |
13.07 › 17.0713-17/7 | | | | Giro Ciclistico della Valle d'Aosta - Mont Blanc (2.2U) | | | | more |
15.07 | DNS | | | S3Stage 3 - Aosta › Aosta | 138.8 | | | |
14.07 | 102 | 68 | | S2Stage 2 - Saint Christophe › Saint Christophe | 124.5 | | | |
13.07 | 49 | 49 | | S1Stage 1 - Saint Gervais Mont Blanc › Saint Gervais Mont Blanc | 82.4 | | | |
10.07 | 54 | | | European Continental Championships MU - Road Race (CC) | 147.3 | | | more |
07.07 | 16 | | | European Continental Championships MU - ITT (CC) | 22 | | | more |
03.07 | 1 | | | National Championships Switzerland MU - Road Race (NC) | 149.1 | | 50 | more |
26.06 | 8 | | | National Championships Switzerland ME - Road Race (NC) | 192 | | 10 | more |
23.06 | 2 | | | National Championships Switzerland MU - ITT (NC) | 19 | | 15 | more |
17.06 › 19.0617-19/6 | | | | Tour du Pays de Montbéliard (2.2) | | | | more |
| 7 | | | Youth classificationYouth classification | | | | |
| 11 | | | General classificationGeneral classification | | | | |
19.06 | 13 | | | S3Stage 3 - Valentigney › Valentigney | 155.2 | | | |
18.06 | 17 | 12 | | S2Stage 2 - Pont-de-Roide › Pont-de-Roide | 161.7 | | | |
17.06 | 21 | 21 | | S1 (ITT)Stage 1 (ITT) - Mandeure › Mathay | 4.1 | | | |
10.06 | 63 | | | Grosser Preis des Kantons Aargau (1.1) | 173.8 | | | more |
02.06 › 05.062-5/6 | | | | Course de la Paix Grand Prix Jeseníky (2.Ncup) | | | | more |
| 26 | | | General classificationGeneral classification | | | | |
05.06 | 18 | | | S3Stage 3 - Jeseník › Jeseník | 166.7 | | | |
04.06 | 25 | 28 | | S2Stage 2 - Bruntál › Dlouhé Stráně | 134.6 | | | |
03.06 | 47 | 107 | | S1Stage 1 - Jeseník › Rýmařov | 131.5 | | | |
02.06 | 137 | 137 | | ProloguePrologue - Jeseník › Jeseník | 3.4 | | | |
25.05 › 29.0525-29/5 | | | | Alpes Isère Tour (2.2) | | | | more |
| 29 | | | Youth classificationYouth classification | | | | |
| 17 | | | Mountains classificationMountains classification | | | | |
| 19 | | | Points classificationPoints classification | | | | |
| 48 | | | General classificationGeneral classification | | | | |
29.05 | 26 | | | S5Stage 5 - Entre-deux-Guiers › Allevard-les-Bains | 133.1 | | | |
28.05 | 85 | 42 | | S4Stage 4 - Saint-Maurice-l'Exil › Beaurepaire | 171.4 | | | |
27.05 | 52 | 42 | | S3Stage 3 - Saint-Exupéry › Toussieu | 145.5 | | | |
26.05 | 59 | 47 | | S2Stage 2 - Les Abrets-en-Dauphiné › Saint-Quentin-Fallavier | 161.2 | | | |
25.05 | 14 | 19 | | S1Stage 1 - Charvieu-Chavagneux › Charvieu-Chavagneux | 118.1 | | | |
26.04 › 01.0526-1/4 | | | | Tour de Romandie (2.UWT) Switzerland | | | | more |
| 30 | | | Youth classificationYouth classification | | | | |
| 4 | | | Mountains classificationMountains classification | | | | |
| 41 | | | Points classificationPoints classification | | | | |
| 108 | | | General classificationGeneral classification | | 5 | | |
01.05 | 84 | | | S5 (ITT)Stage 5 (ITT) - Aigle › Villars | 15.84 | | | |
30.04 | 108 | 110 | | S4Stage 4 - Aigle › Zinal (Val d'Anniviers) 146k | 180.1 | | | |
29.04 | 130 | 117 | | S3Stage 3 - Valbroye › Valbroye | 165.1 | | | |
28.04 | 121 | 116 | | S2Stage 2 - Échallens › Échallens 140k | 168.2 | | | |
27.04 | 97 | 96 | | S1Stage 1 - La Grande Beroche › Romont | 178 | | | |
26.04 | 86 | 86 | | ProloguePrologue - Lausanne › Lausanne | 5.12 | | | |
16.04 | 15 | | | Liège - Bastogne - Liège U23 (1.2U) | 174.8 | | | more |
06.04 › 09.046-9/4 | | | | Circuit des Ardennes (2.2) | | | | more |
| 13 | | | Youth classificationYouth classification | | | | |
| 8 | | | Mountains classificationMountains classification | | | | |
| 22 | | | General classificationGeneral classification | | | | |
09.04 | 47 | | | S4Stage 4 - Charleville-Mézières › Charleville-Mézières | 172.7 | | | |
07.04 | 14 | 17 | | S2Stage 2 - Bazeilles › Sedan | 92.5 | | | |
06.04 | 58 | 59 | | S1Stage 1 - Signy-le-Petit › Signy-le-Petit | 165.2 | | | |
01.04 › 03.041-3/4 | | | | Le Triptyque des Monts et Châteaux (2.2U) | | | | more |
| 14 | | | Mountains classificationMountains classification | | | | |
| 24 | | | Points classificationPoints classification | | | | |
| 24 | | | General classificationGeneral classification | | | | |
03.04 | 9 | | | S3bStage 3b - Ellezelles › Frasnes-lez-Anvaing | 95.7 | | | |
03.04 | 74 | 33 | | S3a (ITT)Stage 3a (ITT) - Wodecq › Wodecq | 14.2 | | | |
02.04 | 31 | 22 | | S2Stage 2 - Bernissart › Tertre | 169.9 | | | |
01.04 | 21 | 21 | | S1Stage 1 - Antoing › Mont Saint-Aubert | 131.7 | | | |
27.03 | 57 | | | Gent-Wevelgem / Kattekoers-Ieper (1.Ncup) | 177 | | | more |
20.03 | 45 | | | Popolarissima (1.2) Switzerland | 175.2 | | | more |