BMI to body fat formula

I’ve developed a new formula for converting BMI (body mass index) to body fat percentage, because the formula I found on the internet is wrong.  If you just want the formula, skip to the bottom.  Otherwise please read this very interesting post.

I’ve been dieting for the past several months.  As I near a more reasonable weight range, I’ve begun to think more about what my ideal weight would be.  At first I concentrated on my Body Mass Index (BMI), which is a calculated number that gives an indication of healthiness independent of height and weight by dividing weight in kg by height in metres squared.

However, the more I read, the more it looked like body fat percentage (BF%) was the real concern.  A higher BMI generally would mean greater BF%, but BF% is a better, more precise indicator of health.  BF% is best calculated directly, by submersion in water, but that’s an experiment for another day.  I wanted a quick way to estimate my body fat % using what I already knew: my height and weight (and therefore BMI).

So I began to look online for a BMI to BF% conversion formula.  I found several web sites with a formula, but they all turned out to be the same formula.  And this is what the formula is:

BF% = (1.20 x BMI) + (0.23 x Age) – (10.8 x gender) – 5.4

(Where gender = 1 for a man and 0 for a woman, seems kind of sexist!)

Now, the first thing you’ll notice is that age and sex are also included in the equation.  That’s because this is a statistical study that took into account sex and age.  So allowing sex, age, and BMI to all be factors, the researchers found these coefficients on average predicted BF% better than any others, assuming a linear relationship.

But if we look at the coefficients, there’s a problem.  The coefficient for BMI is 1.2.  If BMI increases by 1, BF% will go up by 1.2.  That seems a pretty low %.  Let’s try an example.  My height is about 1.73 metres and my weight is about 77 kg, for a BMI of about 25.8.  If I go on vacation to France and eat a lot of rich food and my BMI goes up to 26.8, that corresponds to a weight of 80.2 or a gain of 3.2 kg.  That’s a gain of 4.1% in body fat if we assume all of those 3.2 kg are fat.  That’s over three times what the formula says my BF% should increase by.

So can the formula be that wrong?  Yes and no.  It isn’t wrong, it’s just being used the wrong way.  If we want to statistically predict a given person’s BF% from their BMI, age, and sex, the formula on average should predict ok.  But given a particular person of a given age and sex, and we want to predict the effect of their weigh loss or gain on their BF%, the formula won’t do that at all.

Unfortunately, I think most people are going on-line to find a formula that links BMI and BF%, not statistically but predictively.  So below, I will attempt to work out a formula.

We’ll start with some facts.  The lowest healthy BMI is quoted as 18.5 for both men and women.  The lowest healthy BF% is 2% for men and 10% for women.

Now let’s make three reasonable assumptions: 1) the healthy lower limits for BMI and BF% are both accurate, 2) just below the lowest healthy weight is the weight at which body fat is zero, and 3) any weight gain above the zero fat weight is 100% fat, i.e. each kg gained is purely a kg of fat, as in the example above.

Let’s also make some definitions:

wzf = weight at which one has zero body fat

w = total body weight in general

wf = the weight of the fat in the body

bfr = body fat ratio = weight of fat divided by total weight = wf/w

BF% = bfr * 100

bmi = bmi in general = w/h^2

bmiz = bmi at zero body fat = wzf/h^2

From these definitions and the assumption that all weight gained above zero body fat is just fat, we can see that weight is just the sum of weight at zero body fat plus the weight of the fat: w = wzf + wf

BF% = bfr * 100

Then use the definition of bfr:

BF% = (wf/w) *100

Then use w = wzf + wf or put another way, wf = w – wzf:

BF% = [(w – wzf)/w] * 100 = [1- wzf/w] * 100

Now to solve in terms of bmi, we solve the formula for bmi for weight, we get w = bmi * h^2 and wzf = bmiz * h^2.

BF% = [1 – (bmiz * h^2)/(bmi * h^2)] * 100

Or simplifying:

BF% = [1 – bmiz/bmi] * 100

What could be simpler?  Using myself as an example, assume bmiz = 18 (just below the lowest healthy BMI of 18.5) and bmi = 25.8, so

BF% = [1 – bmiz/bmi] * 100 = [1- 18/25.8] * 100 = 30.2%.

Is this correct?  30% body fat for me seems pretty high, but then again I have no idea what it would be.  I’m at the top of the normal range, even a little overweight.  The normal range for me goes all the way down to 125 pounds or about 50 kg, so that implies that 27kg or 35% of me is fat.  So 30% seems pretty reasonable.

As calculated above, at a typical weight a 1% change in BMI corresponded to a 4% change in BF%.  Using a similar calculation, at BMI = 18.5 that ratio is 1% to 5.5%.  So for a man, if BMI = 18.5 means BF% of 2%, then a BMI = 18 should mean zero body fat.  (That’s how I got the bmiz = 0 I used above.)  For a woman, BMI = 18.5 means BF% = 10%, so using the same 1% to 5.5% ratio, it would be a BMI = 17 means zero body fat.

So the formula for a man is BF% = [1 – (18/BMI)] * 100

And for a woman is BF% = [1 – (17/BMI)] * 100