
2024 Tour | 2026 Tour | Teams & riders presentation photos, list of stages, start list, organizer's 2025 Tour description | Tour de France database
Stage 1
| Stage 2 | Stage 3 | Stage 4 | Stage 5
| Stage 6 | Stage 7 | Stage 8 | Stage 9 | Stage 10 | Rest Day 1 | Stage 11 | Stage 12 | Stage 13 | Stage 14 | Stage 15 | Rest Day 2 | Stage 16 | Stage 17 | Stage 18 | Stage 19 | Stage 20 | Stage 21

Map of the 2025 Tour de France. 3,338.8 km
Sunday, July 27: 21st & Final Stage, Mantes-la Ville - Paris/Champ-Elysées, 132.3 km
Stage 21 map & profile | Stage 21 photos

Wout van Aert masterfully wins the 2025 Tour de France's final stage. Photo: ASO/Billy Ceusters
Bill & Carol McGann's book The Story of the Tour de France, Vol 1: 1903 - 1975 is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Rated ascents
Weather at the finish city of Paris at 2:20 PM, local time: 22C (71F), mostly cloudy, with the wind from the northwest at 14 km/hr (9 mph). There is a 10% chance of rain, rising to 24% at 4:00 PM.
In fact heavy rain did come later in the stage.
The stage: Tour boss Christian Prudhomme writes: A return to both tradition and to the Champs-Élysées... after Nice stepped in for the capital during the Olympics last summer, the Tour will return to Paris. And we’ll be celebrating the fiftieth anniversary of both the first finish on the Champs-Élysées and Bernard Thévenet’s first overall victory. That was in 1975. Happy anniversary!
Note: This will not be the traditional pan-flat final stage (as in 2023) with 8 laps up and down the Champ Elysées and a final sprinters' drag race. This year there will be three trips over to the 4th-category Côte de la Butte Montmartre.
Early in the stage it was raining on the finish line. Because of this, the race organizer posted this: Due to the weather conditions, the general classification times will be taken at the 4th crossing of the finish line, 50.3 km from the finish - i.e. before the three laps featuring the Côte de la Butte Montmartre.
The race: The neutralized start was at 4:10 PM.
Here's the race organizer's stage 21 summary:
The inclusion of the Côte de la Butte Montmartre in the finale of stage 21 delivered exhilarating racing in the rain. Clad in the Maillot Jaune, Tadej Pogacar (UAE Team Emirates-XRG) attacked on all three ascents… but he couldn’t respond when Wout van Aert (Visma-Lease a Bike) countered atop the final climb. Already a winner on the Champs-Élysées in 2021, the Belgian all-rounder takes his 10th Tour stage victory - the first since the time trial at Rocamadour in 2022, exactly 1,100 days ago.
Pogacar eventually crossed the line 4th and celebrated a new overall triumph, after having ruled the 2020, 2021, and 2024 editions. He also dominates the KOM standings for the third time (2020, 2021). Jonas Vingegaard (Visma-Lease a Bike) and Florian Lipowitz (Red Bull-Bora-Hansgrohe) complete the podium, with the German youngster also claiming the white jersey. Jonathan Milan (Lidl-Trek) wins the points classification in his maiden Tour participation.

The start line for the 2025 Tour de France's final stage.
The race:
The moveable feast is finally reaching Paris! After 3 169,7 km of in-race effort, a 160-man peloton start from Mantes-la-Ville for a final stage that promises fireworks. The riders not only eye a prestigious win on the Champs-Élysées - the 50th in Tour history -, they’re also headed for a spectacular celebration with the inclusion of the Côte de la Butte Montmartre to be tackled three times in the finale of the stage.

A little celebration was certainly in order.
A parade and a neutralisation
After due celebrations, Tadej Pogacar and his six UAE Emirates-XRG teammates go first on the Champs-Élysées (km 61.6). They are in for three laps on the 6.8-km circuit that traditionally concludes the Tour de France. And then, they’ll cover three more laps on a new 16.8-km circuit featuring Montmartre.
Due to the wet conditions making the roads slippery, it has been decided, in accordance with the commissaires of the UCI and representatives of teams and riders, to stop the time at the 4th passage on the finish line - i.e. before the three laps featuring the Côte de la Butte Montmartre.
Attacks fly as soon as the riders pass the line. Magnus Cort (Uno-X Mobility) is the first to open a gap, with 69 kilometres to go. But he’s quickly reeled in due to the flurry of attacks.

Here's Pogacar resplendent in yellow before the rain fell. Photo by John Pierce, PhotoSport International UK, USA, Asia, All rights retained ©
Alaphilippe and Pogacar set the race on fire
Jonathan Milan (Lidl-Trek) honours his green jersey with yet another victory in the intermediate sprint (56.4 km to go). Then his teammate Quinn Simmons sets off and Florian Lipowitz (Red Bull-Bora-Hansgrohe) joins him at the front. They are a handful of seconds ahead of the bunch as they cross the finish line for the fourth time. The duo are caught with 44 km to go.
Tudor drive the peloton towards the first climb of Côte de la Butte Montmartre. Julian Alaphilippe sets off to the delight of the crowds. He is followed by Arnaud De Lie… and Tadej Pgoacar, who goes first over the top! The battle is in full swing and there are less than 30 riders at the front for the last two laps.

20 km to go, on the summit of the Côte de la Butte Montmartre: Tadej Pogacar, Matteo Jorgenson, Wout van Aert, Matteo Trentin, Davide Ballerini & Matej Mohoric are 12 second ahead of the the group behind.
Pogacar insists, Van Aert counters
The Maillot Jaune attacks again again on the second ascent of Montmartre. Four riders manage to follow him at the summit (22.8km to go): Davide Ballerini (XDS Astana), Matteo Jorgenson, Wout van Aert (Visma-Lease a Bike) and Matteo Trentin (Tudor). Matej Mohoric (Bahrain Victorious) joins them on the downhill to make it a 6-man group leading the way into the final lap (16.8km to go).

