Cyclists.com

Kuala Lumpur – Semenyih

93 km road cycling loop1,149 m climbing5–7 hoursGPX

Kuala Lumpur, Malaysia · Road

A hilly 93 km road cycling loop from Kampung Jawa through Kampung Mampir, Kampung Batu 20 Sungai Lui and Kampung Baru Sungai Lui, with 1,149 m of climbing over the Kuala Lumpur climb and the Kuala Lumpur climb. There is a 38 km stretch without a café, shop or water (km 50–87).

Route contributed by Richard Chapman · Created from a ride on Friday 27th February 2026

Download GPXMap

At a glance

Best for
Hilly days out for fit, experienced riders
Distance
93 km
Loop
Elevation gain
1,149 m
12 m per km
Riding time
5–7 hours
moving time, estimated
Difficulty
Hard
Bike
Road bike
from the mapped surface
Surface
Paved
100% paved · 0% unpaved
Traffic
Mostly minor roads
Food & water
Longest gap 38 km
4 cafés and restaurants · 1 public toilet
Navigation
GPX download
free, no sign-in
Start and finish
Kampung Jawa

Map and elevation profile

Elevation profile

Total ascent
1,149 m
Distance
93 km
0100200300400500600m0 km2040608093 km486 m · highest, at 73.0 kmStartFinish · back at the start

Route description

  1. Kampung Jawa
  2. Kampung Mampirkm 3
  3. Kampung Batu 20 Sungai Luikm 4
  4. Kampung Baru Sungai Luikm 5
  5. Kuala Lumpur climbkm 10
  6. Kampung Chennahkm 36
  7. Kampung Telekongkm 40
  8. Kampung Puomkm 42
  9. Kuala Lumpur climbkm 56
  10. Kampung Jawakm 93

Starting from Kuala Lumpur, the route passes through a series of villages including Kampung Jawa, Kampung Mampir, Kampung Batu 20 Sungai Lui, and Kampung Baru Sungai Lui within the first 5.3 km. Climbing begins around 10 km, with an 8.9 km ascent gaining 360 m at an average gradient of 4.1% to 485 m elevation. Several shorter climbs follow between 20 and 69 km, with gradients mostly between 3.2% and 4.7%, the steepest sustained section reaching 7.8% near 11.5 km. After roughly 39.5 km, the route passes through Kampung Telekong and Kampung Puom before completing the loop back near Batu 21 Sungai Lui at 81.8 km and returning to the start at Kuala Lumpur.

All 93 km of the route are on fully paved surfaces, predominantly on minor roads for 97% of the distance and quiet streets for 3%. The ride includes 13 straight km on four named roads: N32, B19, B32 and N25. Amenities on or near the route include several restaurants and a café at the start/finish in Kuala Lumpur, plus a restaurant and toilet close to 31 km near Kampung Chennah, and another restaurant near 49.5 km. However, there is a 37.6 km stretch between 49.5 km and 87.1 km with no café, shop or water.

Why ride this route?

  • Climbs the Kuala Lumpur climb (8.9 km at 4.1 %) and the Kuala Lumpur climb (4.9 km at 4.1 %).
  • Tops out at 487 m, 69 km in.
  • A 9 km descent dropping 357 m.

Highlights

  • Climb of 8.9 km with 360 m gain at 4.1% avg
  • Twice passing Kampung Telekong and Kampung Puom
  • Longest descent of 9 km dropping 357 m from 73.1 km
  • Start and finish in Kuala Lumpur with cafés and restaurants

Along the route

Measured from the route line, the Copernicus elevation model and OpenStreetMap.

Places passed

  1. Kampung Mampir 3.1 km
  2. Kampung Batu 20 Sungai Lui 3.6 km
  3. Kampung Baru Sungai Lui 5.3 km
  4. Kampung Orang Asli Genting Peres 17.5 km
  5. Kampung Chennah 35.9 km
  6. Kampung Telekong 39.5 km
  7. Kampung Puom 41.5 km
  8. Batu 21 Sungai Lui 81.8 km

