How We Find Every Climb in the World
From 201 million road segments to millions of verified cycling climbs, here's how we build the world's most comprehensive climb database.
1. Starting with the World's Map
OpenStreetMap is a collaborative project where volunteers worldwide map every road, trail, and path. It's like Wikipedia for maps. This gives us the foundation: 201 million road segments with their exact coordinates.
We import the entire planet's road network from OpenStreetMap, processing billions of data points to extract every road that cyclists could potentially climb.
2. Adding the Third Dimension
Map data is flat—it only has location, not height. We add elevation data to understand which roads go uphill. This transforms 2D lines into 3D terrain you can analyze for climbing.
Every point along every road segment gets an elevation value. We calculate the gradient (slope) between points, giving us a complete picture of how the road rises and falls.
3. Finding the Climbs
Our algorithm follows road segments upward, tracing routes from valley to summit. It looks for sustained gradients and keeps the best climbing routes.
We identify climbs by looking for roads that consistently go uphill. A climb must meet two key criteria:
How we find climbs
- 1Check every road: We look at each road segment and ask: is this going uphill?
- 2Follow the road upward: At every junction, we check which roads keep climbing and follow all of them.
- 3Build complete routes: We keep following each path until it stops climbing, tracing the full route from valley to summit—including switchbacks and alternative roads.
- 4Keep the good ones: Each climb is scored based on how much you gain in elevation, how steep it is, and how long. We keep the ones worth riding.
This process checks every road in the world, following each possible path uphill to find climbs that others might miss.
4. Creating Rideable Routes
Finding a climb is one thing—knowing how to actually ride it is another. We run each route through BRouter, a cycling-specific routing tool, to make sure it's practical.
BRouter checks each route for things that matter to cyclists:
- Road surface quality
- Traffic levels
- Turn complexity
- Cycling restrictions
5. Naming Each Climb
Every climb gets a meaningful name. We search for nearby peaks, mountain passes, and road names. A climb ending near "Col du Tourmalet" gets that name; one on an unnamed road near Chamonix becomes "Climb near Chamonix."
Names are assigned using a priority system:
- 1Mountain peak at summit
- 2Mountain pass (col, pass, saddle)
- 3Road name from the route
- 4Nearby location (city, village)
6. Quality Assurance
Each climb is categorized by difficulty using the same system as professional cycling. We also track surface type so you know what to expect.
Climbs are rated from HC (hardest) to Category 5 (easiest):
Categories are calculated using a formula that considers both gradient and elevation gain, similar to the system used in the Tour de France.
7. Data Sources & Credits
This project wouldn't be possible without these open data sources and tools.
OpenStreetMap
The community-built map of the world. All road data comes from OSM contributors.
geoBoundaries
Open political boundary data. Used to locate climbs within countries and regions.
GeoNames
Database of 67,000+ cities worldwide. Used for location-based naming.
BRouter
Bicycle routing engine. Optimizes routes and provides surface information.
Map data © OpenStreetMap contributors. Licensed under ODbL.
Ready to explore?
Find your next climb from our database of millions.