# Calculating Your Weight Lifting Rep Maximum Using ColdFusion

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

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.

### Looking For a New Job?

25% of job board revenue is donated to Kiva. Loans that change lives - Find out more »

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

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 »

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

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 »

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

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 »

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

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 »

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

I agree with Marko!!

Kristal L. Rosebrook

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

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 »

@Coach,

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

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

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 »

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

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!

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.

 Author Name: Author Email: Author Website: Comment: Supported HTML tags for formatting: bold   italic   code Remember my information Subscribe to comments Send me a copy of this comment
InVision App - Prototyping Made Beautiful With Prototyping Tools Recent Blog Comments
Mar 11, 2014 at 6:20 PM
Reading In File Data One Line At A Time Using ColdFusion's CFLoop Tag Or Java's LineNumberReader
Thanks Ben for you very interesting articles on handling large files. As I am not a programmer, I am quite insecure whether my issue is directly related to your description or not. My problem is, tha ... read »
Mar 11, 2014 at 12:21 PM
Compound Transclusion Prevented In AngularJS 1.2
Yeah this hit our team too and locked us as 1.1.5. It seemed like an irresponsible unilateral decision, but our graver concern is the future decisions the Angular team will make with other fundamenta ... read »
Mar 11, 2014 at 2:00 AM
ColdFusion, jQuery, And "AJAX" File Upload Demo
Mar 10, 2014 at 8:24 PM
Nested Views, Routing, And Deep Linking With AngularJS
@Steven, the action property is not something from AngularJS but rather part of the concept that Ben is describing in his blogpost here. it is a custom added property, which is read by the requestCo ... read »
Mar 10, 2014 at 2:03 PM
Nested Views, Routing, And Deep Linking With AngularJS
Where is the angular documentation for 'action:' it is not here: http://docs.angularjs.org/api/ngRoute/provider/ \$routeProvider Thanks. ... read »
Mar 10, 2014 at 12:06 PM
Using Track-By With ngRepeat In AngularJS 1.2
I was hoping that this will work with pagination using ng-repeat. My use case scenario is that I have an images object. images[0] = [im1,im2,im3] // First Page images[1] = [im4, im5, im6] // Second ... read »
Mar 9, 2014 at 6:11 PM
For Better Security Use HtmlEditFormat() In Conjunction With JSStringFormat() In ColdFusion
It looks like htmleditformat() will be deprecated in CF 11 https://wikidocs.adobe.com/wiki/display/coldfusionen/New +in+ColdFusion ... read »
Mar 9, 2014 at 10:55 AM
\$.stop() vs. \$.finish() In jQuery Animations
Nice feature! Thanks for sharing. :) Good for when you are making a 100% AJAX controlled site. ... read »