The lead group with 10km to go: Matteo Jorgenson attacks up the side of the road. A little later Wout van Aert with Pogacar on his wheel. Van Aert dropped Pogacar!
Onto the final ascent, Pogacar accelerates again… but Van Aert counter-attacks inside the last 300 metres, dropping everyone. The Belgian soloes to the finish, taking victory 19 seconds ahead of Ballerini, Mohoric, and Pogacar, in that order. The Slovenian claims his fourth Tour de France stage win. Jonas Vingegaard (2nd in the overall standings), Florian Lipowitz (3rd overall and white jersey), and Jonathan Milan (green jersey) also secure their prizes after three weeks of competition.
Complete results:
Because of the rain, all the riders were given the same time.
132.3 kilometers raced at an average speed of 42.336 km/hr
| 1 | Wout van Aert | Team Visma | Lease a Bike | 2hr 5min 33sec |
| 2 | Davide Ballerini | XDS Astana Team | s.t. |
| 3 | Matej Mohoric | Bahrain Victorious | s.t. |
| 4 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 6 | Matteo Trentin | Tudor Pro Cycling Team | s.t. |
| 7 | Arnaud De Lie | Lotto | s.t. |
| 8 | Kévin Vauquelin | Arkea-B&B Hotels | s.t. |
| 9 | Mike Teunissen | XDS Astana Team | s.t. |
| 10 | Dylan Teuns | Cofidis | s.t. |
| 11 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 12 | Tobias Lund Andresen | Team Picnic PostNL | s.t. |
| 13 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 14 | Alex Aranburu | Cofidis | s.t. |
| 15 | Neilson Powless | EF Education-EasyPost | s.t. |
| 16 | Jonas Abrahamsen | Uno-X Mobility | s.t. |
| 17 | Valentin Paret-Peintre | Soudal Quick-Step | s.t. |
| 18 | Clément Russo | Groupama-FDJ | s.t. |
| 19 | Julian Alaphilippe | Tudor Pro Cycling Team | s.t. |
| 20 | Axel Laurance | INEOS Grenadiers | s.t. |
| 21 | Victor Campenaerts | Team Visma | Lease a Bike | s.t. |
| 22 | Fred Wright | Bahrain Victorious | s.t. |
| 23 | Bastien Tronchon | Decathlon AG2R La Mondiale | s.t. |
| 24 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | s.t. |
| 25 | Jenno Berckmoes | Lotto | s.t. |
| 26 | Jasper Stuyven | Lidl-Trek | s.t. |
| 27 | Pavel Bittner | Team Picnic PostNL | s.t. |
| 28 | Matis Louvel | Israel-Premier Tech | s.t. |
| 29 | Pascal Eenkhoorn | Soudal Quick-Step | s.t. |
| 30 | Lewis Askey | Groupama-FDJ | s.t. |
| 31 | Jake Stewart | Israel-Premier Tech | s.t. |
| 32 | Toms Skujins | Lidl-Trek | s.t. |
| 33 | Guillaume Boivin | Israel-Premier Tech | s.t. |
| 34 | Krists Neilands | Israel-Premier Tech | s.t. |
| 35 | Sean Flynn | Team Picnic PostNL | s.t. |
| 36 | Iván García Cortina | Movistar Team | s.t. |
| 37 | Geraint Thomas | INEOS Grenadiers | s.t. |
| 38 | Thomas Gachignard | Team TotalEnergies | s.t. |
| 39 | Alexandre Delettre | Team TotalEnergies | s.t. |
| 40 | Kasper Asgreen | EF Education-EasyPost | s.t. |
| 41 | Jonathan Milan | Lidl-Trek | s.t. |
| 42 | Connor Swift | INEOS Grenadiers | s.t. |
| 43 | Valentin Madouas | Groupama-FDJ | s.t. |
| 44 | Guillaume Martin-Guyonnet | Groupama-FDJ | s.t. |
| 45 | Luka Mezgec | Team Jayco-AlUla | s.t. |
| 46 | Dylan Groenewegen | Team Jayco-AlUla | s.t. |
| 47 | Robert Stannard | Bahrain Victorious | s.t. |
| 48 | Ion Izagirre | Cofidis | s.t. |
| 49 | Clément Venturini | Arkea-B&B Hotels | s.t. |
| 50 | Warren Barguil | Team Picnic PostNL | s.t. |
| 51 | Jordi Meeus | Red Bull-BORA-hansgrohe | s.t. |
| 52 | Florian Lipowitz | Red Bull-BORA-hansgrohe | s.t. |
| 53 | Arnaud Démare | Arkea-B&B Hotels | s.t. |
| 54 | Tobias Foss | INEOS Grenadiers | s.t. |
| 55 | Marco Haller | Tudor Pro Cycling Team | s.t. |
| 56 | Marius Mayrhofer | Tudor Pro Cycling Team | s.t. |
| 57 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 58 | Thymen Arensman | INEOS Grenadiers | s.t. |
| 59 | Joe Blackmore | Israel-Premier Tech | s.t. |
| 60 | Nelson Oliveira | Movistar Team | s.t. |
| 61 | Jordan Jegat | Team TotalEnergies | s.t. |
| 62 | Lenny Martinez | Bahrain Victorious | s.t. |
| 63 | Oliver Naesen | Decathlon AG2R La Mondiale | s.t. |
| 64 | Stian Fredheim | Uno-X Mobility | s.t. |
| 65 | Bert Van Lerberghe | Soudal Quick-Step | s.t. |
| 66 | Xandro Meurisse | Alpecin-Deceuninck | s.t. |
| 67 | Alexis Renard | Cofidis | s.t. |
| 68 | Romain Grégoire | Groupama-FDJ | s.t. |
| 69 | Mathis Le Berre | Arkea-B&B Hotels | s.t. |
| 70 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 71 | Laurence Pithie | Red Bull-BORA-hansgrohe | s.t. |
| 72 | Mick van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 73 | Damien Touzé | Cofidis | s.t. |
| 74 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 75 | Ilan Van Wilder | Soudal Quick-Step | s.t. |
| 76 | Brent Van Moer | Lotto | s.t. |
| 77 | Max Schachmann | Soudal Quick-Step | s.t. |
| 78 | Frank van den Broek | Team Picnic PostNL | s.t. |
| 79 | Oscar Onley | Team Picnic PostNL | s.t. |
| 80 | William Barta | Movistar Team | s.t. |
| 81 | Tiesj Benoot | Team Visma | Lease a Bike | s.t. |
| 82 | Phil Bauhaus | Bahrain Victorious | s.t. |
| 83 | Marc Hirschi | Tudor Pro Cycling Team | s.t. |
| 84 | Markus Hoelgaard | Uno-X Mobility | s.t. |
| 85 | Adam Yates | UAE Team Emirates-XRG | s.t. |
| 86 | Jonas Rutsch | Intermarché-Wanty | s.t. |
| 87 | Anders Halland Johannessen | Uno-X Mobility | s.t. |
| 88 | Tobias Halland Johannessen | Uno-X Mobility | s.t. |
| 89 | Vincenzo Albanese | EF Education-EasyPost | s.t. |
| 90 | Gianni Vermeersch | Alpecin-Deceuninck | s.t. |
| 91 | Pascal Ackermann | Israel-Premier Tech | s.t. |
| 92 | Niklas Märkl | Team Picnic PostNL | s.t. |
| 93 | Tim Wellens | UAE Team Emirates-XRG | s.t. |
| 94 | Nils Politt | UAE Team Emirates-XRG | s.t. |
| 95 | Simone Velasco | XDS Astana Team | s.t. |
| 96 | Sam Watson | INEOS Grenadiers | s.t. |
| 97 | Emiel Verstrynge | Alpecin-Deceuninck | s.t. |
| 98 | Primoz Roglic | Red Bull-BORA-hansgrohe | s.t. |
| 99 | Alberto Dainese | Tudor Pro Cycling Team | s.t. |
| 100 | Edoardo Affini | Team Visma | Lease a Bike | s.t. |
| 101 | Sébastien Grignard | Lotto | s.t. |
| 102 | Tim Naberman | Team Picnic PostNL | s.t. |
| 103 | Clément Berthet | Decathlon AG2R La Mondiale | s.t. |
| 104 | Pavel Sivakov | UAE Team Emirates-XRG | s.t. |
| 105 | Jonas Rickaert | Alpecin-Deceuninck | s.t. |
| 106 | Eduardo Sepulveda | Lotto | s.t. |
| 107 | Luke Durbridge | Team Jayco-AlUla | s.t. |
| 108 | Elmar Reinders | Team Jayco-AlUla | s.t. |
| 109 | Simon Yates | Team Visma | Lease a Bike | s.t. |
| 110 | Amaury Capiot | Arkea-B&B Hotels | s.t. |
| 111 | Cristian Rodriguez | Arkea-B&B Hotels | s.t. |
| 112 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 113 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 114 | Jhonatan Narvaez | UAE Team Emirates-XRG | s.t. |
| 115 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 116 | Einer Rubio | Movistar Team | s.t. |
| 117 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 118 | Bruno Armirail | Decathlon AG2R La Mondiale | s.t. |
| 119 | Paul Penhoët | Groupama-FDJ | s.t. |
| 120 | Quentin Pacher | Groupama-FDJ | s.t. |
| 121 | Fabian Lienhard | Tudor Pro Cycling Team | s.t. |
| 122 | Silvan Dillier | Alpecin-Deceuninck | s.t. |
| 123 | Vito Braet | Intermarché-Wanty | s.t. |
| 124 | Laurenz Rex | Intermarché-Wanty | s.t. |
| 125 | Quinn Simmons | Lidl-Trek | s.t. |
| 126 | Alexey Lutsenko | Israel-Premier Tech | s.t. |
| 127 | Sergio Higuita | XDS Astana Team | s.t. |
| 128 | Raúl García | Arkea-B&B Hotels | s.t. |
| 129 | Roel van Sintmaartensdijk | Intermarché-Wanty | s.t. |
| 130 | Tim Merlier | Soudal Quick-Step | s.t. |
| 131 | Mauro Schmid | Team Jayco-AlUla | s.t. |
| 132 | Lucas Plapp | Team Jayco-AlUla | s.t. |
| 133 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 134 | Gregor Mühlberger | Movistar Team | s.t. |
| 135 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 136 | Emanuel Buchmann | Cofidis | s.t. |
| 137 | Jarrad Drizners | Lotto | s.t. |
| 138 | Callum Scotson | Decathlon AG2R La Mondiale | s.t. |
| 139 | Mathieu Burgaudeau | Team TotalEnergies | s.t. |
| 140 | Clément Champoussin | XDS Astana Team | s.t. |
| 141 | Hugo Page | Intermarché-Wanty | s.t. |
| 142 | Louis Barré | Intermarché-Wanty | s.t. |
| 143 | Ewen Costiou | Arkea-B&B Hotels | s.t. |
| 144 | Harry Sweeny | EF Education-EasyPost | s.t. |
| 145 | Michael Valgren | EF Education-EasyPost | s.t. |
| 146 | Ben Healy | EF Education-EasyPost | s.t. |
| 147 | Alex Baudin | EF Education-EasyPost | s.t. |
| 148 | Anthony Turgis | Team TotalEnergies | s.t. |
| 149 | Mattéo Vercher | Team TotalEnergies | s.t. |
| 150 | Harold Tejada | XDS Astana Team | s.t. |
| 151 | Iván Romeo | Movistar Team | s.t. |
| 152 | Benjamin Thomas | Cofidis | s.t. |
| 153 | Michael Woods | Israel-Premier Tech | s.t. |
| 154 | Magnus Cort | Uno-X Mobility | s.t. |
| 155 | Kamil Gradek | Bahrain Victorious | s.t. |
| 156 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 157 | Edward Theuns | Lidl-Trek | s.t. |
| 158 | Simone Consonni | Lidl-Trek | s.t. |
| 159 | Pablo Castrillo | Movistar Team | s.t. |
| 160 | Thibau Nys | Lidl-Trek | s.t. |
Final GC after stage 21:
For full results of the other classifications, click on the links just below:
3,298.6 kilometers raced at an average speed of 43.398 km/hr
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 76hr 0min 32sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 24sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 11:09 |
| 4 | Oscar Onley | Team Picnic PostNL | 12:12 |
| 5 | Felix Gall | Decathlon AG2R La Mondiale | 17:12 |
| 6 | Tobias Halland Johannessen | Uno-X Mobility | 20:14 |
| 7 | Kévin Vauquelin | Arkea-B&B Hotels | 22:35 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | 25:30 |
| 9 | Ben Healy | EF Education-EasyPost | 28:02 |
| 10 | Jordan Jegat | Team TotalEnergies | 32:42 |
| 11 | Ben O'Connor | Team Jayco-AlUla | 34:34 |
| 12 | Thymen Arensman | INEOS Grenadiers | 52:41 |
| 13 | Jhonatan Narvaez | UAE Team Emirates-XRG | 1:04:36 |
| 14 | Sergio Higuita | XDS Astana Team | 1:08:19 |
| 15 | Simon Yates | Team Visma | Lease a Bike | 1:17:30 |
| 16 | Guillaume Martin-Guyonnet | Groupama-FDJ | 1:18:07 |
| 17 | Sepp Kuss | Team Visma | Lease a Bike | 1:20:24 |
| 18 | Gregor Mühlberger | Movistar Team | 1:28:17 |
| 19 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:29:28 |
| 20 | Cristian Rodriguez | Arkea-B&B Hotels | 1:36:15 |
| 21 | Valentin Madouas | Groupama-FDJ | 1:39:46 |
| 22 | Xandro Meurisse | Alpecin-Deceuninck | 1:43:46 |
| 23 | Warren Barguil | Team Picnic PostNL | 1:48:09 |
| 24 | Adam Yates | UAE Team Emirates-XRG | 1:48:41 |
| 25 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | 2:12:52 |
| 26 | Raúl García | Arkea-B&B Hotels | 2:15:58 |
| 27 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 2:16:15 |
| 28 | Victor Campenaerts | Team Visma | Lease a Bike | 2:20:36 |
| 29 | Marc Soler | UAE Team Emirates-XRG | 2:21:01 |
| 30 | Emanuel Buchmann | Cofidis | 2:21:34 |
| 31 | Einer Rubio | Movistar Team | 2:21:56 |
| 32 | Ilan Van Wilder | Soudal Quick-Step | 2:23:14 |
| 33 | Callum Scotson | Decathlon AG2R La Mondiale | 2:25:40 |
| 34 | Romain Grégoire | Groupama-FDJ | 2:25:58 |
| 35 | Harry Sweeny | EF Education-EasyPost | 2:27:58 |
| 36 | Clément Berthet | Decathlon AG2R La Mondiale | 2:32:50 |
| 37 | Tim Wellens | UAE Team Emirates-XRG | 2:38:24 |
| 38 | Simone Velasco | XDS Astana Team | 2:41:31 |
| 39 | Frank van den Broek | Team Picnic PostNL | 2:45:44 |
| 40 | Santiago Buitrago | Bahrain Victorious | 2:45:48 |
| 41 | Valentin Paret-Peintre | Soudal Quick-Step | 2:47:05 |
| 42 | Michael Storer | Tudor Pro Cycling Team | 2:50:51 |
| 43 | Clément Venturini | Arkea-B&B Hotels | 2:52:39 |
| 44 | Harold Tejada | XDS Astana Team | 2:54:34 |
| 45 | Quentin Pacher | Groupama-FDJ | 2:56:00 |
| 46 | Alex Baudin | EF Education-EasyPost | 2:56:15 |
| 47 | Neilson Powless | EF Education-EasyPost | 2:58:52 |
| 48 | Joe Blackmore | Israel-Premier Tech | 2:59:04 |
| 49 | Pascal Eenkhoorn | Soudal Quick-Step | 3:00:25 |
| 50 | Bruno Armirail | Decathlon AG2R La Mondiale | 3:03:12 |
| 51 | Ewen Costiou | Arkea-B&B Hotels | 3:06:35 |
| 52 | Michael Woods | Israel-Premier Tech | 3:06:59 |
| 53 | Axel Laurance | INEOS Grenadiers | 3:10:10 |
| 54 | Tiesj Benoot | Team Visma | Lease a Bike | 3:10:19 |
| 55 | Alexandre Delettre | Team TotalEnergies | 3:12:28 |
| 56 | Julian Alaphilippe | Tudor Pro Cycling Team | 3:13:20 |
| 57 | Andreas Leknessund | Uno-X Mobility | 3:14:44 |
| 58 | Geraint Thomas | INEOS Grenadiers | 3:14:57 |
| 59 | Quinn Simmons | Lidl-Trek | 3:17:45 |
| 60 | Thomas Gachignard | Team TotalEnergies | 3:23:14 |
| 61 | Mathis Le Berre | Arkea-B&B Hotels | 3:25:28 |
| 62 | Jasper Stuyven | Lidl-Trek | 3:26:11 |
| 63 | Mathieu Burgaudeau | Team TotalEnergies | 3:26:18 |
| 64 | Markus Hoelgaard | Uno-X Mobility | 3:26:29 |
| 65 | Emiel Verstrynge | Alpecin-Deceuninck | 3:28:01 |
| 66 | Jenno Berckmoes | Lotto | 3:33:12 |
| 67 | Wout van Aert | Team Visma | Lease a Bike | 3:34:06 |
| 68 | Max Schachmann | Soudal Quick-Step | 3:35:01 |
| 69 | Ion Izagirre | Cofidis | 3:35:02 |
| 70 | Tobias Foss | INEOS Grenadiers | 3:35:15 |
| 71 | Jonas Abrahamsen | Uno-X Mobility | 3:36:21 |
| 72 | Michael Valgren | EF Education-EasyPost | 3:37:01 |
| 73 | Oliver Naesen | Decathlon AG2R La Mondiale | 3:39:28 |
| 74 | Nelson Oliveira | Movistar Team | 3:41:03 |
| 75 | Nils Politt | UAE Team Emirates-XRG | 3:44:45 |
| 76 | Anders Halland Johannessen | Uno-X Mobility | 3:46:02 |
| 77 | Bastien Tronchon | Decathlon AG2R La Mondiale | 3:46:36 |
| 78 | Marc Hirschi | Tudor Pro Cycling Team | 3:48:37 |
| 79 | Lenny Martinez | Bahrain Victorious | 3:49:05 |
| 80 | Mike Teunissen | XDS Astana Team | 3:49:28 |
| 81 | Alex Aranburu | Cofidis | 3:49:29 |
| 82 | Louis Barré | Intermarché-Wanty | 3:51:34 |
| 83 | Marius Mayrhofer | Tudor Pro Cycling Team | 3:53:18 |
| 84 | Brent Van Moer | Lotto | 3:53:19 |
| 85 | Clément Champoussin | XDS Astana Team | 3:53:27 |
| 86 | Kaden Groves | Alpecin-Deceuninck | 3:53:29 |
| 87 | Pavel Sivakov | UAE Team Emirates-XRG | 3:54:19 |
| 88 | Krists Neilands | Israel-Premier Tech | 3:54:25 |
| 89 | Laurence Pithie | Red Bull-BORA-hansgrohe | 3:54:44 |
| 90 | Dylan Teuns | Cofidis | 3:55:48 |
| 91 | Kasper Asgreen | EF Education-EasyPost | 3:58:25 |
| 92 | Alexey Lutsenko | Israel-Premier Tech | 3:59:52 |
| 93 | Clément Russo | Groupama-FDJ | 4:01:44 |
| 94 | Damien Touzé | Cofidis | 4:01:48 |
| 95 | Toms Skujins | Lidl-Trek | 4:04:16 |
| 96 | Tobias Lund Andresen | Team Picnic PostNL | 4:06:51 |
| 97 | Marco Haller | Tudor Pro Cycling Team | 4:09:24 |
| 98 | Jonas Rickaert | Alpecin-Deceuninck | 4:11:17 |
| 99 | Matteo Trentin | Tudor Pro Cycling Team | 4:12:31 |
| 100 | Matis Louvel | Israel-Premier Tech | 4:13:01 |
| 101 | Mauro Schmid | Team Jayco-AlUla | 4:14:00 |
| 102 | William Barta | Movistar Team | 4:20:07 |
| 103 | Gianni Vermeersch | Alpecin-Deceuninck | 4:22:29 |
| 104 | Fred Wright | Bahrain Victorious | 4:22:52 |
| 105 | Gianni Moscon | Red Bull-BORA-hansgrohe | 4:30:56 |
| 106 | Anthony Turgis | Team TotalEnergies | 4:31:58 |
| 107 | Iván Romeo | Movistar Team | 4:33:49 |
| 108 | Jake Stewart | Israel-Premier Tech | 4:36:37 |
| 109 | Connor Swift | INEOS Grenadiers | 4:40:30 |
| 110 | Pablo Castrillo | Movistar Team | 4:42:51 |
| 111 | Paul Penhoët | Groupama-FDJ | 4:44:44 |
| 112 | Niklas Märkl | Team Picnic PostNL | 4:46:23 |
| 113 | Mick van Dijke | Red Bull-BORA-hansgrohe | 4:46:50 |
| 114 | Vincenzo Albanese | EF Education-EasyPost | 4:48:20 |
| 115 | Sam Watson | INEOS Grenadiers | 4:50:14 |
| 116 | Thibau Nys | Lidl-Trek | 4:50:42 |
| 117 | Iván García Cortina | Movistar Team | 4:53:18 |
| 118 | Edoardo Affini | Team Visma | Lease a Bike | 4:54:53 |
| 119 | Alberto Dainese | Tudor Pro Cycling Team | 4:56:31 |
| 120 | Tim Naberman | Team Picnic PostNL | 5:00:03 |
| 121 | Lucas Plapp | Team Jayco-AlUla | 5:02:34 |
| 122 | Eduardo Sepulveda | Lotto | 5:02:54 |
| 123 | Robert Stannard | Bahrain Victorious | 5:03:30 |
| 124 | Mattéo Vercher | Team TotalEnergies | 5:06:33 |
| 125 | Pascal Ackermann | Israel-Premier Tech | 5:09:57 |
| 126 | Matej Mohoric | Bahrain Victorious | 5:10:17 |
| 127 | Lewis Askey | Groupama-FDJ | 5:10:40 |
| 128 | Jonas Rutsch | Intermarché-Wanty | 5:11:07 |
| 129 | Jarrad Drizners | Lotto | 5:11:17 |
| 130 | Magnus Cort | Uno-X Mobility | 5:11:51 |
| 131 | Silvan Dillier | Alpecin-Deceuninck | 5:14:12 |
| 132 | Biniam Girmay | Intermarché-Wanty | 5:14:55 |
| 133 | Pavel Bittner | Team Picnic PostNL | 5:17:44 |
| 134 | Sean Flynn | Team Picnic PostNL | 5:18:13 |
| 135 | Davide Ballerini | XDS Astana Team | 5:20:28 |
| 136 | Amaury Capiot | Arkea-B&B Hotels | 5:22:38 |
| 137 | Luke Durbridge | Team Jayco-AlUla | 5:23:21 |
| 138 | Hugo Page | Intermarché-Wanty | 5:24:23 |
| 139 | Stian Fredheim | Uno-X Mobility | 5:26:41 |
| 140 | Elmar Reinders | Team Jayco-AlUla | 5:28:50 |
| 141 | Laurenz Rex | Intermarché-Wanty | 5:29:16 |
| 142 | Arnaud De Lie | Lotto | 5:29:35 |
| 143 | Vito Braet | Intermarché-Wanty | 5:32:04 |
| 144 | Sébastien Grignard | Lotto | 5:33:48 |
| 145 | Alexis Renard | Cofidis | 5:34:56 |
| 146 | Jonathan Milan | Lidl-Trek | 5:35:35 |
| 147 | Bert Van Lerberghe | Soudal Quick-Step | 5:36:47 |
| 148 | Tim Merlier | Soudal Quick-Step | 5:37:19 |
| 149 | Guillaume Boivin | Israel-Premier Tech | 5:37:44 |
| 150 | Dylan Groenewegen | Team Jayco-AlUla | 5:38:24 |
| 151 | Phil Bauhaus | Bahrain Victorious | 5:39:29 |
| 152 | Luka Mezgec | Team Jayco-AlUla | 5:40:08 |
| 153 | Arnaud Démare | Arkea-B&B Hotels | 5:40:35 |
| 154 | Benjamin Thomas | Cofidis | 5:41:16 |
| 155 | Kamil Gradek | Bahrain Victorious | 5:43:51 |
| 156 | Roel van Sintmaartensdijk | Intermarché-Wanty | 5:44:11 |
| 157 | Fabian Lienhard | Tudor Pro Cycling Team | 5:46:00 |
| 158 | Jordi Meeus | Red Bull-BORA-hansgrohe | 5:48:25 |
| 159 | Edward Theuns | Lidl-Trek | 5:51:25 |
| 160 | Simone Consonni | Lidl-Trek | 5:51:40 |
Climber's competition:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 119 Points |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | 104 |
| 3 | Lenny Martinez | Bahrain Victorious | 97 |
| 4 | Thymen Arensman | INEOS Grenadiers | 85 |
| 5 | Ben O'Connor | Team Jayco-AlUla | 51 |
| 6 | Valentin Paret-Peintre | Soudal Quick-Step | 51 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 46 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | 43 |
| 9 | Oscar Onley | Team Picnic PostNL | 42 |
| 10 | Michael Woods | Israel-Premier Tech | 38 |
| 11 | Ben Healy | EF Education-EasyPost | 37 |
| 12 | Einer Rubio | Movistar Team | 35 |
| 13 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 34 |
| 14 | Bruno Armirail | Decathlon AG2R La Mondiale | 27 |
| 15 | Matteo Jorgenson | Team Visma | Lease a Bike | 25 |
| 16 | Michael Storer | Tudor Pro Cycling Team | 19 |
| 17 | Tobias Halland Johannessen | Uno-X Mobility | 18 |
| 18 | Tim Wellens | UAE Team Emirates-XRG | 13 |
| 19 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 12 |
| 20 | Santiago Buitrago | Bahrain Victorious | 12 |
| 21 | Gregor Mühlberger | Movistar Team | 10 |
| 22 | Victor Campenaerts | Team Visma | Lease a Bike | 10 |
| 23 | Ilan Van Wilder | Soudal Quick-Step | 10 |
| 24 | Tobias Foss | INEOS Grenadiers | 10 |
| 25 | Sepp Kuss | Team Visma | Lease a Bike | 9 |
| 26 | Quinn Simmons | Lidl-Trek | 8 |
| 27 | Kévin Vauquelin | Arkea-B&B Hotels | 7 |
| 28 | Harry Sweeny | EF Education-EasyPost | 6 |
| 29 | Anders Halland Johannessen | Uno-X Mobility | 6 |
| 30 | Simon Yates | Team Visma | Lease a Bike | 5 |
| 31 | Jonas Abrahamsen | Uno-X Mobility | 5 |
| 32 | Alexey Lutsenko | Israel-Premier Tech | 4 |
| 33 | Ewen Costiou | Arkea-B&B Hotels | 4 |
| 34 | Adam Yates | UAE Team Emirates-XRG | 4 |
| 35 | Fred Wright | Bahrain Victorious | 3 |
| 36 | Jordan Jegat | Team TotalEnergies | 3 |
| 37 | Louis Barré | Intermarché-Wanty | 2 |
| 38 | Benjamin Thomas | Cofidis | 2 |
| 39 | Neilson Powless | EF Education-EasyPost | 2 |
| 40 | Julian Alaphilippe | Tudor Pro Cycling Team | 2 |
| 41 | Kaden Groves | Alpecin-Deceuninck | 2 |
| 42 | Lucas Plapp | Team Jayco-AlUla | 2 |
| 43 | Romain Grégoire | Groupama-FDJ | 1 |
| 44 | Andreas Leknessund | Uno-X Mobility | 1 |
| 45 | Mathieu Burgaudeau | Team TotalEnergies | 1 |
| 46 | Wout van Aert | Team Visma | Lease a Bike | 1 |
| 47 | Pavel Sivakov | UAE Team Emirates-XRG | 1 |
| 48 | Kasper Asgreen | EF Education-EasyPost | 1 |
| 49 | Vincenzo Albanese | EF Education-EasyPost | 1 |
| 50 | Mattéo Vercher | Team TotalEnergies | 1 |
| 51 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | 1 |
| 52 | Marc Soler | UAE Team Emirates-XRG | 1 |
| 53 | Marc Hirschi | Tudor Pro Cycling Team | 1 |
| 54 | Mauro Schmid | Team Jayco-AlUla | 1 |
| 55 | Iván Romeo | Movistar Team | 1 |
Points competition:
| 1 | Jonathan Milan | Lidl-Trek | 372 Points |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | 294 |
| 3 | Biniam Girmay | Intermarché-Wanty | 232 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 182 |
| 5 | Anthony Turgis | Team TotalEnergies | 182 |
| 6 | Jonas Abrahamsen | Uno-X Mobility | 173 |
| 7 | Tim Merlier | Soudal Quick-Step | 156 |
| 8 | Wout van Aert | Team Visma | Lease a Bike | 138 |
| 9 | Kaden Groves | Alpecin-Deceuninck | 125 |
| 10 | Quinn Simmons | Lidl-Trek | 123 |
| 11 | Arnaud De Lie | Lotto | 122 |
| 12 | Oscar Onley | Team Picnic PostNL | 115 |
| 13 | Matteo Jorgenson | Team Visma | Lease a Bike | 103 |
| 14 | Ben Healy | EF Education-EasyPost | 97 |
| 15 | Tim Wellens | UAE Team Emirates-XRG | 96 |
| 16 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 84 |
| 17 | Kévin Vauquelin | Arkea-B&B Hotels | 83 |
| 18 | Thymen Arensman | INEOS Grenadiers | 82 |
| 19 | Simone Velasco | XDS Astana Team | 79 |
| 20 | Julian Alaphilippe | Tudor Pro Cycling Team | 74 |
| 21 | Matteo Trentin | Tudor Pro Cycling Team | 74 |
| 22 | Romain Grégoire | Groupama-FDJ | 71 |
| 23 | Davide Ballerini | XDS Astana Team | 68 |
| 24 | Pascal Eenkhoorn | Soudal Quick-Step | 66 |
| 25 | Felix Gall | Decathlon AG2R La Mondiale | 65 |
| 26 | Laurenz Rex | Intermarché-Wanty | 63 |
| 27 | Paul Penhoët | Groupama-FDJ | 61 |
| 28 | Tobias Halland Johannessen | Uno-X Mobility | 59 |
| 29 | Tobias Lund Andresen | Team Picnic PostNL | 59 |
| 30 | Mauro Schmid | Team Jayco-AlUla | 57 |
| 31 | Primoz Roglic | Red Bull-BORA-hansgrohe | 52 |
| 32 | Jordi Meeus | Red Bull-BORA-hansgrohe | 50 |
| 33 | Jordan Jegat | Team TotalEnergies | 45 |
| 34 | Simone Consonni | Lidl-Trek | 45 |
| 35 | Axel Laurance | INEOS Grenadiers | 44 |
| 36 | Simon Yates | Team Visma | Lease a Bike | 43 |
| 37 | Bruno Armirail | Decathlon AG2R La Mondiale | 43 |
| 38 | Mathieu Burgaudeau | Team TotalEnergies | 42 |
| 39 | Phil Bauhaus | Bahrain Victorious | 42 |
| 40 | Lenny Martinez | Bahrain Victorious | 41 |
| 41 | Frank van den Broek | Team Picnic PostNL | 40 |
| 42 | Michael Storer | Tudor Pro Cycling Team | 40 |
| 43 | Ben O'Connor | Team Jayco-AlUla | 39 |
| 44 | Victor Campenaerts | Team Visma | Lease a Bike | 39 |
| 45 | Harry Sweeny | EF Education-EasyPost | 39 |
| 46 | Fred Wright | Bahrain Victorious | 39 |
| 47 | Valentin Paret-Peintre | Soudal Quick-Step | 38 |
| 48 | Thibau Nys | Lidl-Trek | 37 |
| 49 | Jake Stewart | Israel-Premier Tech | 36 |
| 50 | Alberto Dainese | Tudor Pro Cycling Team | 36 |
| 51 | Matej Mohoric | Bahrain Victorious | 36 |
| 52 | Pavel Bittner | Team Picnic PostNL | 34 |
| 53 | Iván García Cortina | Movistar Team | 33 |
| 54 | Pascal Ackermann | Israel-Premier Tech | 33 |
| 55 | Ewen Costiou | Arkea-B&B Hotels | 32 |
| 56 | Brent Van Moer | Lotto | 32 |
| 57 | Iván Romeo | Movistar Team | 31 |
| 58 | Santiago Buitrago | Bahrain Victorious | 30 |
| 59 | Jasper Stuyven | Lidl-Trek | 30 |
| 60 | Anders Halland Johannessen | Uno-X Mobility | 29 |
| 61 | Vincenzo Albanese | EF Education-EasyPost | 28 |
| 62 | Stian Fredheim | Uno-X Mobility | 28 |
| 63 | Lucas Plapp | Team Jayco-AlUla | 27 |
| 64 | Harold Tejada | XDS Astana Team | 26 |
| 65 | Alex Baudin | EF Education-EasyPost | 25 |
| 66 | Jarrad Drizners | Lotto | 25 |
| 67 | Clément Russo | Groupama-FDJ | 24 |
| 68 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | 22 |
| 69 | Mike Teunissen | XDS Astana Team | 22 |
| 70 | Marco Haller | Tudor Pro Cycling Team | 22 |
| 71 | Einer Rubio | Movistar Team | 21 |
| 72 | Ilan Van Wilder | Soudal Quick-Step | 21 |
| 73 | William Barta | Movistar Team | 21 |
| 74 | Kasper Asgreen | EF Education-EasyPost | 20 |
| 75 | Hugo Page | Intermarché-Wanty | 20 |
| 76 | Joe Blackmore | Israel-Premier Tech | 19 |
| 77 | Alexey Lutsenko | Israel-Premier Tech | 19 |
| 78 | Jonas Rickaert | Alpecin-Deceuninck | 19 |
| 79 | Adam Yates | UAE Team Emirates-XRG | 18 |
| 80 | Andreas Leknessund | Uno-X Mobility | 17 |
| 81 | Jhonatan Narvaez | UAE Team Emirates-XRG | 16 |
| 82 | Edward Theuns | Lidl-Trek | 16 |
| 83 | Edoardo Affini | Team Visma | Lease a Bike | 15 |
| 84 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 14 |
| 85 | Quentin Pacher | Groupama-FDJ | 14 |
| 86 | Thomas Gachignard | Team TotalEnergies | 14 |
| 87 | Bastien Tronchon | Decathlon AG2R La Mondiale | 14 |
| 88 | Geraint Thomas | INEOS Grenadiers | 13 |
| 89 | Marius Mayrhofer | Tudor Pro Cycling Team | 13 |
| 90 | Raúl García | Arkea-B&B Hotels | 12 |
| 91 | Neilson Powless | EF Education-EasyPost | 12 |
| 92 | Jenno Berckmoes | Lotto | 12 |
| 93 | Michael Valgren | EF Education-EasyPost | 12 |
| 94 | Amaury Capiot | Arkea-B&B Hotels | 12 |
| 95 | Michael Woods | Israel-Premier Tech | 11 |
| 96 | Tim Naberman | Team Picnic PostNL | 11 |
| 97 | Laurence Pithie | Red Bull-BORA-hansgrohe | 10 |
| 98 | Sam Watson | INEOS Grenadiers | 10 |
| 99 | Toms Skujins | Lidl-Trek | 9 |
| 100 | Dylan Groenewegen | Team Jayco-AlUla | 9 |
| 101 | Tobias Foss | INEOS Grenadiers | 8 |
| 102 | Krists Neilands | Israel-Premier Tech | 8 |
| 103 | Alexis Renard | Cofidis | 8 |
| 104 | Gregor Mühlberger | Movistar Team | 7 |
| 105 | Valentin Madouas | Groupama-FDJ | 7 |
| 106 | Pavel Sivakov | UAE Team Emirates-XRG | 7 |
| 107 | Dylan Teuns | Cofidis | 7 |
| 108 | Matis Louvel | Israel-Premier Tech | 7 |
| 109 | Robert Stannard | Bahrain Victorious | 7 |
| 110 | Vito Braet | Intermarché-Wanty | 7 |
| 111 | Roel van Sintmaartensdijk | Intermarché-Wanty | 7 |
| 112 | Sepp Kuss | Team Visma | Lease a Bike | 6 |
| 113 | Cristian Rodriguez | Arkea-B&B Hotels | 6 |
| 114 | Emanuel Buchmann | Cofidis | 6 |
| 115 | Alexandre Delettre | Team TotalEnergies | 6 |
| 116 | Nelson Oliveira | Movistar Team | 6 |
| 117 | Alex Aranburu | Cofidis | 6 |
| 118 | Pablo Castrillo | Movistar Team | 6 |
| 119 | Arnaud Démare | Arkea-B&B Hotels | 6 |
| 120 | Tiesj Benoot | Team Visma | Lease a Bike | 5 |
| 121 | Mattéo Vercher | Team TotalEnergies | 5 |
| 122 | Sergio Higuita | XDS Astana Team | 4 |
| 123 | Xandro Meurisse | Alpecin-Deceuninck | 4 |
| 124 | Gianni Vermeersch | Alpecin-Deceuninck | 4 |
| 125 | Niklas Märkl | Team Picnic PostNL | 4 |
| 126 | Lewis Askey | Groupama-FDJ | 4 |
| 127 | Guillaume Martin-Guyonnet | Groupama-FDJ | 3 |
| 128 | Marc Soler | UAE Team Emirates-XRG | 3 |
| 129 | Marc Hirschi | Tudor Pro Cycling Team | 3 |
| 130 | Magnus Cort | Uno-X Mobility | 3 |
| 131 | Louis Barré | Intermarché-Wanty | 2 |
| 132 | Damien Touzé | Cofidis | 2 |
Young rider competition:
| 1 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 76hr 11min 41sec |
| 2 | Oscar Onley | Team Picnic PostNL | @ 1min 3sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 11:26 |
| 4 | Ben Healy | EF Education-EasyPost | 16:53 |
| 5 | Raúl García | Arkea-B&B Hotels | 2:04:49 |
| 6 | Ilan Van Wilder | Soudal Quick-Step | 2:12:05 |
| 7 | Romain Grégoire | Groupama-FDJ | 2:14:49 |
| 8 | Frank van den Broek | Team Picnic PostNL | 2:34:35 |
| 9 | Valentin Paret-Peintre | Soudal Quick-Step | 2:35:56 |
| 10 | Alex Baudin | EF Education-EasyPost | 2:45:06 |
| 11 | Joe Blackmore | Israel-Premier Tech | 2:47:55 |
| 12 | Ewen Costiou | Arkea-B&B Hotels | 2:55:26 |
| 13 | Axel Laurance | INEOS Grenadiers | 2:59:01 |
| 14 | Quinn Simmons | Lidl-Trek | 3:06:36 |
| 15 | Thomas Gachignard | Team TotalEnergies | 3:12:05 |
| 16 | Mathis Le Berre | Arkea-B&B Hotels | 3:14:19 |
| 17 | Emiel Verstrynge | Alpecin-Deceuninck | 3:16:52 |
| 18 | Jenno Berckmoes | Lotto | 3:22:03 |
| 19 | Bastien Tronchon | Decathlon AG2R La Mondiale | 3:35:27 |
| 20 | Lenny Martinez | Bahrain Victorious | 3:37:56 |
| 21 | Louis Barré | Intermarché-Wanty | 3:40:25 |
| 22 | Marius Mayrhofer | Tudor Pro Cycling Team | 3:42:09 |
| 23 | Laurence Pithie | Red Bull-BORA-hansgrohe | 3:43:35 |
| 24 | Tobias Lund Andresen | Team Picnic PostNL | 3:55:42 |
| 25 | Iván Romeo | Movistar Team | 4:22:40 |
| 26 | Pablo Castrillo | Movistar Team | 4:31:42 |
| 27 | Paul Penhoët | Groupama-FDJ | 4:33:35 |
| 28 | Mick van Dijke | Red Bull-BORA-hansgrohe | 4:35:41 |
| 29 | Sam Watson | INEOS Grenadiers | 4:39:05 |
| 30 | Thibau Nys | Lidl-Trek | 4:39:33 |
| 31 | Lucas Plapp | Team Jayco-AlUla | 4:51:25 |
| 32 | Mattéo Vercher | Team TotalEnergies | 4:55:24 |
| 33 | Lewis Askey | Groupama-FDJ | 4:59:31 |
| 34 | Biniam Girmay | Intermarché-Wanty | 5:03:46 |
| 35 | Pavel Bittner | Team Picnic PostNL | 5:06:35 |
| 36 | Sean Flynn | Team Picnic PostNL | 5:07:04 |
| 37 | Hugo Page | Intermarché-Wanty | 5:13:14 |
| 38 | Stian Fredheim | Uno-X Mobility | 5:15:32 |
| 39 | Arnaud De Lie | Lotto | 5:18:26 |
| 40 | Vito Braet | Intermarché-Wanty | 5:20:55 |
| 41 | Jonathan Milan | Lidl-Trek | 5:24:26 |
| 42 | Roel van Sintmaartensdijk | Intermarché-Wanty | 5:33:02 |
Teams classification:
| 1 | Team Visma | Lease a Bike | 232hr 1min 32sec |
| 2 | UAE Team Emirates-XRG | @ 24min 26sec |
| 3 | Red Bull-BORA-hansgrohe | 1hr 24min 47sec |
| 4 | Arkéa-B&B Hotels | 2:10:52 |
| 5 | Decathlon AG2R La Mondiale | 2:14:15 |
| 6 | INEOS Grenadiers | 3:22:52 |
| 7 | Movistar Team | 3:23:25 |
| 8 | XDS Astana Team | 3:23:59 |
| 9 | Team Picnic PostNL | 3:26:06 |
| 10 | EF Education-EasyPost | 3:43:35 |
| 11 | Groupama-FDJ | 3:51:08 |
| 12 | Uno-X Mobility | 4:31:44 |
| 13 | Team TotalEnergies | 4:42:35 |
| 14 | Soudal Quick-Step | 4:58:37 |
| 15 | Tudor Pro Cycling Team | 6:05:18 |
| 16 | Alpecin-Deceuninck | 6:12:33 |
| 17 | Team Jayco AlUla | 6:58:35 |
| 18 | Israel-Premier Tech | 7:23:42 |
| 19 | Cofidis | 7:34:39 |
| 20 | Lidl-Trek | 7:56:39 |
| 21 | Bahrain-Victorious | 8:37:55 |
| 22 | Lotto | 10:36:37 |
| 23 | Intermarché-Wanty | 11:40:42 |
Stage 21 map & profile:

