02.09 › 09.092-9/9 | | | | Ovo Energy Tour of Britain (2.HC) | | | | more |
| 42 | | | Mountains classificationMountains classification | | | | |
| 86 | | | General classificationGeneral classification | | | | |
09.09 | 84 | | | S8Stage 8 - London › London | 77 | | | |
08.09 | 65 | 88 | | S7Stage 7 - West Bridgford › Mansfield | 215.6 | | | |
07.09 | 94 | 92 | | S6Stage 6 - Barrow-in-Furness › Whinlatter Pass | 168.3 | | | |
06.09 | 10 | 89 | | S5 (TTT)Stage 5 (TTT) - Cockermouth › Whinlatter Pass | 14 | | | |
05.09 | 92 | 88 | | S4Stage 4 - Nuneaton › Royal Leamington Spa | 183.5 | | | |
04.09 | 95 | 88 | | S3Stage 3 - Bristol › Bristol | 127.2 | | | |
03.09 | 76 | 81 | | S2Stage 2 - Cranbrook › Barnstaple | 174.9 | | | |
02.09 | 117 | 110 | | S1Stage 1 - Pembrey Country Park › Newport | 174.8 | | | |
01.08 › 05.081-5/8 | | | | Tour Alsace (2.2) | | | | more |
| 19 | | | Mountains classificationMountains classification | | | | |
| 26 | | | Points classificationPoints classification | | | | |
| 111 | | | General classificationGeneral classification | | | | |
05.08 | 110 | | | S4Stage 4 - Riedisheim › Dannemarie | 145.6 | | | |
04.08 | 110 | 118 | | S3Stage 3 - Ribeauvillé › Station du Lac Blanc | 165.3 | | | |
03.08 | 131 | 126 | | S2Stage 2 - Vesoul › La Planche des Belles Filles | 143.1 | | | |
02.08 | 13 | 16 | | S1Stage 1 - Champ de Feu › Sélestat | 147.5 | | | |
01.08 | 2 | 4 | | ProloguePrologue - Sausheim › Sausheim | 4.7 | 4 | 1 | |
01.07 | 24 | | | National Championships Great Britain ME - Road Race (NC) | 185.6 | | | more |
28.06 | DNS | | | National Championships Great Britain U23 - ITT (NC) | 28.6 | | | more |
07.06 › 10.067-10/6 | | | | Ronde de l'Oise (2.2) | | | | more |
| 5 | | | Youth classificationYouth classification | | | | |
| 28 | | | Mountains classificationMountains classification | | | | |
| 16 | | | Points classificationPoints classification | | | | |
| 11 | | | General classificationGeneral classification | | | | |
10.06 | 22 | | | S4Stage 4 - Lacroix-Saint-Ouen › Beauvais | 181.7 | | | |
09.06 | 4 | 7 | | S3Stage 3 - Morienval › Nanteuil-le-Haudouin | 174.7 | | | |
08.06 | 16 | 16 | | S2Stage 2 - Andeville › Ribécourt-Dreslincourt | 208.2 | | | |
07.06 | 24 | 25 | | S1Stage 1 - Breteuil › Liancourt | 131.1 | | | |
31.05 › 03.0631-3/5 | | | | Grand Prix Priessnitz spa (2.Ncup) | | | | more |
| 24 | | | Mountains classificationMountains classification | | | | |
| 104 | | | General classificationGeneral classification | | | | |
03.06 | 101 | | | S3Stage 3 - Jeseník › Jeseník | 158 | | | |
02.06 | 102 | 111 | | S2Stage 2 - Krnov › Dlouhé stráně | 148.9 | | | |
01.06 | 115 | 115 | | S1Stage 1 - Jeseník › Rýmařov | 133 | | | |
31.05 | 16 | 16 | | ProloguePrologue - Krnov › Krnov | 2 | | | |
18.05 › 20.0518-20/5 | | | | A Travers Les Hauts De France - Trophee Paris-Arras Tour (2.2) | | | | more |
| 22 | | | Youth classificationYouth classification | | | | |
| 41 | | | General classificationGeneral classification | | | | |
20.05 | 58 | | | S3Stage 3 - Hermies › Arras | 192.6 | | | |
19.05 | 54 | 52 | | S2Stage 2 - Lens › Liévin | 189.6 | | | |
18.05 | 73 | 74 | | S1Stage 1 - Le Cateau-Cambrésis › Villers-lès-Cagnicourt | 121.7 | | | |
09.05 › 13.059-13/5 | | | | Flèche du Sud (2.2) | | | | more |
| 46 | | | Youth classificationYouth classification | | | | |
| 108 | | | General classificationGeneral classification | | | | |
13.05 | 114 | | | S5Stage 5 - Esch/Alzette › Esch/Alzette | 152.1 | | | |
12.05 | 108 | 110 | | S4Stage 4 - Roeser › Roeser | 147.5 | | | |
11.05 | 101 | 116 | | S3Stage 3 - Wincrange › Wincrange | 137.5 | | | |
10.05 | 124 | 118 | | S2Stage 2 - Rumelange › Rumelange | 151.1 | | | |
09.05 | 82 | 82 | | S1Stage 1 - Berbourg › Berbourg | 78.5 | | | |
14.04 | DNF | | | Commonwealth Games ME - Road Race (JR) | 169.8 | | | more |