Stage
| Type | Date | Start and Finish | Distance | Details |
| P | Prologue | Saturday 3 July | Rotterdam > Rotterdam | 8.9 km | 
|
| 1 | Plain | Sunday 4 July | Rotterdam > Bruxelles | 223.5 km | 
|
| 2 | Hilly | Monday 5 July | Bruxelles > Spa | 201 km | 
|
| 3 | Plain | Tuesday 6 July | Wanze > Arenberg Porte du Hainaut | 213 km | 
|
| 4 | Plain | Wednesday 7 July | Cambrai > Reims | 153.5 km | 
|
| 5 | Plain | Thursday 8 July | Épernay > Montargis | 187.5 km | 
|
| 6 | Plain | Friday 9 July | Montargis > Gueugnon | 227.5 km | 
|
| 7 | Medium mountains | Saturday 10 July | Tournus > Station des Rousses | 165.5 km | 
|
| 8 | High Mountains | Sunday 11 July | Station des Rousses > Morzine-Avoriaz | 189 km | 
|
| R | Rest Day | Monday 12 July | Morzine-Avoriaz | | 
|
| 9 | High Mountains | Tuesday 13 July | Morzine-Avoriaz > Saint-Jean-de-Maurienne | 204.5 km | 
|
| 10 | Medium mountains | Wednesday 14 July | Chambéry > Gap | 179 km | 
|
| 11 | Plain | Thursday 15 July | Sisteron > Bourg-lès-Valence | 184.5 km | 
|
| 12 | Hilly | Friday 16 July | Bourg-de-Péage > Mende | 210.5 km | 
|
| 13 | Plain | Saturday 17 July | Rodez > Revel | 196 km | 
|
| 14 | High Mountains | Sunday 18 July | Revel > Ax 3 Domaines | 184.5 km | 
|
| 15 | High Mountains | Monday 19 July | Pamiers > Bagnères-de-Luchon | 187.5 km | 
|
| 16 | High Mountains | Tuesday 20 July | Bagnères-de-Luchon > Pau | 199.5 km | 
|
| R | Rest Day | Wednesday 21 July | Pau | | 
|
| 17 | High Mountains | Thursday 22 July | Pau > Col du Tourmalet | 174 km | 
|
| 18 | Plain | Friday 23 July | Salies-de-Béarn > Bordeaux | 198 km | 
|
| 19 | Individual time-trial | Saturday 24 July | Bordeaux > Pauillac | 52 km | 
|
| 20 | Plain | Sunday 25 July | Longjumeau > Paris Champs-Élysées | 102.5 km | 
|