Stage 21 map

Stage 21 profile
Stage 21 photos by Fotoreporter Sirotti:

Tadej Pogacar in the pack before the rain fell.

A very wet peloton in gay Paree

Wout van Aert impressively wins stage 21.

Tadej Pogacar finishes fourth in the stage, meaning he has won his fourth Tour de France.

Wout van Aert is greeted by a very happy Visma | Lease a Bike manager Richard Plugge.

Just after the stage finish, Tadej Pogacar in the scrum of photographers and reporters.

A happy, wet, muddy UAE Team Emirates.

Tadej Pogacar and his UAE Team Emirates teammates and support staff.

Team Visma | Lease a Bike won the Teams Classification

Tadej Pogacar wins the mountains classification, though second in the classification Jonas Vingegaard wore the jersey since Pogacar was in yellow.

The classification winners, from left: Jonathan Milan (points), Tadej Pogacar (GC & mountains), Florian Lipowitz (young rider)

The GC podium, from left: Jonas Vingegaard (2nd), Tadej Pogacar (1st) & Florian Lipowitz (3rd).

Tadej Pogacar, winner of the Tour de France for the fourth time: 2020, 2021, 2024, & 2025.
Saturday, July 26: Stage 20, Nantua - Pontarlier, 184 km
Complete stage 20 results, stage story, photos, map & profile

