| | | Tour Alsace (2.2) |
| 03-08 | DNF | | Stage 4Ribeauville - Lac Blanc (161.0km) | 161.0km |
| 02-08 | 91 | 90 | Stage 3Vesoul - La Planche des Belles Filles (143.0km) | 143.0km |
| 01-08 | 153 | 51 | Stage 2Selestat - Selestat (153.0km) | 153.0km |
| 31-07 | | 52 | Stage 1Sausheim - Sausheim (4.0km) | 4.0km |
| | | Giro Ciclistico della Valle d'Aosta Mont Blanc (2.2U) |
| 18-07 | DNF | | Stage 2Aymavilles - Valsavarenche (137.0km) | 137.0km |
| 17-07 | 68 | 16 | Stage 1Sainte-Foy-Tarentaise - Saint-Gervais Mont-Blanc (126.0km) | 126.0km |
| 16-07 | 4 | 4 | PrologueAosta - Aosta (2.0km) | 2.0km |
| 30-06 | 26 | | National Road Championships - Great Britain (CN) | |
| 27-06 | 27 | | National Road Championships - Great Britain TT U23 (CN) | |
| | | Baby Giro (2.2U) |
| 25 | | Klassement |
| 55 | | Punten |
| 29 | | Berg |
| 23-06 | 58 | 25 | Stage 9Agordo - Passo Fedaia (35.0km) | 35.0km |
| 22-06 | 8 | 23 | Stage 8Rosà - Falcade (134.0km) | 134.0km |
| 21-06 | 64 | 33 | Stage 7Dimaro Folgarida - Levico Terme (153.0km) | 153.0km |
| 20-06 | 48 | 35 | Stage 6Aprica - Aprica (94.0km) | 94.0km |
| 19-06 | 33 | 37 | Stage 5Sorbolo - Passo Maniva (155.0km) | 155.0km |
| 17-06 | 21 | 41 | Stage 4Buonconvento - Vetta Amiata (163.0km) | 163.0km |
| 16-06 | 79 | 81 | Stage 3Sesto Fiorentino - Gaiole in Chianti (145.0km) | 145.0km |
| 15-06 | 90 | 41 | Stage 2Bagno di Romagna - Pescia (174.0km) | 174.0km |
| 14-06 | 84 | 21 | Stage 1Riccione - Santa Sofia (143.0km) | 143.0km |
| 13-06 | 22 | 22 | PrologueRiccione - Riccione (3.0km) | 3.0km |
| 02-06 | 108 | | Paris-Roubaix Espoirs (1.2U) | |
| | | A Travers les Hauts de France (2.2) |
| 35 | | Klassement |
| 26-05 | 37 | 35 | Stage 3Petite-Forêt - Pecquencourt (188.0km) | 188.0km |
| 25-05 | 24 | 45 | Stage 2Seclin - Bonningues-lès-Calais (197.0km) | 197.0km |
| 24-05 | 79 | 97 | Stage 1Gavrelle - Épinoy (125.0km) | 125.0km |
| | | Tour d'Eure-et-Loir (2.2) |
| 55 | | Klassement |
| 19-05 | 81 | 55 | Stage 3Châteauneuf-en-Thymerais - Chartres (192.0km) | 192.0km |
| 18-05 | 51 | 56 | Stage 2Maintenon - Authon-du-Perche (188.0km) | 188.0km |
| 20-04 | DNF | | Liège - Bastogne - Liège U23 (1.2U) | 171.0km |
| | | Volta ao Alentejo (2.2) |
| 31 | | Klassement |
| 24-03 | 41 | 31 | Stage 6Portalegre - Évora (152.0km) | 152.0km |
| 23-03 | 26 | 28 | Stage 4Ponte de Sor - Portalegre (74.0km) | 74.0km |
| 23-03 | 88 | 33 | Stage 5Castelo de Vide - Castelo de Vide (8.0km) | 8.0km |
| 22-03 | 52 | 38 | Stage 3Santiago do Cacém - Mora (176.0km) | 176.0km |
| 21-03 | 40 | 40 | Stage 2Mértola - Odemira (182.0km) | 182.0km |
| 20-03 | 32 | 34 | Stage 1Montemor-o-Novo - Moura (208.0km) | 208.0km |
| 17-03 | 32 | | Classica da Arrabida - Cyclin'Portugal (1.2) | |
| 02-02 | 19 | | UCI Cyclo-cross World Championships Bogense U23 (CM) | |
| 27-01 | 32 | | Telenet UCI Cyclo-cross World Cup Hoogerheide U23 (CDM) | |
| 13-01 | 5 | | British National Championships (CN) | |
| 06-01 | 4 | | British National Trophy Series #6 - Shrewsbury (C2) | |
| 01-01 | 8 | | DVV verzekeringen trofee - GP Sven Nys U23 (C1) | |