Calculating Your Weight Lifting Rep Maximum Using ColdFusion

Posted March 17, 2009 at 8:08 AM by Ben Nadel

Tags: ColdFusion, Health / Fitness, Project HUGE

Now that I am following Chad Waterbury's Huge In A Hurry - "Get Started" program, I need to have a better understanding of what my various rep maximums are. A rep maximum is the weight at which I can exactly get a given number of reps. For example, if my 5RM (5 Rep Maximum) was 135 for a given exercise, it would mean that I was strong enough to get 5 reps at 135 but not 6 reps. I need to know this information because in the Huge In A Hurry program, I need to be performing sub-RM reps at Rep Max weights; because I am not actually pushing to failure, I don't have the best gauge of where my rep max really is (until I get a better feel for the program).

That said, rep maximum is something that can be estimated based on relative intensities to a 1RM (one rep max). By that I mean that your RM at any given weight is a rough percentage estimate of what your 1RM is. So, theoretically, if you know any of your rep max weights, you can use that to extrapolate all of your rep max weights. Of course, this is a very rough estimate as strength training is specific and does not necessarily extrapolate well. But, for rough estimates, it gives us a good place to start.

This is a table that I have seen in many PT (personal training) text books, but I got the following version of it off of bodybuilding.com:

Reps / %1RM
1 - 100
2 - 95
3 - 90
4 - 88
5 - 86
6 - 83
7 - 80
8 - 78
9 - 76
10 - 75
11 - 72
12 - 70

Based on this table (and some further guess work), I created a ColdFusion user defined function that would return all of your rep maximums based on any given RM:

  • <cffunction
  • name="CalculateRepMaximum"
  • access="public"
  • returntype="array"
  • output="false"
  • hint="I calculate estimated repetition maximums based on a given rep max.">
  •  
  • <!--- Define arguments. --->
  • <cfargument
  • name="Weight"
  • type="numeric"
  • required="true"
  • hint="I am the weight at which the given rep maximum can be acheived."
  • />
  •  
  • <cfargument
  • name="Reps"
  • type="numeric"
  • required="false"
  • default="1"
  • hint="I am the number of maximum reps that can be achieved at the given weight."
  • />
  •  
  • <!--- Define the local scope. --->
  • <cfset var LOCAL = StructNew() />
  •  
  • <!---
  • Create the array that we will return. Each index
  • stands for the number of that can be achieved at
  • the given weight.
  • --->
  • <cfset LOCAL.RepMax = ArrayNew( 1 ) />
  •  
  • <!---
  • Create an array to hold the percentage of a 1 rep
  • max intensity can be done for a given number of reps.
  • This table is an expanded one taken based on the data
  • available on BodyBuilding.com.
  •  
  • This table is just a rough estimate! There is no way that
  • true strength can be extrapolated from any given weight
  • as your body is trained to be most efficient at any given
  • weight. Strength cannot be perfectly extrapolated from
  • endurance and vice versa.
  • --->
  • <cfset LOCAL.Intensity = ArrayNew( 1 ) />
  • <cfset LOCAL.Intensity[ 1 ] = 1 />
  • <cfset LOCAL.Intensity[ 2 ] = .95 />
  • <cfset LOCAL.Intensity[ 3 ] = .9 />
  • <cfset LOCAL.Intensity[ 4 ] = .88 />
  • <cfset LOCAL.Intensity[ 5 ] = .86 />
  • <cfset LOCAL.Intensity[ 6 ] = .83 />
  • <cfset LOCAL.Intensity[ 7 ] = .8 />
  • <cfset LOCAL.Intensity[ 8 ] = .78 />
  • <cfset LOCAL.Intensity[ 9 ] = .76 />
  • <cfset LOCAL.Intensity[ 10 ] = .75 />
  • <cfset LOCAL.Intensity[ 11 ] = .72 />
  • <cfset LOCAL.Intensity[ 12 ] = .7 />
  •  
  • <!--- Guessing at this point. --->
  • <cfset LOCAL.Intensity[ 13 ] = .68 />
  • <cfset LOCAL.Intensity[ 14 ] = .66 />
  • <cfset LOCAL.Intensity[ 15 ] = .64 />
  • <cfset LOCAL.Intensity[ 16 ] = .61 />
  • <cfset LOCAL.Intensity[ 17 ] = .58 />
  • <cfset LOCAL.Intensity[ 18 ] = .55 />
  • <cfset LOCAL.Intensity[ 19 ] = .52 />
  • <cfset LOCAL.Intensity[ 20 ] = .48 />
  •  
  •  
  • <!---
  • Based on the given weight, calculate the one rep
  • maximum using the intensity table.
  • --->
  • <cfset LOCAL.OneRepMax = Fix( ARGUMENTS.Weight / LOCAL.Intensity[ ARGUMENTS.Reps ] ) />
  •  
  • <!--- Store the one rep max in our results array. --->
  • <cfset LOCAL.RepMax[ 1 ] = LOCAL.OneRepMax />
  •  
  •  
  • <!---
  • Now that we have our 1RM in place, we can calculate
  • the result set based on the intensity table.
  • --->
  • <cfloop
  • index="LOCAL.Reps"
  • from="2"
  • to="#ArrayLen( LOCAL.Intensity )#"
  • step="1">
  •  
  • <!--- Set the RM for the given weight. --->
  • <cfset LOCAL.RepMax[ LOCAL.Reps ] = Fix( LOCAL.OneRepMax * LOCAL.Intensity[ LOCAL.Reps ] ) />
  •  
  • </cfloop>
  •  
  •  
  • <!--- Return the populated rep max array. --->
  • <cfreturn LOCAL.RepMax />
  • </cffunction>

