The physical bike simulator/calculator that I developed

As all of you might be familiar with, the well-known bike function estimating calculator ‘bikecalculator’ has helped a lot of cyclists in the past 10 years by estimating the approximate power and speed in the hill-climb when the user puts their bike information and their weight.

However, since they are based on the old experimental data, they do not reflect the increased performance of the latest bike. The estimation in the flat road is inaccurate: We can neither simulate deep wheels nor the rider’s position because CdA is set as a fixed value of 0.34. Mechanical Efficiency of Power Transmission and CRR also use the fixed value to calculate. This led me to see several limitations of the bikecalculator, especially in the GUI.

I wanted to improve these limitations. So 2 years ago, I started to develop a new bike simulator. Even though my simulator might not be ‘perfect’, I am confident that this is the most convenient cycling simulator that is out in the world. Furthermore, compared to the previous bike calculators, it provides more freedom of input for the parameter values which helped it to have a more accurate result. In order to do this, I have not only analyzed a lot of data and related papers but also have done lots of modeling and field experiments.

The physical bike simulator that I developed does not require you to sign up; of course, it is free to use. I will skip the listing of scientific formulas that I used since there are a lot of prominent physics formulas related to cycling, a lot of calculation programs, and cycling experts here. Before I start explaining my simulator/calculator, I want to let you know that this simulator contains many calculations and modeling that are based on my own perspective and the ballpark input that was inspired by various cycling experiments.

  • The most differentiated part compared to the previous bike calculators is of course the GUI part. This part is built up by React and SCSS and it reflects the recently updated bike frame, tire, and the shape of the wheel.
  • The CdA modeling, which is a vital part of the calculator, is based on the cyclingpowerlab’s (which is gone now) basic formula. Bassett et al. (Med Sci Sports Exerc 1999) I have searched lots of resources about body size and bike’s CdA modeling, and when it is compared with the other CFD result, I thought this was the most reasonable method. Also, in order to separate the GUI, I had to divide the rider’s upper body and bike + lower body’s CdA. At this part, I used the program that gave me a ballpark figure.
  • The CdA value of the bike’s frame was referred from Specialized, Cannondale dictionary’s other frame data and wind tunnel experiments with yaw angle values.
  • For the changes in the position CdA, I applied the result from several bike position papers: While modeling, for the overall value, I set the fixed value for the bike and considered the position CdA when the rider’s position changed.
  • I got an idea from ‘bicyclerollingresistance’ for the CRR value. However, the CRR value that this website provides does not seem to show an accurate calculation for real-life outdoor riding. So I calculated back the CRR value based on the other formulas. The data I took a look at for this process was also from cyclingpowerlab. (Can’t this website please re-open?)
  • My calculator uses different modeling with different parameters for the bike groupset’s power transmission depending on the watts from 150 to 400. For instance, for the Ultegra, the power transmission varies from 93.x to 96.x depending on the watts. This of course is based on different experimental values, and I am sure that this kind of calculation has never been applied in the previous calculators.
  • For the rim height, I referred to the Hambini Engineering’s experiment but they were based on Turbulent steady flow which did not reflect the real-life value. So, I only referred to the ratios and regression function from Hambini Engineering and made my own approximate variable by the field experiment and some inverse calculations.
  • I have collected several famous segments list from strava for my calculator: For each country and city, the well-known segments are already set in my simulator program so you can easily search them and put the distance traveled and the altitude. All geographical data is not always accurate and I was not able to put all the environmental factors which might cause the record difference, but if it is a steady hill-climb, the estimation will be pretty accurate.

It is hard to list all, but this simulator contains a lot of one-tracked experiments, subjective ideas, and some data sets that are altered. Please be mindful when using this: It was a way to make a better simulator. I was not a physics guy during my college time so this simulator will not be the most accurate simulator in terms of physics. However, I am proud and confident that this simulator is the most easy-to-use and detailed simulator.


This sounds great! Thanks very much for putting it out there!

1 Like

I Liked it.
For the next iteration; The selectable tire widths are quite narrow. With new road bikes being delivered with 32 mm tires the range should be extended at least there


Thank you very much for developing this and in turn sharing and providing a great intro to the tool and the logic behind it.

I just did a quick comparison test on a KoM I took at the weekend and the modelling was very close to the actual result - fantastic!



I can see me having a bit of fun with this :smiley:

Just ref adding Strava segments, it would be fantastic if you were able to search by segment ID in the future.


Looks great.

Is there somewhere to input wind speed/direction?


That’s right. add up to 36

I’ll update it later so that users can add segments. thank you

I have updated the simulator with the headwind value. However, this is just a simple formula that excludes the headwind value from the speed value. I am still trying to find more scientific and hydromechanical-related research.

1 Like

Great app! As an user of riduck, I like the interface as well as the fidelity of the simulator.
Good to see the post in TR forum.

1 Like

This is awesome :sunglasses:

1 Like

I was just looking for something like this recently to find segments for intervals! It would be nice to have the option to use imperial units instead of metric as well.


Awesome site. Added to my favorites.

Bug report:
I clicked exp PR and calculate and screen went blank.

Other feedback:
Refreshed page and my inputs did not hold. Had to re-input. Would love to make account and have it store my info. Happy to give you my money! :money_with_wings::moneybag:

Bonus points for switch account feature so that I can log in as other athletes or profiles I make (wife, clients, etc) and switch accounts between.


I will add. thanks.

I appreciate your feedback! This website is still in the process of development so feedback like yours will help me to make it in better shape.

I’ve been working as a full-stack developer and start-up CEO for more than 15 years in Korea. I was working on machine learning that analyze chart and statistic of the stock market and came across the dataset of WKO and GoldenCheetah. I deep-dived those data and figured out that the data analysis in the domain of cardio is outdated and underdeveloped compared to those in other domains which led me to develop the cycling analysis tool like the website above. There are already 10k users in Korea who are using this service. :slight_smile:

I am more than welcome to help you to use my service, Dr.Harrison, and of course for free. Are you using power meters and Strava? If you do, then I will message you the invitation code!


Do you mean it simply subtracts the head wind speed from the bike speed?

Eg if you’re going 30km/h (no wind speed), less 5km/h headwind = 25km/h

transVelocity = velocity + headwind

Then, put transVelocity into Newtons’ method.

Probably most other bike calculators do similar calculations for the headwind.
This calculator calculates power from velocity and velocity from power. So the result is not that simple.
The CdA applied to the headwind and tailwind will have to be different. From my little knowledge, the impact of a headwind is 2-3 times greater than a tailwind.
Fluid mechanics is always difficult…


Thanks for the code. Very cool site with a lot of potential. I’ve added it to my favorites and will monitor your progress. The segment estimator tool is very cool.

Here is the Mount Lemmon segment. Pretty neat.

I think it would be more accurate if:

  1. I trained more consistently so it had more useful data in the last 12 weeks which it pulls from.
  2. It pulled data from at least 1 year of rider info, ideally more, and weighted it according to how proximal it is to today.

If you do the number 2 option above, you’ll easily have the most powerful predictor tool on the market. I’d be happy to provide input if you’re interested in having a physiology brain comment on the adequacy of your algos.

I think 220-240W is a more reasonable expectation of power ability if I rode that segment today, but you wouldn’t know that based on the last 12 weeks of data that is pulled from my Strava.

1 Like

A great little app.

Are there any invite codes going?