| # | Rider | Team | Time | Gap |
|---|---|---|---|---|
| 1 | Samuel Leroux | Team TotalEnergies | 13:07:10 | |
| 2 | Dorian Godon | Decathlon AG2R La Mondiale Team | + 05 | + 05 |
| 3 | Nicolas Milesi | ARKEA-B&B HOTELS | + 22 | + 22 |
| 4 | Clément Berthet | Decathlon AG2R La Mondiale Team | + 24 | + 24 |
| 5 | Pierre Latour | Team TotalEnergies | + 29 | + 29 |
| 6 | Thibault Guernalec | ARKEA-B&B HOTELS | + 32 | + 32 |
| 7 | Aurélien Paret-peintre | Decathlon AG2R La Mondiale Team | + 35 | + 35 |
| 8 | Théo Delacroix | St Michel-Preference Home-Auber 93 | + 35 | + 35 |
| 9 | Eliott Boulet | Groupama-FDJ | + 45 | + 45 |
| 10 | Enzo Paleni | Groupama-FDJ | + 51 | + 51 |
| 11 | Ion Izagirre | Cofidis | + 51 | + 51 |
| 12 | Héctor Álvarez | Lidl-Trek Future Racing | + 01:01 | + 01:01 |
| 13 | Anthony Perez | Cofidis | + 01:06 | + 01:06 |
| 14 | Anthony Delaplace | ARKEA-B&B HOTELS | + 01:10 | + 01:10 |
| 15 | Wessel Mouris | Unibet Tietema Rockets | + 01:16 | + 01:16 |
| 16 | Benjamin Thomas | Cofidis | + 01:18 | + 01:18 |
| 17 | Daniel Årnes | Van Rysel-Roubaix | + 01:30 | + 01:30 |
| 18 | Francisco Muñoz | Team Polti VisitMalta | + 01:55 | + 01:55 |
| 19 | Cameron Rogers | Lidl-Trek Future Racing | + 02:02 | + 02:02 |
| 20 | Zeb Kyffin | Unibet Tietema Rockets | + 02:02 | + 02:02 |
| 21 | Oscar Chamberlain | Decathlon AG2R La Mondiale Team | + 02:13 | + 02:13 |
| 22 | Kévin Avoine | Van Rysel-Roubaix | + 02:34 | + 02:34 |
| 23 | Milan Fretin | Cofidis | + 02:40 | + 02:40 |
| 24 | Cyril Barthe | Groupama-FDJ | + 02:45 | + 02:45 |
| 25 | Filippo Fiorelli | VF Group-Bardiani CSF-Faizanè | + 02:46 | + 02:46 |
| 26 | Eddy Le Huitouze | Groupama-FDJ | + 02:47 | + 02:47 |
| 27 | Andrea Mifsud | Nice Métropole Côte d'Azur | + 02:49 | + 02:49 |
| 28 | Lewis Bower | Groupama-FDJ | + 02:56 | + 02:56 |
| 29 | Emmanuel Morin | Van Rysel-Roubaix | + 03:00 | + 03:00 |
| 30 | Arthur Blaise | Decathlon AG2R La Mondiale Team | + 03:07 | + 03:07 |
| 31 | Giovanni Lonardi | Team Polti VisitMalta | + 03:09 | + 03:09 |
| 32 | Vincent Hoppezak | Parkhotel Valkenburg | + 03:11 | + 03:11 |
| 33 | Rait Ärm | Van Rysel-Roubaix | + 03:21 | + 03:21 |
| 34 | Arnaud Démare | ARKEA-B&B HOTELS | + 03:21 | + 03:21 |
| 35 | Paul Verbnjak | Lidl-Trek Future Racing | + 03:23 | + 03:23 |
| 36 | Jaakko Hänninen | Nice Métropole Côte d'Azur | + 03:28 | + 03:28 |
| 37 | Romain Cardis | St Michel-Preference Home-Auber 93 | + 03:29 | + 03:29 |
| 38 | Martijn Rasenberg | Parkhotel Valkenburg | + 03:32 | + 03:32 |
| 39 | Filippo Ridolfo | Team Novo Nordisk | + 03:55 | + 03:55 |
| 40 | Alexander Konijn | Nice Métropole Côte d'Azur | + 04:05 | + 04:05 |
| 41 | Sebastian Nielsen | Unibet Tietema Rockets | + 04:21 | + 04:21 |
| 42 | Morne van Niekerk | St Michel-Preference Home-Auber 93 | + 04:24 | + 04:24 |
| 43 | Blake Agnoletto | Groupama-FDJ | + 04:24 | + 04:24 |
| 44 | Andrea Peron | Team Novo Nordisk | + 04:27 | + 04:27 |
| 45 | Bohémond Barrillot | Nice Métropole Côte d'Azur | + 04:39 | + 04:39 |
| 46 | Joren Bloem | Unibet Tietema Rockets | + 04:43 | + 04:43 |
| 47 | Corentin Devroute | CIC U Nantes | + 04:54 | + 04:54 |
| 48 | Nolann Mahoudo | Cofidis | + 05:14 | + 05:14 |
| 49 | Enrico Zanoncello | VF Group-Bardiani CSF-Faizanè | + 05:21 | + 05:21 |
| 50 | Luca Colnaghi | VF Group-Bardiani CSF-Faizanè | + 05:25 | + 05:25 |
| 51 | Ronan Augé | CIC U Nantes | + 05:44 | + 05:44 |
| 52 | Jason Tesson | Team TotalEnergies | + 05:47 | + 05:47 |
| 53 | Dillon Corkery | St Michel-Preference Home-Auber 93 | + 05:53 | + 05:53 |
| 54 | Baptiste Gillet | ARKEA-B&B HOTELS | + 05:58 | + 05:58 |
| 55 | Martin Pedersen | Lidl-Trek Future Racing | + 06:07 | + 06:07 |
| 56 | Luca Mozzato | ARKEA-B&B HOTELS | + 06:16 | + 06:16 |
| 57 | Matteo Milan | Lidl-Trek Future Racing | + 06:22 | + 06:22 |
| 58 | Manuel Peñalver | Team Polti VisitMalta | + 06:27 | + 06:27 |
| 59 | Niek Voogt | Parkhotel Valkenburg | + 06:39 | + 06:39 |
| 60 | Davide Bais | Team Polti VisitMalta | + 06:55 | + 06:55 |
| 61 | Jesper Rasch | Parkhotel Valkenburg | + 07:29 | + 07:29 |
| 62 | Sam Brand | Team Novo Nordisk | + 08:06 | + 08:06 |
| 63 | Jérémy Lecroq | St Michel-Preference Home-Auber 93 | + 08:09 | + 08:09 |
| 64 | Clément Davy | Groupama-FDJ | + 08:21 | + 08:21 |
| 65 | Gabriele Raccagni | Team Polti VisitMalta | + 08:22 | + 08:22 |
| 66 | Alan Riou | St Michel-Preference Home-Auber 93 | + 08:40 | + 08:40 |
| 67 | Victor Jean | St Michel-Preference Home-Auber 93 | + 08:54 | + 08:54 |
| 68 | Similien Hamon | CIC U Nantes | + 09:15 | + 09:15 |
| 69 | Baptiste Planckaert | Van Rysel-Roubaix | + 09:55 | + 09:55 |
| 70 | Thomas Bonnet | Team TotalEnergies | + 09:59 | + 09:59 |
| 71 | Emmanuel Houcou | ARKEA-B&B HOTELS | + 10:19 | + 10:19 |
| 72 | David Lozano | Team Novo Nordisk | + 10:27 | + 10:27 |
| 73 | Lucas Boniface | Team TotalEnergies | + 11:44 | + 11:44 |
| 74 | Jan Maas | Cofidis | + 12:43 | + 12:43 |
| 75 | Hamish Beadle | Team Novo Nordisk | + 12:49 | + 12:49 |
| 76 | Alessandro Perracchione | Team Novo Nordisk | + 13:23 | + 13:23 |
| 77 | Mattia Pinazzi | VF Group-Bardiani CSF-Faizanè | + 14:23 | + 14:23 |
| 78 | Manu Guerinel | Van Rysel-Roubaix | + 14:51 | + 14:51 |
| 79 | Philip Heijnen | Parkhotel Valkenburg | + 15:17 | + 15:17 |
| 80 | Célestin Guillon | Van Rysel-Roubaix | + 15:37 | + 15:37 |
| 81 | Nils Sinschek | Parkhotel Valkenburg | + 16:07 | + 16:07 |
| 82 | Federico Biagini | VF Group-Bardiani CSF-Faizanè | + 17:11 | + 17:11 |
| 83 | Mathis Avondts | Parkhotel Valkenburg | + 18:19 | + 18:19 |
| 84 | Andrea Montagner | VF Group-Bardiani CSF-Faizanè | + 19:39 | + 19:39 |
| 85 | Filippo Cettolin | VF Group-Bardiani CSF-Faizanè | + 20:05 | + 20:05 |
| 86 | Maël Guégan | CIC U Nantes | + 21:09 | + 21:09 |
| 87 | Kasper Haugland | Decathlon AG2R La Mondiale Team | + 23:22 | + 23:22 |
| 88 | Célestin Wattelle | Team Novo Nordisk | + 25:13 | + 25:13 |
| 89 | Aidan Buttigieg | Team Polti VisitMalta | + 25:49 | + 25:49 |
| 90 | Nicola Marcerou | Team TotalEnergies | + 28:44 | + 28:44 |
| 91 | Antoine Hue | CIC U Nantes | + 33:26 | + 33:26 |