Kaden Groves wins stage 20. Photo: Billy Lebelge
Results:
| 1 | Kaden Groves | Alpecin-Deceuninck | 4hr 6min 9sec |
| 2 | Frank van den Broek | Team Picnic PostNL | @ 54sec |
| 3 | Pascal Eenkhoorn | Soudal Quick-Step | 0:59 |
| 4 | Simone Velasco | XDS Astana Team | 1:04 |
| 5 | Romain Grégoire | Groupama-FDJ | s.t. |
| 6 | Jake Stewart | Israel-Premier Tech | s.t. |
| 7 | Jordan Jegat | Team TotalEnergies | s.t. |
| 8 | Tim Wellens | UAE Team Emirates-XRG | s.t. |
| 9 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 10 | Harry Sweeny | EF Education-EasyPost | s.t. |
GC after stage 20:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 73hr 54min 59sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 24sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 11:09 |
| 4 | Oscar Onley | Team Picnic PostNL | 12:12 |
| 5 | Felix Gall | Decathlon AG2R La Mondiale | 17:12 |
| 6 | Tobias Halland Johannessen | Uno-X Mobility | 20:14 |
| 7 | Kévin Vauquelin | Arkea-B&B Hotels | 22:35 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | 25:30 |
| 9 | Ben Healy | EF Education-EasyPost | 28:02 |
| 10 | Jordan Jegat | Team TotalEnergies | 32:42 |
Friday, July 25: Stage 19, Albertville - La Plagne, 129.9 93.1 km
Complete stage 19 results, stage story, photos, map & profile