As you can see, all we are doing is using the above table to populate an array of weights based on relative intensities. To test this, I wrote the following code:

  • <!---
  • Get the estimated rep maximums based on being able to
  • bench 245 lbs. 2 times on a flat bench.
  • --->
  • <cfset arrRM = CalculateRepMaximum( 245, 2 ) />
  •  
  • <!--- Output the estimated rep maximums. --->
  • <cfloop
  • index="intRM"
  • from="1"
  • to="#ArrayLen( arrRM )#"
  • step="1">
  •  
  • #intRM# RM = #arrRM[ intRM ]# lbs.<br />
  •  
  • </cfloop>

I know that I can get around 2 reps bench pressing 245 lbs. So, I use that as my "known" RM and let the ColdFusion user defined function fill in the blanks. Running the above code gives me the following:

1 RM = 257 lbs.
2 RM = 244 lbs.
3 RM = 231 lbs.
4 RM = 226 lbs.
5 RM = 221 lbs.
6 RM = 213 lbs.
7 RM = 205 lbs.
8 RM = 200 lbs.
9 RM = 195 lbs.
10 RM = 192 lbs.
11 RM = 185 lbs.
12 RM = 179 lbs.
13 RM = 174 lbs.
14 RM = 169 lbs.
15 RM = 164 lbs.
16 RM = 156 lbs.
17 RM = 149 lbs.
18 RM = 141 lbs.
19 RM = 133 lbs.
20 RM = 123 lbs.

Simple stuff. Again, the accuracy of this is somewhat questionable, but at least it gives us a place to start from. The next step for me would be to integrate this calculator into my DigDeepFitness.com iPhone fitness software.




Reader Comments

Mar 17, 2009 at 8:50 AM // reply »
25 Comments

Nice, next step is have it generate one of those 7 week bench press programs. Like the one Muscle Media published back in the day.
http://www.timinvermont.com/fitness/benchpgm.htm

According to that math, my 1 RM is higher than I figured (305). I wonder if it is that whole mental thing. :skeered:


Mar 17, 2009 at 8:54 AM // reply »
11,246 Comments

@Aaron,

I remember Muscle Media (the magazine?) I used to read it before I read FLEX, before I read Muscular Development.


Mar 17, 2009 at 9:02 AM // reply »
25 Comments

@Ben Nadel,
That program is awesome btw...freaky gains on bench. I have run through it a couple times.

_Really_ tough on the shoulders though. For me anyways.


Mar 17, 2009 at 9:13 AM // reply »
11,246 Comments

@Aaron,

I'll have to check it out after I'm done getting Huge in a Hurry :)

Yeah, shoulders are a tough point for me. I rarely do any direct shoulder work anymore as they tend to hurt afterward. Tomorrow, however, I'm supposed to be doing some shoulder press, so we'll see how that goes.


Mar 17, 2009 at 9:35 AM // reply »
2 Comments

Yeah I code Coldfusion all day long and like to push the iron too. I don't know if it's 100% accurate to calculate these pecentages. My advice to you is to keep it simple. Big weights make big muscles!!!
I like also Dorian Yates training philosophy that you should train one set to failure, max. Get a exercise and do that for max 5 reps, and do only one max set. You can do a couple of warm-up sets. I think these sorts of programs prevent over-training and keeps your in a positive anabolic state, just the opposite that can happen when overtraning - catabolic.


Mar 17, 2009 at 9:45 AM // reply »
11,246 Comments

@Marko,

These percentages are not nearly 100% accurate! They are meant only for rough estimates. Working out is specific adaptations to specific demands. If you always train with very low reps, these estimates will probably be way off in the 15-20 rep range. However, likewise, if you only train 15-20 reps, the 1RM estimate is probably WAY high cause you are not used to going heavy. This is just a staring point.

Have you see Blood and Guts? A great video. Dorian is a beast - one of my all time favorite lifters.


Mar 18, 2009 at 3:57 AM // reply »
2 Comments

