| 13-10 | 1 | | Chrono des Nations U23 (1.2U) | 27.0km |
| 06-10 | DNF | | Paris - Tours Espoirs (1.2U) | |
| 27-09 | 88 | | UCI World Championship Zurich U23 (CM) | 173.0km |
| 23-09 | 2 | | UCI World Championship Zurich TT U23 (CM) | 29.0km |
| 13-09 | 91 | | UEC Road European Championships U23 (CC) | 162.0km |
| 11-09 | 2 | | UEC Road European Championships TT U23 (CC) | 31.0km |
| 07-09 | 49 | | GP Rik Van Looy (1.2) | |
| | | Tour de l'Avenir (2.NCUP) |
| 21-08 | OTL | | Stage 3Peisey-Vallandry - La Rosière-Montvalezan (71.0km) | 71.0km |
| 20-08 | 120 | 113 | Stage 2Mouchard - Plateau d'Hauteville (170.0km) | 170.0km |
| 19-08 | 22 | 6 | Stage 1Sarrebourg - Ronchamp (185.0km) | 185.0km |
| 18-08 | 3 | 3 | PrologueSarrebourg - Sarrebourg (7.0km) | 7.0km |
| 03-08 | 58 | | Olympic Games Paris (JO) | 272.0km |
| 21-07 | 12 | | Swedish National Championships - XCC (CN) | |
| 18-06 | 1 | | National Road Championships - Sweden TT (CN) | 32.0km |
| | | Giro d'Italia Next Gen (2.2U) |
| 16-06 | DNF | | Stage 8Cesena - Forlimpopoli (146.0km) | 146.0km |
| 15-06 | 146 | 113 | Stage 7Montegrotto Terme - Zocca (170.0km) | 170.0km |
| 14-06 | 150 | 80 | Stage 6Borgo Virgilio - Fosse (145.0km) | 145.0km |
| 13-06 | 37 | 57 | Stage 5Bergamo - Cremona (136.0km) | 136.0km |
| 12-06 | 121 | 57 | Stage 4Pertusio - Borgomanero (130.0km) | 130.0km |
| 11-06 | 68 | 56 | Stage 3Verrès - Pian della Mussa (127.0km) | 127.0km |
| 10-06 | 53 | 3 | Stage 2Aymavilles - Saint-Vincent (121.0km) | 121.0km |
| 09-06 | 1 | 1 | Stage 1Aosta - Aosta (11.0km) | 11.0km |
| 26-05 | 55 | | Fyn Rundt - Tour of Funen (1.2) | 198.0km |
| 25-05 | 45 | | Grand Prix Herning (1.2) | 179.0km |
| | | Flèche du Sud (2.2) |
| 38 | | Klassement |
| 2 | | Punten |
| 12-05 | 1 | 38 | Stage 5Esch-sur-Alzette - Esch-sur-Alzette (149.0km) | 149.0km |
| 11-05 | 1 | 39 | Stage 4Sanem - Sanem (18.0km) | 18.0km |
| 10-05 | 49 | 49 | Stage 3Bourscheid - Bourscheid (127.0km) | 127.0km |
| 09-05 | 73 | 70 | Stage 2Rumelange - Rumelange (151.0km) | 151.0km |
| 08-05 | 66 | 66 | Stage 1Canach - Canach (85.0km) | 85.0km |
| | | Le Tour de Bretagne Cycliste (2.2) |
| 1 | | Klassement |
| 8 | | Punten |
| 01-05 | 12 | 1 | Stage 7Le Hinglé - Dinan (159.0km) | 159.0km |
| 30-04 | 44 | 1 | Stage 6Saint-Onen-la-Chapelle - Louvigné-du-Désert (192.0km) | 192.0km |
| 29-04 | 33 | 1 | Stage 5La Gacilly - Saint-Méen-le-Grand (203.0km) | 203.0km |
| 28-04 | 20 | 1 | Stage 4Le Croisic - La Gacilly (171.0km) | 171.0km |
| 27-04 | 1 | 1 | Stage 3Noyal-Pontivy - Guérande (180.0km) | 180.0km |
| 26-04 | 11 | 34 | Stage 2Milizac-Guipronvel - Noyal-Pontivy (206.0km) | 206.0km |
| 25-04 | 66 | 69 | Stage 1Locmaria-Plouzané - Plougonvelin (146.0km) | 146.0km |
| 21-04 | 41 | | Gent-Wevelgem / Kattekoers-Ieper U23 (1.2U) | 182.0km |
| | | Tour du Loir et Cher (2.2) |
| 7 | | Klassement |
| 7 | | Punten |
| 14-04 | 57 | 7 | Stage 5Blois - Blois (97.0km) | 97.0km |
| 13-04 | 52 | 3 | Stage 4Salbris - Salbris (121.0km) | 121.0km |
| 12-04 | 2 | 3 | Stage 3Freteval - Vendôme (199.0km) | 199.0km |
| 11-04 | 5 | 9 | Stage 2Selles-sur-Cher - Fougères-sur-Bièvre (183.0km) | 183.0km |
| 10-04 | 39 | 39 | Stage 1Blois - Vineuil (183.0km) | 183.0km |
| 07-04 | 54 | | Paris-Roubaix Espoirs (1.2U) | 164.0km |
| 03-04 | 120 | | Scheldeprijs (1.Pro) | 205.0km |
| | | Tour de la Provence (2.1) |
| 8 | | Klassement |
| 9 | | Punten |
| 11-02 | 25 | 8 | Stage 3Rognac - Arles (183.0km) | 183.0km |
| 10-02 | 15 | 12 | Stage 2Forcalquier - Manosque (165.0km) | 165.0km |
| 09-02 | 36 | 2 | Stage 1Aix-en-Provence - Manosque (157.0km) | 157.0km |
| 08-02 | 2 | 2 | PrologueMarseille - Marseille (5.0km) | 5.0km |
| 28-01 | 107 | | Trofeo Palma (1.1) | 150.0km |
| 26-01 | 33 | | Trofeo Serra Tramuntana (1.1) | |
| 24-01 | 68 | | Trofeo Calvià (1.1) | 150.0km |
| 21-01 | 23 | | Ruta de la Cerámica - Gran Premio Castellón (1.1) | |