Thymen Arensman wins stage 19 with Jonas Vingegaard & Tadej Pogacar just behind him. Photo: ASO/Aurélien Vialatte
Results:
| 1 | Thymen Arensman | INEOS Grenadiers | 2hr 46min 6sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 2sec |
| 3 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 4 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 0:06 |
| 5 | Oscar Onley | Team Picnic PostNL | 0:47 |
| 6 | Felix Gall | Decathlon AG2R La Mondiale | 1:34 |
| 7 | Tobias Halland Johannessen | Uno-X Mobility | 1:41 |
| 8 | Ben Healy | EF Education-EasyPost | 2:19 |
| 9 | Valentin Paret-Peintre | Soudal Quick-Step | 3:47 |
| 10 | Simon Yates | Team Visma | Lease a Bike | 3:54 |
GC after stage 19:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 69hr 41min 46sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 24sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 11:09 |
| 4 | Oscar Onley | Team Picnic PostNL | 12:12 |
| 5 | Felix Gall | Decathlon AG2R La Mondiale | 17:12 |
| 6 | Tobias Halland Johannessen | Uno-X Mobility | 20:14 |
| 7 | Kévin Vauquelin | Arkea-B&B Hotels | 22:35 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | 25:30 |
| 9 | Ben Healy | EF Education-EasyPost | 28:02 |
| 10 | Ben O'Connor | Team Jayco-AlUla | 34:34 |
Thursday, July 24: Stage 18, Vif - Courchevel/Col de la Loze, 171.5 km
Complete stage 18 results, stage story, photos, map & profile