If you have been lifting for a while and are aiming for training for strength and muscle, the way to go is to go heavy. I would say for exercises like benchpress and deadlift you can do singles! Squats you can be a little more careful with. I think if you want to get stronger the best exercise there is deadlifts! And doing deadlifts in a workout is a great way to feel that you trained - there's no exercise besides squats that is so hard! That feels good!

And JQuery is avesome, I use it with Coldfusion with joy.

And by the way - I like your blog, I read every post now!


Mar 18, 2009 at 8:05 AM // reply »
11,246 Comments

@Marko,

I think singles are good, but I don't think you can do singles all the time. I feel like that raises the likelihood of injury.

Glad you are liking the blog :) Thanks.


Apr 7, 2009 at 4:51 AM // reply »
1 Comments

I agree with Marko!!

Kristal L. Rosebrook


Mar 9, 2010 at 4:25 PM // reply »
1 Comments

The reason for the percentages being different work intensities for shoulders vs bench press is that there is further formulas required which integrate co-efficients relative to muscle mechanics for different isolated or compound exercises.

for better results try implementing Bryzicki formula - it is based on an actual lift test which must incorporate a trainable load (more than 1 rep, but less than 10).


Mar 10, 2010 at 9:39 PM // reply »
11,246 Comments

@Coach,

Thanks for the tip - I'll look that formula up.


May 29, 2010 at 12:49 PM // reply »
1 Comments

Just wanted to say I train with a crew team in Spain and recently the soccer coach has let me work on some of my cardio drills while the team is practicing - I try and stay out of the way - Ive been lifting for a while and now that I have 3 kids its taking its toll on my training time and energy. I had to cut my workout down drastically and went directly down to basics thinking Id be on a maintenance kind of thing until the kids were a bit older and hopefully would have time to train more. I was happily surprised to see myself actually making more progress with this more basic style. I have to say that formula you made was beautiful. Very interesting I love working with these type of things but dont have the know how or experience - its real nice to see some good "art" :) Good luck with the training!!!


Jun 7, 2010 at 10:38 PM // reply »
11,246 Comments

@Neto,

Sometimes the basics are the best. Variety in training is good; but I think there are basic exercises that are the cornerstone of a quality routine.


Jan 10, 2012 at 11:11 AM // reply »
1 Comments

This blog is nice and amazing. I love your post! It's also nice to see someone who does a lot of research and has a great knack for ting, which is pretty rare from bloggers these days.
Thanks!



Post A Comment

Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.

Please review the following issues:

Author Name:


Author Email:

Author Website:

Comment:

Supported HTML tags for formatting: <strong>bold</strong>   <em>italic</em>   <code>code</code>







  • Help Wanted - Find Your Next ColdFusion Job
Ben Nadel's Company - Epicenter Consulting Recent Blog Comments
May 24, 2013 at 5:39 PM
Ask Ben: Manually Enforcing Basic HTTP Authorization In ColdFusion
@Adam Oops! My mistake! I hadn't gotten that far in my testing - I'm still baby stepping my way through the process. ... read »
May 24, 2013 at 5:13 PM
Ask Ben: Manually Enforcing Basic HTTP Authorization In ColdFusion
Hi Jason, Thanks for checking up on that, but I still stand firm on my position. :) There are actually two listLast()'s in use, and you're right that the one using a space as a delimiter is fine. ... read »
May 24, 2013 at 4:45 PM
Ask Ben: Manually Enforcing Basic HTTP Authorization In ColdFusion
@Ben I have been lurking your site for quite some time, and haven't stepped up to comment until today. Thanks for all the great info - keep it up! @Adam I believe you are mistaken... as the commen ... read »
May 24, 2013 at 11:21 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@WebManWalking, Ha ha, let's us never speak of justifying "##" notation again :P ... read »
May 24, 2013 at 11:18 AM
Strange Interaction Between DeserializeJson(), ArrayContains(), And Database Values In ColdFusion
@Ben, Ah, so it was indeed how I vaguely remembered it to be: A direct assignment value = users.id[ i ] causes value to retain the sticky datatype of the query column. Although unnecessary in ... read »
May 24, 2013 at 9:11 AM
Preventing Links In Standalone iPhone Applications From Opening In Mobile Safari
@Brandon, Hi, No, I haven't been able to do that. I have just kept it as it is. ... read »
May 23, 2013 at 9:52 PM
Preventing Links In Standalone iPhone Applications From Opening In Mobile Safari
@Muhmmadibn Did you figure out a solution to launching PDFs? I am running into the same issues myself. There is no way to close the PDF or go back once you launch it. Thanks in advance! ... read »
May 23, 2013 at 6:06 PM
The Girl Who Broke My Heart, And Made Me A Better Person
Good day,ladies and gentle men, my name is Dr AMADI the great spell caster in Africa, i have help so many people for different kind of problems,who say there is no solution to problems on earth, that ... read »
InVision App - Prototyping Made Beautiful With Prototyping Tools