\( \def\bold#1{\bf #1} \newcommand{\d}{\mathrm{d}} \) Climb Index Europe - database for climbs and hills for racing bicylces

Power Uphill

bike mass [kg]
body mass [kg]
altitude gain [m]
climb length [km]
gradient [%]
time [s]
speed [km/h]
power [W]
power/mass [W/kg]
climbrate [m/min]

average power on climb stage

\( \def\bold#1{\bf #1} \newcommand{\d}{\mathrm{d}} \)

"But you don't fly up a hill. You struggle slowly and painfully up a hill..." (Lance Armstrong). Another lie. Of course we will fly uphill experiencing the massive power of our own bodies. This site helps you to find the most demanding and the most beautiful climbs in your home site ... even if you think you know them all!

What is the climbindex.eu?

climbindex.eu is a dataset of climbs/hills for road bike riders, generated automatically with BTP3. Therefore it is a alternative concept to well established climb websites like salite.ch, climbbybike.com or quaeldich.de, which collect climb data from their users. The beauty of automatic generation lies in the completeness of the data sets an the correctness of the data sets limited by the resolution of the SRTM3 data and the completeness of OpenStreetMap data.

The climb data base was generated with ClimbAnalyse algorithm of BTP3.

How to use it?

Climb data

A Climb of the climbindex.eu consists of the following data: length d, altitude difference Hm, serpentine value and its location. Additionally there is a climb profile and track data for every climb.

Climb definiton

To call a certain route a climb, it has to meet the following 5 criteria:
  1. minimum difficulty: 5 m
  2. minimum gradient: 5 %
  3. minimum altitude difference: 100 m
  4. maximum descenting sections: 10 % of vertical meters
  5. independence:
    1. the climb is the most difficult imaginable climb on every single road section or
    2. the the climb is most difficult on at least 50% length of all road sections and accumulates in these sections at least a difficulty of 10 m


The difficulty \( S \) is calculated according to the fiets index and with the altitude difference \( h \) and length of the climb \( l \) \[ S = \max \left( h \frac{\d h}{\d l} \right) = \max \left[ l \left( \frac{\d h}{\d l} \right)^2 \right] = \max \left( \frac{h^2}{l} \right) \] This index represents the maximum achievable value, the climb with all its data is cut to this section. That is why you may wonder, that some climbs seemed to be shortened. This is indeed the case, they are cut according to the maximized difficulty.


The rank \( R \) of a climb is a measure, how important a climb might be to the cyclist. The smaller the rank value, the more important this climb might be for the cyclist, regardless of the total distance of the climb. With the distance \( d \) and difficulty \( S \) the rank is defined as \[ R_i = \sum_j R_{ij} \quad\text{ with } R_{ij}= \begin{cases} 1 & \text{if } d_i \gt d_j \text{ and } S_i \lt S_j \\ 0 & \text{else.} \end{cases} \] As an example you might have a look on the Dresden ranking.

HM - altitude difference

Total amount of vertical meters to reach the top, including additional meters by descenting sections, HM = End - Start + down

serpentine, serpentine²/km

Serpentine measures the frequency of bend on a climb. It is the sum of squared bend angles normalized to 180° bends. I.g. a 180° bend is of the same value as four 90° bends. A serpentine value of 4 could mean four hairpin bend or one 360° bend (which might be very rare) or 16 90° bends.

To compare the magnificence of climbs with regard to their bends it is assumes that it accounts to serpentine density as well as total amount of serpentine, i.g. the product of the "serpentine" value divided by the climb length.

\[ serpentine = \sum_{bend} \left( \frac{bend}{\Pi} \right)^2\]


The STRONGlayer is the open-end STRONG calculation on inverted height data up to 1300 meters altitude gain.

The higher line width, the higher the importance of a road when planning a ride with 1300 meter altitude difference at least distance.

For you it might be of interest to plan a circular track with maximized Hm/km ratio, eventually with a total amount of altitude gain different than 1300 m. For that purpose you should go for BTP3 and calculate exactly this route.


The default base layer of climbindex.eu was generated with BTP3 based on the OpenStreetMap dataset (january 2014) and SRTM3 data.

It is cut off in the northern parts of Europe, as mercator projection there requires to much memory, negleting the beauty of nice climbing roads in Norway and other regions. Please refer to the other base layers in that case!
If you find blank map window, there might be no map BTP-tiles available. Switch to other base layer in that case. Due to memory limitation of this webserver BTP map is limited to zoom sizes 5..13 and mid and southern Europe.