Ben O'Connor wins stage 18. Photo: ASO/Aurélien Vialatte
Results:
| 1 | Ben O'Connor | Team Jayco-AlUla | 5hr 3min 47sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 1min 45sec |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:54 |
| 4 | Oscar Onley | Team Picnic PostNL | 1:58 |
| 5 | Einer Rubio | Movistar Team | 2:00 |
| 6 | Felix Gall | Decathlon AG2R La Mondiale | 2:25 |
| 7 | Primoz Roglic | Red Bull-BORA-hansgrohe | 2:46 |
| 8 | Adam Yates | UAE Team Emirates-XRG | 3:03 |
| 9 | Tobias Halland Johannessen | Uno-X Mobility | 3:09 |
| 10 | Sepp Kuss | Team Visma | Lease a Bike | 3:26 |
GC after stage 18
| 1 | Tadej Pogačar | UAE Team Emirates-XRG | 66hr 55min 42sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 26sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 11:01 |
| 4 | Oscar Onley | Team Picnic PostNL | 11:23 |
| 5 | Primož Roglič | Red Bull-BORA-hansgrohe | 12:49 |
| 6 | Felix Gall | Decathlon AG2R La Mondiale | 15:36 |
| 7 | Kévin Vauquelin | Arkéa-B&B Hotels | 16:15 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 18:31 |
| 9 | Ben Healy | EF Education-EasyPost | 25:41 |
| 10 | Ben O'Connor | Team Jayco AlUla | 29:19 |
Wednesday, July 23: Stage 17, Bollène - Valence, 160.4 km
Complete stage 17 results, stage story, photos, map & profile

A soggy, smiling Jonathan Milan wins stage 17. ASO photo
Results:
| 1 | Jonathan Milan | Lidl-Trek | 3hr 25min 30sec |
| 2 | Jordi Meeus | Red Bull-BORA-hansgrohe | s.t. |
| 3 | Tobias Lund Andresen | Team Picnic PostNL | s.t. |
| 4 | Arnaud De Lie | Lotto | s.t. |
| 5 | Davide Ballerini | XDS Astana Team | s.t. |
| 6 | Alberto Dainese | Tudor Pro Cycling Team | s.t. |
| 7 | Paul Penhoët | Groupama-FDJ | s.t. |
| 8 | Yevgeniy Fedorov | XDS Astana Team | s.t. |
| 9 | Clément Russo | Groupama-FDJ | @ 6sec |
| 10 | Jasper Stuyven | Lidl-Trek | 0:09 |
GC after stage 17:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 61hr 51min 25sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 15sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 9:03 |
| 4 | Oscar Onley | Team Picnic PostNL | 11:04 |
| 5 | Primoz Roglic | Red Bull-BORA-hansgrohe | 12:47 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 13:29 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 14:50 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 16:47 |
| 9 | Ben Healy | EF Education-EasyPost | 17:52 |
| 10 | Carlos Rodriguez | INEOS Grenadiers | 22:58 |
Tuesday, July 22: Stage 16, Montpellier - Mont Ventoux, 171.5 km
Complete stage 16 results, stage story, photos, map & profile

Valentin Paret-Peintre wins stage 16 atop Mt. Ventoux just ahead of Ben Healy. ASO photo
Results:
| 1 | Valentin Paret-Peintre | Soudal Quick-Step | 4hr 3min 19sec |
| 2 | Ben Healy | EF Education-EasyPost | s.t. |
| 3 | Santiago Buitrago | Bahrain Victorious | @ 4sec |
| 4 | Ilan Van Wilder | Soudal Quick-Step | 0:14 |
| 5 | Tadej Pogacar | UAE Team Emirates-XRG | 0:43 |
| 6 | Jonas Vingegaard | Team Visma | Lease a Bike | 0:45 |
| 7 | Enric Mas | Movistar Team | 0:53 |
| 8 | Julian Alaphilippe | Tudor Pro Cycling Team | 1:17 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 1:51 |
| 10 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 1:53 |
GC after stage 16:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 58hr 24min 46sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 15sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 9:03 |
| 4 | Oscar Onley | Team Picnic PostNL | 11:04 |
| 5 | Primoz Roglic | Red Bull-BORA-hansgrohe | 11:42 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 13:20 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 14:50 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 17:01 |
| 9 | Ben Healy | EF Education-EasyPost | 17:52 |
| 10 | Carlos Rodriguez | INEOS Grenadiers | 20:45 |
Monday, July 21: Rest Day 2, Montpellier
Sunday, July 20: Stage 15, Muret - Carcassonne, 169.3 km
Stage 15 compelte results, stage story, photos, map & profile

Tim Wellens solos across the finish line for his first Tour de France stage win. ASO photo
Results:
| 1 | Tim Wellens | UAE Team Emirates-XRG | 3hr 34min 9sec |
| 2 | Victor Campenaerts | Team Visma | Lease a Bike | @ 1min 28sec |
| 3 | Julian Alaphilippe | Tudor Pro Cycling Team | 1:36 |
| 4 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 5 | Axel Laurance | INEOS Grenadiers | s.t. |
| 6 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 7 | Jasper Stuyven | Lidl-Trek | s.t. |
| 8 | Jordan Jegat | Team TotalEnergies | s.t. |
| 9 | Michael Valgren | EF Education-EasyPost | s.t. |
| 10 | Valentin Madouas | Groupama-FDJ | s.t. |
GC after stage 15:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 54hr 20min 44sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 13sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 7:53 |
| 4 | Oscar Onley | Team Picnic PostNL | 9:18 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 10:21 |
| 6 | Primoz Roglic | Red Bull-BORA-hansgrohe | 10:34 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 12:00 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 12:33 |
| 9 | Carlos Rodriguez | INEOS Grenadiers | 18:26 |
| 10 | Ben Healy | EF Education-EasyPost | 18:41 |
Saturday, July 19: Stage 14, Pau - Luchon-Superbagnères, 182.6 km
Stage 14 complete results, stage story, photos, map & profile

