| Stage Characteristics | ||||
|---|---|---|---|---|
| StagesStages | DateDate | CourseCourse | WinnerWinner | TypeType |
| 1. | 5 July | Lille to Lille |
|
Flat |
| 2. | 6 July | Lauwin-Planque to Boulogne-sur-Mer |
|
Hilly |
| 3. | 7 July | Valenciennes to Dunkirk |
|
Flat |
| 4. | 8 July | Amiens to Rouen |
|
Hilly |
| 5. | 9 July | Caen to Caen |
|
Individual Time Trial |
| 6. | 10 July | Bayeux to Vire Normandie |
|
Hilly |
| 7. | 11 July | Saint-Malo to Guerlédan |
|
Hilly |
| 8. | 12 July | Saint-Méen-le-Grand to Laval |
|
Flat |
| 9. | 13 July | Chinon to Châteauroux |
|
Flat |
| 10. | 14 July | Ennezat to Mont-Dore |
|
Mountain |
| 11. | 16 July | Toulouse to Toulouse |
|
Flat |
| 12. | 17 July | Auch to Hautacam |
|
Mountain |
| 13. | 18 July | Loudenvielle to Peyragudes |
|
Mountain Time Trial |
| 14. | 19 July | Pau to Superbagnères |
|
Mountain |
| 15. | 20 July | Muret to Carcassonne |
|
Hilly |
| 16. | 22 July | Montpellier to Mont Ventoux |
|
Mountain |
| 17. | 23 July | Bollène to Valence |
|
Flat |
| 18. | 24 July | Vif to Courchevel |
|
Mountain |
| 19. | 25 July | Albertville to La Plagne |
|
Mountain |
| 20. | 26 July | Nantua to Pontarlier |
|
Hilly |
| 21. | 27 July | Mantes-la-Ville to Paris |
|
Flat |
| General Classification | |||
|---|---|---|---|
| RankRank | RiderRider | TimeTime | |
Tobias Halland Johannessen |
4 + 20' 14" |
||
Tadej Pogačar |
9 76h 00' 32" |
||
Jonas Vingegaard |
8 + 4' 24" |
||
Ben Healy |
1 + 28' 02" |
||
Kévin Vauquelin |
3 + 22' 35" |
||
Florian Lipowitz |
7 + 11' 00" |
||
Oscar Onley |
6 + 12' 12" |
||
Felix Gall |
5 + 17' 12" |
||
Jordan Jegat |
0 + 32' 42" |
||
Primož Roglič |
2 + 25' 30" |
||
| Points Classification | |||
|---|---|---|---|
| RankRank | RiderRider | PointsPoints | |
Jonathan Milan |
372 | ||
Biniam Girmay |
232 | ||
Tim Merlier |
156 | ||
Wout van Aert |
138 | ||
Anthony Turgis |
182 | ||
Jonas Abrahamsen |
173 | ||
Quinn Simmons |
123 | ||
Tadej Pogačar |
294 | ||
Kaden Groves |
125 | ||
Jonas Vingegaard |
182 | ||
| Stage Characteristics | ||||
|---|---|---|---|---|
| StagesStages | DateDate | CourseCourse | WinnerWinner | TypeType |
| 1. | 29 June | Florence → Rimini ![]() |
Hilly stage | |
| 2. | 30 June | Cesenatico → Bologna ![]() |
Hilly stage | |
| 3. | 1 July | Piacenza → Turin ![]() |
Flat stage | |
| 4. | 2 July | Pinerolo → Valloire ![]() |
Mountain stage | |
| 5. | 3 July | Saint-Jean-de-Maurienne → Saint-Vulbas | |
Flat stage |
| 6. | 4 July | Mâcon → Dijon | Flat stage | |
| 7. | 5 July | Nuits-Saint-Georges → Gevrey-Chambertin | Individual Time Trial | |
| 8. | 6 July | Semur-en-Auxois → Colombey-les-Deux-Églises | Flat stage | |
| 9. | 7-8 July | Troyes → Troyes / Orléans | Hilly Stage | |
| 10. | 9 July | Orléans → Saint-Amand-Montrond | Flat stage | |
| 11. | 10 July | Évaux-les-Bains → Le Lioran | Mountain Stage | |
| 12. | 11 July | Aurillac → Villeneuve-sur-Lot | Flat stage | |
| 13. | 12 July | Agen → Pau | Flat stage | |
| 14. | 13 July | Pau → Saint-Lary-Soulan (Pla d'Adet) | Mountain stage | |
| 15. | 14-15 July | Loudenvielle → Plateau de Beille / Gruissan | Mountain stage | |
| 16. | 16 July | Gruissan → Nîmes | Flat stage | |
| 17. | 17 July | Saint-Paul-Trois-Châteaux → SuperDévoluy | Mountain stage | |
| 18. | 18 July | Gap → Barcelonnette | Hilly stage | |
| 19. | 19 July | Embrun → Isola 2000 | Mountain stage | |
| 20. | 20 July | Nice → Col de la Couillole | Mountain stage | |
| 21. | 21 July | Monaco → Nice | Individual Time Trial | |
| General Classification | |||
|---|---|---|---|
| RankRank | RiderRider | TimeTime | |
Tadej Pogačar |
+ 0' 83h 38' 56" |
||
Remco Evenepoel |
+ 11' + 9' 18" |
||
Jonas Vingegaard |
+ 1' + 6' 17" |
||
Derek Gee |
+ 27' 21" | ||
Matteo Jorgenson |
+ 26' 34" | ||
João Almeida |
+ 19' 03" | ||
Carlos Rodríguez |
+ 25' 04" | ||
Mikel Landa |
+ 20' 06" | ||
Adam Yates |
+ 24' 07" | ||
Santiago Buitrago |
+ 29' 03" | ||
| Points Classification | |||
|---|---|---|---|
| RankRank | RiderRider | PointsPoints | |
Tadej Pogačar |
196 | ||
Jonas Abrahamsen |
149 | ||
Anthony Turgis |
180 | ||
Bryan Coquard |
208 | ||
Biniam Girmay |
387 | ||
Jonas Vingegaard |
136 | ||
Jasper Philipsen |
354 | ||
Remco Evenepoel |
152 | ||
Arnaud De Lie |
161 | ||
Wout van Aert |
152 | ||