Everesting is fiendishly simple: Pick any hill, anywhere in the world, and complete repeats of it in a single activity until you climb 8,848m – the equivalent height of Mt Everest.
The Everest Challenge, initially popularized by mountaineers, has now extended its allure to cycling. “Everesting” on your bike involves the formidable task of climbing the equivalent elevation gain of Mount Everest, a staggering 8,848 meters (29,029 feet), in a single ride. To conquer this extraordinary feat, selecting the best climbs becomes paramount.
In this blog post, we will explore the key factors to consider when searching for the best climbs to Everest on your bike. As a bonus, you can use the script below to search Strava for the best hills in your area.
[Update 1/2026] --> Check the new web app that will help you find the best climb(s) near you.
“fiendishly simple, yet brutally hard.
Everesting is the most difficult climbing challenge in the world.”
Research and Elevation Gain
Thorough research is vital before embarking on your Everest Challenge. Identify potential climbs in your region that offer significant elevation gain. Look for routes with sustained climbs and gradients that will allow you to accumulate the required ascent in minimum loops.
This script will help you find the best routes in terms of gradient and length:
| /** | |
| * Get from Strava segments in an area to check for the optimal one for eversting challange 🌋 | |
| * | |
| * @author @greenido | |
| * @update May 2020 | |
| * | |
| * @see | |
| * 🏉 API: https://www.strava.com/settings/api | |
| * | |
| * 🦊 Get long/lat on map: https://www.latlong.net/ or just google maps | |
| * | |
| * 🏇🏽 Strava segment view: https://www.strava.com/segments/838277 | |
| * | |
| * 🏄🏼♂️ The challange calculator and rules: | |
| * https://everesting.cc/ | |
| * https://everesting.cc/the-rules/ | |
| * | |
| */ | |
| const fs = require('fs'); | |
| const strava = require('strava-v3'); | |
| /** | |
| * An Area near Palo Alto / Mountain View: 37.227467, -122.252343 , 37.392468, -122.147393 | |
| * | |
| * Sunborn: '37.223952, -122.082204 , 37.247273, -122.050983 | |
| * Castel Rock: 37.210512, -122.155736 , 37.260993, -122.088351 | |
| * Fremont Older: 37.274807, -122.082686 , 37.305592, -122.046764 | |
| * Windy Hill: 37.342399, -122.248591 , 37.375964, -122.210654 | |
| * Huddart Park: 37.426549, -122.313672 , 37.456754, -122.282049 | |
| * El Corte de Madera Creek: 37.380227, -122.335745 , 37.419812, -122.294035 | |
| * MtDiablo: 37.827981, -122.003592 , 37.924660, -121.866957 | |
| * Joaquin Miller Park: 37.796745, -122.203074 , 37.838225, -122.140281 | |
| * Golden Gate Park: 37.818253, -122.571099 , 37.898337, -122.478872 | |
| * MtTam: 37.868871, -122.637926 , 37.947287, -122.564110 | |
| */ | |
| const areasObj = { | |
| // "Sunborn": [37.223952, -122.082204 , 37.247273, -122.050983] , | |
| // "CastelRock": [37.210512, -122.155736 , 37.260993, -122.088351] , | |
| // "FremontOlder": [37.274807, -122.082686 , 37.305592, -122.046764] , | |
| // "WindyHill": [37.342399, -122.248591 , 37.375964, -122.210654] , | |
| // "HuddartPark": [37.426549, -122.313672 , 37.456754, -122.282049] , | |
| // "ElCortedeMaderaCreek": [37.380227, -122.335745 , 37.419812, -122.294035] , | |
| // "MtDiablo": [37.827981, -122.003592 , 37.924660, -121.866957] , | |
| // "JoaquinMillerPark": [37.796745, -122.203074 , 37.838225, -122.140281] , | |
| // "GoldenGatePark": [37.818253, -122.571099 , 37.898337, -122.478872] , | |
| // "MtTam": [37.868871, -122.637926 , 37.947287, -122.564110] | |
| "Old La Honda Area": [37.369504, -122.261283 , 37.398757, -122.237941] | |
| } | |
| const areasArray = Object.entries(areasObj); | |
| // | |
| // | |
| // | |
| async function fetchSegments(strava, parkName, geoPoint, csvStr) { | |
| strava.segments.explore({ | |
| access_token: "TODO-PUT-YOUR-TOKEN", | |
| bounds: geoPoint, | |
| activity_type: 'riding' // running | |
| }, function (err, payload) { | |
| if (!err) { | |
| const areaName = parkName; | |
| console.log('=================== 🥎 ======================'); | |
| for (let i = 0; i < payload.segments.length; i++) { | |
| const segment = payload.segments[i]; | |
| let segmentName = segment.name.replace(","," "); | |
| let tmpStr = segment.id + " , " + segmentName + " , " + segment.climb_category + " , " + segment.distance + " , " + | |
| segment.elev_difference + " , " + (segment.elev_difference / segment.distance * 100).toFixed(3) + "% , " + areaName + " \n"; | |
| csvStr += tmpStr; | |
| } | |
| console.log(csvStr); | |
| fs.writeFileSync("./data/" + areaName + ".csv", csvStr); | |
| } else { | |
| console.log("ERR: " + err); | |
| //console.log(err) | |
| process.exit(1); | |
| } | |
| }); | |
| } | |
| let csvStr = "id , name , climb_category , distance , elevation difference , RATIO , Area \n"; | |
| for (const [parkName, geoPoint] of areasArray) { | |
| console.log(`🍌 Working on ${parkName}: ${geoPoint} `); | |
| fetchSegments(strava, parkName, geoPoint.toString(), csvStr); | |
| } |
and if you need to get your own Token from Strava follow this:
To get a token for Strava API calls requiring OAuth, you'll need to follow these steps:
1. Register Your Application:
- Visit the Strava developer portal: https://developers.strava.com/
- Create a developer account and register your application.
- During registration, you'll receive a Client ID and Client Secret. These are essential for obtaining access tokens.
2. User Authorization:
- Redirect the user to Strava's authorization endpoint using the following URL structure:
https://www.strava.com/oauth/authorize?client_id=[YOUR_CLIENT_ID]&response_type=code&redirect_uri=[YOUR_REDIRECT_URI]&approval_prompt=force&scope=[SCOPES]
Replace the placeholders with your values:
[YOUR_CLIENT_ID]: Your application's Client ID obtained during registration.[YOUR_REDIRECT_URI]: The URL in your application where Strava will redirect the user after authorization. This URL needs to be registered in your Strava developer settings.[SCOPES]: A comma-separated list of permissions your application needs. Refer to the Strava API documentation for available scopes (https://developers.strava.com/docs/reference/). Example:activity:read_all
3. Exchange Authorization Code for Access Token:
- After successful user authorization, Strava will redirect the user back to your
[REDIRECT_URI]with an authorization code in the URL parameters. - Use this authorization code to obtain an access token by making a POST request to the following endpoint:
https://www.strava.com/oauth/token
Request Body:
grant_type=authorization_code
client_id=[YOUR_CLIENT_ID]
client_secret=[YOUR_CLIENT_SECRET]
code=[AUTHORIZATION_CODE]
redirect_uri=[YOUR_REDIRECT_URI]
- Replace the placeholders again with your values:
[YOUR_CLIENT_ID]and[YOUR_CLIENT_SECRET]: Your application credentials.[AUTHORIZATION_CODE]: The authorization code received in the redirect URL after user authorization.[YOUR_REDIRECT_URI]: The same redirect URI used in step 2.
4. Handle Response:
- Strava's response will be a JSON object containing the access token, refresh token (optional), and access token expiration time.
- Store the access token securely and use it for authorized Strava API calls.
5. Refresh Token (Optional):
- Access tokens typically have limited expiry times.
- The response might also include a refresh token. You can use this refresh token to obtain a new access token when the current one expires, avoiding the need for user re-authorization.
Additional Resources:
- Strava Authentication Documentation: https://developers.strava.com/docs/authentication/
Climbing Difficulty and Gradient
Evaluate the difficulty level and gradient of the climbs you are considering. Steep slopes may provide more elevation gain in a shorter distance but can be physically demanding. Since it’s an effort of a day (more or less), you want to make sure you can climb it with ~75% of your FTP (or less if you need to be in better shape).
Balancing gradient with your own fitness level and climbing abilities is crucial. Gradual ascents, while requiring more distance, can offer a more sustainable pace and reduce the risk of burnout during your Everesting attempt.
Another important aspect is to make sure there aren’t sharp turns. That will slow you down on the downhill and cause you to lose time.
Traffic and Safety
Ensure the climbs you choose prioritize cyclist safety. Consider roads with less vehicular traffic or those that are cyclist-friendly. Look for routes with wider shoulders, designated bike lanes, or less-traveled roads to minimize the risk of accidents.
It is always best to ask locals about the path you are evaluating.
Accessibility and Support
Evaluate the accessibility and support available on your chosen climbs. Consider factors like proximity to your home/hotel, parking availability, and access to water and restrooms.
Accessibility becomes crucial during long rides, as you must refuel and replenish supplies periodically. Planning your Everesting route around easily accessible climbs can help ensure a smoother experience.
Try to create a feeding station in your car and park it at the climb’s bottom (or the top). That will allow you to drink/eat without wasting time and energy during the challenge.
Weather Considerations
Be mindful of weather patterns in the area where you plan to Everesting. Extreme heat, cold, snow, rain, or strong winds can significantly impact your ride and overall experience.
Research historical weather data for the climbs you are considering and choose a good season for your attempt.
You should also check the sunrise and sunset times to maximize the riding time with light. It’s better to start in the dark and finish while enjoying the sunset.
Here is an example to the best climbs in the Bay Area:
Conclusion
Everesting on your bike is an extraordinary endeavor that demands meticulous planning and strategically choosing climbs.
By conducting thorough research and assessing the difficulty, safety, accessibility, and scenic beauty of potential climbs, you can optimize your chances of a successful and rewarding Everesting experience. The Everest Challenge is not merely about conquering elevation gain—it’s about embracing the adventure, pushing your limits, and immersing yourself in the moment.
Happy Everesting!
Keep your simple on your face.
It will make it easy(er).
Discover more from Ido Green
Subscribe to get the latest posts sent to your email.