Thymen Arensman wins stage 14. ASO photo.
Results:
| 1 | Thymen Arensman | INEOS Grenadiers | 4hr 53min 35sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 1min 8sec |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:12 |
| 4 | Felix Gall | Decathlon AG2R La Mondiale | 1:19 |
| 5 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 1:25 |
| 6 | Oscar Onley | Team Picnic PostNL | 2:09 |
| 7 | Ben Healy | EF Education-EasyPost | 2:46 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | s.t. |
| 9 | Tobias Halland Johannessen | Uno-X Mobility | 2:59 |
| 10 | Kévin Vauquelin | Arkea-B&B Hotels | 3:08 |
GC after stage 14:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 50hr 40min 28sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 13sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 7:53 |
| 4 | Oscar Onley | Team Picnic PostNL | 9:18 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 10:21 |
| 6 | Primoz Roglic | Red Bull-BORA-hansgrohe | 10:34 |
| 7 | Felix Gall | Decathlon AG2R La Mondiale | 12:00 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 12:33 |
| 9 | Ben Healy | EF Education-EasyPost | 18:41 |
| 10 | Carlos Rodriguez | INEOS Grenadiers | 22:57 |
Friday, July 18: Stage 13, Loudenvielle - Peyragudes, 10.9 km individual time trial
Complete stage 13 results, stage story, photos, map & profile

Tadej Pogacar on his way to winning the stage. ASO photo
Results:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 23min 0sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 36sec |
| 3 | Primoz Roglic | Red Bull-BORA-hansgrohe | 1:20 |
| 4 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 1:56 |
| 5 | Lucas Plapp | Team Jayco-AlUla | 1:58 |
| 6 | Matteo Jorgenson | Team Visma | Lease a Bike | 2:03 |
| 7 | Oscar Onley | Team Picnic PostNL | 2:06 |
| 8 | Adam Yates | UAE Team Emirates-XRG | 2:15 |
| 9 | Lenny Martinez | Bahrain Victorious | 2:21 |
| 10 | Felix Gall | Decathlon AG2R La Mondiale | 2:22 |
GC after stage 13:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 45hr 45min 51sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 4min 7sec |
| 3 | Remco Evenepoel | Soudal Quick-Step | 7:24 |
| 4 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 7:30 |
| 5 | Oscar Onley | Team Picnic PostNL | 8:11 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 8:15 |
| 7 | Primoz Roglic | Red Bull-BORA-hansgrohe | 8:50 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 10:36 |
| 9 | Felix Gall | Decathlon AG2R La Mondiale | 11:43 |
| 10 | Matteo Jorgenson | Team Visma | Lease a Bike | 14:15 |
Thursday, July 17: Stage 12, Auch - Hautacam, 180.6 km
Complete stage 12 results, stage story, photos, map & profile

Tadej Pogacar takes a brilliant solo win at Hautacam. ASO photo
Results:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 4hr 21min 19sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 2min 10sec |
| 3 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 2:23 |
| 4 | Tobias Halland Johannessen | Uno-X Mobility | 3:00 |
| 5 | Oscar Onley | Team Picnic PostNL | 3:00 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 3:33 |
| 7 | Remco Evenepoel | Soudal Quick-Step | 3:35 |
| 8 | Felix Gall | Decathlon AG2R La Mondiale | 4:02 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 4:08 |
| 10 | Cristian Rodriguez | Arkea-B&B Hotels | 7:26 |
GC after stage 12:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 45hr 22min 51sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 3min 31sec |
| 3 | Remco Evenepoel | Soudal Quick-Step | 4:45 |
| 4 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 5:34 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 5:40 |
| 6 | Oscar Onley | Team Picnic PostNL | 6:05 |
| 7 | Primoz Roglic | Red Bull-BORA-hansgrohe | 7:30 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | 7:44 |
| 9 | Felix Gall | Decathlon AG2R La Mondiale | 9:21 |
| 10 | Matteo Jorgenson | Team Visma | Lease a Bike | 12:12 |
Wednesday, July 16: Stage 11: Toulouse - Toulouse, 156.8 km
Complete stage 11 results, stage story, photos, map & profile

Jonas Abrahamsen (left) wins the stage while an idiot running alongside is corraled.
Results:
| 1 | Jonas Abrahamsen | Uno-X Mobility | 3hr 15min 56sec |
| 2 | Mauro Schmid | Team Jayco-AlUla | s.t,. |
| 3 | Mathieu van der Poel | Alpecin-Deceuninck | @ 7sec |
| 4 | Arnaud De Lie | Lotto | 0:53 |
| 5 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 6 | Axel Laurance | INEOS Grenadiers | s.t. |
| 7 | Fred Wright | Bahrain Victorious | s.t. |
| 8 | Mathieu Burgaudeau | Team TotalEnergies | s.t. |
| 9 | Quinn Simmons | Lidl-Trek | s.t. |
| 10 | Davide Ballerini | XDS Astana Team | 1:11 |
GC after stage 11:
| 1 | Ben Healy | EF Education-EasyPost | 41hr 1min 13sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 29sec |
| 3 | Remco Evenepoel | Soudal Quick-Step | 1:29 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:46 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | 2:06 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 2:26 |
| 7 | Oscar Onley | Team Picnic PostNL | 3:24 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:34 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:41 |
| 10 | Tobias Halland Johannessen | Uno-X Mobility | 5:03 |
Tuesday, July 15: Rest Day One in Toulouse
Monday, July 14: Stage 10: Ennezat - Le Mont-Dore (Puy de Sancy), 165.3 km
Complete stage 10 results, stage story, photos, map & profile

Simon Yates wins stage 10.
Results:
| 1 | Simon Yates | Team Visma | Lease a Bike | 4hr 20min 5sec |
| 2 | Thymen Arensman | INEOS Grenadiers | @ 9sec |
| 3 | Ben Healy | EF Education-EasyPost | 0:31 |
| 4 | Ben O'Connor | Team Jayco-AlUla | 0:49 |
| 5 | Michael Storer | Tudor Pro Cycling Team | 1:23 |
| 6 | Joe Blackmore | Israel-Premier Tech | 3:57 |
| 7 | Anders Halland Johannessen | Uno-X Mobility | 4:38 |
| 8 | Lenny Martinez | Bahrain Victorious | 4:51 |
| 9 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 10 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
GC after stage 10:
| 1 | Ben Healy | EF Education-EasyPost | 37hr 41min 49sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 29sec |
| 3 | Remco Evenepoel | Soudal Quick-Step | 1:29 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:46 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | 2:06 |
| 6 | Kévin Vauquelin | Arkea-B&B Hotels | 2:26 |
| 7 | Oscar Onley | Team Picnic PostNL | 3:24 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:34 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:41 |
| 10 | Tobias Halland Johannessen | Uno-X Mobility | 5:03 |
Sunday, July 13: Stage 9: Chinon - Châteauroux, 174.1 km
Complete stage 9 results, stage story, photos, map & profile

Tim Merlier win stage nine. Arnaud Die Lie (Lotto) does not look happy about that.
Results:
| 1 | Tim Merlier | Soudal Quick-Step | 3hr 28min 52sec |
| 2 | Jonathan Milan | Lidl-Trek | s.t. |
| 3 | Arnaud De Lie | Lotto | s.t. |
| 4 | Pavel Bittner | Team Picnic PostNL | s.t. |
| 5 | Paul Penhoët | Groupama-FDJ | s.t. |
| 6 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 7 | Phil Bauhaus | Bahrain Victorious | s.t. |
| 8 | Jordi Meeus | Red Bull-BORA-hansgrohe | s.t. |
| 9 | Stian Fredheim | Uno-X Mobility | s.t. |
| 10 | Kaden Groves | Alpecin-Deceuninck | s.t. |
GC after stage 9:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 33hr 17min 22sec |
| 2 | Remco Evenepoel | Soudal Quick-Step | @ 54sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 1:11 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:17 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:34 |
| 6 | Mathieu van der Poel | Alpecin-Deceuninck | 1:46 |
| 7 | Oscar Onley | Team Picnic PostNL | 2:49 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:02 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:06 |
| 10 | Mattias Skjelmose | Lidl-Trek | 3:43 |
Saturday, July 12: Stage 8, Saint-Méen-Le-Grand - Laval (Espace Mayenne), 171.4 km
Complete stage 8 results, stage story, photos, map & profile

Jonathan Milan wins stage eight. ASO photo
Results:
| 1 | Jonathan Milan | Lidl-Trek | 3hr 50min 26sec |
| 2 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 3 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 4 | Pascal Ackermann | Israel-Premier Tech | s.t. |
| 5 | Arnaud De Lie | Lotto | s.t. |
| 6 | Tobias Lund Andresen | Team Picnic PostNL | s.t. |
| 7 | Bryan Coquard | Cofidis | s.t. |
| 8 | Alberto Dainese | Tudor Pro Cycling Team | s.t. |
| 9 | Vincenzo Albanese | EF Education-EasyPost | s.t. |
| 10 | Stian Fredheim | Uno-X Mobility | s.t. |
GC after stage 8:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 29hr 48min 30sec |
| 2 | Remco Evenepoel | Soudal Quick-Step | @ 54sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 1:11 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:17 |
| 5 | Mathieu van der Poel | Alpecin-Deceuninck | 1:29 |
| 6 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:34 |
| 7 | Oscar Onley | Team Picnic PostNL | 2:49 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:02 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:06 |
| 10 | Mattias Skjelmose | Lidl-Trek | 3:43 |
Friday, July 11: Stage 7, Saint-Malo - Mûr-de-Bretagne Guerlédan, 197 km
Complete stage 7 results, stage story, photos, map & profile

