Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at the jQuery Conference 2010 (Boston, MA) with:

Calculating Your Weight Lifting Rep Maximum Using ColdFusion

By Ben Nadel on

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

@Aaron,

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

@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.

@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.

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.

@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.

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!

@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.

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).

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!!!

@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.

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!