Climbs

Climbs in ride order: where each starts, what this ride climbs, and the full named ascent
ClimbStarts atOn this rideFull ascentTop on this ride
Kuala Lumpur climb10.3 km8.9 km · 360 m · 4.1 % · max 9.7 %8.9 km · 360 m · 4.1 %485 m
Unnamed climb20.6 km2.1 km · 77 m · 3.7 % · max 6.8 %476 m
Unnamed climb24.9 km1.7 km · 54 m · 3.2 % · max 4.8 %436 m
Unnamed climb45.3 km1.6 km · 59 m · 3.8 % · max 7.3 %194 m
Unnamed climb53.3 km2.4 km · 79 m · 3.3 % · max 5.7 %236 m
Kuala Lumpur climb56.3 km4.9 km · 201 m · 4.1 % · max 6.8 %4.9 km · 201 m · 4.1 %434 m
Unnamed climb62.6 km2.4 km · 83 m · 3.4 % · max 6.3 %471 m
Unnamed climb67 km2.1 km · 97 m · 4.7 % · max 8.4 %487 m

High point 487 m at 69 km; low point 71 m.

On this ride: the part this route climbs, cut from its own elevation profile. Full ascent: the whole named climb, measured the same way on every ride that uses it (its climb page).

Kuala Lumpur climb · full ascent, starts at 10.3 km

8.9 km at 4.1% · 360 m
150200250300350400450m4.8%3.0%4.6%3.5%3.9%2.5%4.4%3.4%0 km123456788.8 km472 msteepest 5.6%
< 4%4 – 7%7 – 10%> 10%

Kuala Lumpur climb · full ascent, starts at 56.2 km

4.9 km at 4.1% · 201 m
250300350400m6.0%4.2%3.5%3.7%0 km12344.9 km434 msteepest 6.0%

Traffic, surface and gradient

Measured from OpenStreetMap along the track and the elevation profile.

Mostly minor roads and streets on the map.

Roads
97% minor road · 3% quiet street
Main roads used
N32 (32 km), B19 (19 km), B32 (16 km), N25 (7 km)
Surface
Paved: 100% of the route is mapped as paved.
Gradient
28% climbing · 29% descending · 42% flat
Steep sections
6.9 km over 5% · 0.5 km over 8% · steepest 500 m averages 7.8% at 11.5 km
Longest descent
9 km from 73.1 km, dropping 357 m

Food, water and services

Within a few hundred metres of the track, from OpenStreetMap. Opening hours change — treat this as where to look, not a promise.

The longest stretch without a café, shop or water is 38 km, from km 50 to 87. Along the route: 4 cafés and restaurants and 1 public toilet.

Food, water and shops in ride order

  1. 31.1 kmMZ Corner · restaurant · 40 m off route
  2. 31.1 kmToilets · 30 m off route
  3. 49.5 kmGerai Hajah Aminah · restaurant · 100 m off route
  4. 82.8 kmKlinik Desa Sungai Lui · clinic · 50 m off route
  5. 87.1 kmBahulu Classiq · café · on the route

Start and access

Starts and finishes at Kampung Jawa. Mapped within a short walk of the start, from OpenStreetMap.

At the start and finish

Food and coffee
Kedai Kopi Makanan Nam Wah (120 m), Bahulu Classiq (690 m)

Know before you go

  • 37.6 km longest stretch without café, shop or water from 49.5 km
  • 6.9 km climbing over 5% gradient
  • 0.5 km climbing over 8% gradient
  • 0.1 km climbing over 10% gradient

Routes are for inspiration. Roads, surfaces and conditions change — check locally and ride within your limits.

About this route

Date ridden
Route line
Built from a GPS recording of the ride.
Elevation
Recalculated from the Copernicus GLO-90 terrain model every 50 m, not the device’s barometer.
Roads, surface, services
Measured along the line from OpenStreetMap extracts.
GPX
Generated from the route line: track points only, no timestamps or personal data.
Page added
Page last updated

See something wrong with this ride?

Rides starting nearby