Tadej Pogacar wins stage seven and regains the GC lead. ASO photo
Results:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 4hr 5min 39sec |
| 2 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 3 | Oscar Onley | Team Picnic PostNL | @ 2sec |
| 4 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 6 | Remco Evenepoel | Soudal Quick-Step | s.t. |
| 7 | Kévin Vauquelin | Arkea-B&B Hotels | s.t. |
| 8 | Jhonatan Narvaez | UAE Team Emirates-XRG | 0:07 |
| 9 | Axel Laurance | INEOS Grenadiers | 0:15 |
| 10 | Tobias Halland Johannessen | Uno-X Mobility | 0:21 |
GC after stage 7:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 25hr 58min 4sec |
| 2 | Remco Evenepoel | Soudal Quick-Step | @ 54sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 1:11 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:17 |
| 5 | Mathieu van der Poel | Alpecin-Deceuninck | 1:29 |
| 6 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:34 |
| 7 | Oscar Onley | Team Picnic PostNL | 2:49 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:02 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:06 |
| 10 | Mattias Skjelmose | Lidl-Trek | 3:43 |
Thursday, July 10: Stage 6, Bayeux - Vire Normandie, 201.5 km
Complete stage 6 results, stage story, photos, map & profile

Well done! Ben Healy wins the stage, finishing 2min 44sec ahead of his nearest chaser. Sirotti photo
Results:
| 1 | Ben Healy | EF Education-EasyPost | 4hr 24min 10sec |
| 2 | Quinn Simmons | Lidl-Trek | @ 2min 44sec |
| 3 | Michael Storer | Tudor Pro Cycling Team | 2:51 |
| 4 | Edward Dunbar | Team Jayco-AlUla | 3:21 |
| 5 | Simon Yates | Team Visma | Lease a Bike | 3:24 |
| 6 | William Barta | Movistar Team | 3:29 |
| 7 | Harold Tejada | XDS Astana Team | 3:52 |
| 8 | Mathieu van der Poel | Alpecin-Deceuninck | 3:58 |
| 9 | Tadej Pogacar | UAE Team Emirates-XRG | 5:27 |
| 10 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
GC after stage 6:
| 1 | Mathieu van der Poel | Alpecin-Deceuninck | 21hr 52min 34sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 1sec |
| 3 | Remco Evenepoel | Soudal Quick-Step | 0:43 |
| 4 | Kévin Vauquelin | Arkea-B&B Hotels | 1:00 |
| 5 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:14 |
| 6 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:23 |
| 7 | João Almeida | UAE Team Emirates-XRG | 1:59 |
| 8 | Ben Healy | EF Education-EasyPost | 2:01 |
| 9 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 2:32 |
| 10 | Primoz Roglic | Red Bull-BORA-hansgrohe | 2:36 |
Wednesday, July 9: Stage 5, Caen 33 km individual time trial
Complete stage 5 results, stage story, photos, map & profile

World time trial champion Remco Evenepoel on his way to winning the stage. ASO photo
Results:
| 1 | Remco Evenepoel | Soudal Quick-Step | 36min 42sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 16sec |
| 3 | Edoardo Affini | Team Visma | Lease a Bike | 0:33 |
| 4 | Bruno Armirail | Decathlon AG2R La Mondiale | 0:35 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 0:49 |
| 6 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 0:58 |
| 7 | Iván Romeo | Movistar Team | 1:02 |
| 8 | João Almeida | UAE Team Emirates-XRG | 1:14 |
| 9 | Lucas Plapp | Team Jayco-AlUla | 1:17 |
| 10 | Pablo Castrillo | Movistar Team | 1:18 |
GC after stage 5:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 17hr 22min 58sec |
| 2 | Remco Evenepoel | Soudal Quick-Step | @ 42sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 0:59 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:13 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:22 |
| 6 | Mathieu van der Poel | Alpecin-Deceuninck | 1:28 |
| 7 | João Almeida | UAE Team Emirates-XRG | 1:53 |
| 8 | Primoz Roglic | Red Bull-BORA-hansgrohe | 2:30 |
| 9 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 2:31 |
| 10 | Mattias Skjelmose | Lidl-Trek | 2:32 |
Tuesday, July 8: Stage 4, Amiens Métropole - Rouen, 174.2 km
Complete stage 4 results, stage story, photos, map & profile

Tadej Pogacar wins stage four. ASO photo
Results:
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 3hr 50min 29sec |
| 2 | Mathieu van der Poel | Alpecin-Deceuninck | s.t. |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 4 | Oscar Onley | Team Picnic PostNL | s.t. |
| 5 | Romain Grégoire | Groupama-FDJ | s.t. |
| 6 | João Almeida | UAE Team Emirates-XRG | s.t. |
| 7 | Remco Evenepoel | Soudal Quick-Step | @ 3sec |
| 8 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 9 | Mattias Skjelmose | Lidl-Trek | 0:07 |
| 10 | Kévin Vauquelin | Arkea-B&B Hotels | 0:10 |
GC after stage 4:
| 1 | Mathieu van der Poel | Alpecin-Deceuninck | 16hr 46min 0sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | @ 8sec |
| 4 | Matteo Jorgenson | Team Visma | Lease a Bike | 0:19 |
| 5 | Kévin Vauquelin | Arkea-B&B Hotels | 0:26 |
| 6 | Enric Mas | Movistar Team | 0:48 |
| 7 | Oscar Onley | Team Picnic PostNL | 0:55 |
| 8 | João Almeida | UAE Team Emirates-XRG | s.t. |
| 9 | Remco Evenepoel | Soudal Quick-Step | 0:58 |
| 10 | Mattias Skjelmose | Lidl-Trek | 1:02 |
Monday, July 7: Stage 3, Valenciennes - Dunkerque, 175.5 km
Complete stage 3 results, stage story, photos, map & profile

Tim Merlier wins stage three. ASO photo
Results:
| 1 | Tim Merlier | Soudal Quick-Step | 4hr 16min 55sec |
| 2 | Jonathan Milan | Lidl-Trek | s.t. |
| 3 | Phil Bauhaus | Bahrain Victorious | s.t. |
| 4 | Søren Wærenskjold | Uno-X Mobility | s.t. |
| 5 | Pavel Bittner | Team Picnic PostNL | s.t. |
| 6 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 7 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 8 | Danny van Poppel | Red Bull-BORA-hansgrohe | s.t. |
| 9 | Pascal Ackermann | Israel-Premier Tech | s.t. |
| 10 | Amaury Capiot | Arkea-B&B Hotels | s.t. |
GC after stage 3:
| 1 | Mathieu van der Poel | Alpecin-Deceuninck | 12hr 55min 37sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 4sec |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | 0:06 |
| 4 | Kévin Vauquelin | Arkea-B&B Hotels | 0:10 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 6 | Enric Mas | Movistar Team | s.t. |
| 7 | Joe Blackmore | Israel-Premier Tech | 0:41 |
| 8 | Tobias Halland Johannessen | Uno-X Mobility | s.t. |
| 9 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 10 | Emanuel Buchmann | Cofidis | 0:49 |
Sunday, July 6: Stage 2, Lauwin-Planque - Boulogne-sur-Mer, 209.1 km
Complete stage 2 results, stage story, photos, map & profile

Mathieu van der Poel just beats Tadej Pogacar to win stage two. Sirotti photo
Results:
| 1 | Mathieu van der Poel | Alpecin-Deceuninck | 4hr 45min 41sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 4 | Romain Grégoire | Groupama-FDJ | s.t. |
| 5 | Julian Alaphilippe | Tudor Pro Cycling Team | s.t. |
| 6 | Oscar Onley | Team Picnic PostNL | s.t. |
| 7 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | s.t. |
| 8 | Kévin Vauquelin | Arkea-B&B Hotels | s.t. |
| 9 | Simone Velasco | XDS Astana Team | s.t. |
| 10 | Jenno Berckmoes | Lotto | s.t. |
GC after stage 2:
| 1 | Mathieu van der Poel | Alpecin-Deceuninck | 8hr 38min 42sec |
| 2 | Tadej Pogacar | UAE Team Emirates-XRG | @ 4sec |
| 3 | Jonas Vingegaard | Team Visma | Lease a Bike | 0:06 |
| 4 | Kévin Vauquelin | Arkea-B&B Hotels | 0:10 |
| 5 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 6 | Enric Mas | Movistar Team | s.t. |
| 7 | Jasper Philipsen | Alpecin-Deceuninck | 0:31 |
| 8 | Joe Blackmore | Israel-Premier Tech | 0:41 |
| 9 | Tobias Halland Johannessen | Uno-X Mobility | s.t. |
| 10 | Ben O'Connor | Team Jayco-AlUla | s.t. |
Saturday, July 5: Stage 1, Lille Métropole - Lille Métropole, 184.9 km
Complete stage 1 results, stage story, photos, map & profile

Jasper Philipsen wins stage one. ASO photo
Results:
| 1 | Jasper Philipsen | Alpecin-Deceuninck | 3hr 53min 11sec |
| 2 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 3 | Søren Wærenskjold | Uno-X Mobility | s.t. |
| 4 | Anthony Turgis | Team TotalEnergies | s.t. |
| 5 | Matteo Trentin | Tudor Pro Cycling Team | s.t. |
| 6 | Clément Russo | Groupama-FDJ | s.t. |
| 7 | Paul Penhoët | Groupama-FDJ | s.t. |
| 8 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 9 | Marius Mayrhofer | Tudor Pro Cycling Team | s.t. |
| 10 | Sam Watson | INEOS Grenadiers | s.t. |
GC after stage 1:
| 1 | Jasper Philipsen | Alpecin-Deceuninck | 3hr 53min 1sec |
| 2 | Biniam Girmay | Intermarché-Wanty | @ 4sec |
| 3 | Søren Wærenskjold | Uno-X Mobility | 0:06 |
| 4 | Anthony Turgis | Team TotalEnergies | 0:10 |
| 5 | Matteo Trentin | Tudor Pro Cycling Team | s.t. |
| 6 | Clément Russo | Groupama-FDJ | s.t. |
| 7 | Paul Penhoët | Groupama-FDJ | s.t. |
| 8 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 9 | Marius Mayrhofer | Tudor Pro Cycling Team | s.t. |
| 10 | Sam Watson | INEOS Grenadiers | s.t. |