Body Fat Percentage Calculator
Accurate Body Fat Estimation using the U.S. Navy Method
Gender
Male
Female
Height (cm)
Weight (kg)
Neck Circumference (cm)
Waist Circumference (cm)
Hip Circumference (cm)
Calculate Body Fat
Your Estimated Body Fat:
0%
Category
Understanding Your Body Fat Percentage
Body fat percentage (BF%) is the total mass of fat divided by total body mass, multiplied by 100. Unlike BMI, which only considers height and weight, the BF calculation accounts for body composition, making it a more accurate health marker for athletes and active individuals.
How the Calculator Works
This tool utilizes the U.S. Navy Fitness Formula . This method is widely recognized for its accuracy without requiring expensive equipment like DXA scans or hydrostatic weighing. It uses specific circumference measurements to estimate body density and subsequent fat percentage.
Body Fat Categories
Description
Women
Men
Essential Fat
10-13%
2-5%
Athletes
14-20%
6-13%
Fitness
21-24%
14-17%
Average
25-31%
18-24%
Obese
32%+
25%+
Realistic Examples
Male Athlete: 180cm, 85kg, 39cm neck, 82cm waist. Result: ~12.5% Body Fat.
Female Fitness Enthusiast: 165cm, 60kg, 32cm neck, 68cm waist, 92cm hips. Result: ~22.1% Body Fat.
Measurement Tips
Waist: Measure at the narrowest point for women and at the navel level for men.
Neck: Measure below the Adam's apple, sloping slightly downward to the front.
Hips (Women only): Measure at the widest point of the buttocks.
Use a flexible measuring tape and ensure it is snug against the skin but not compressing it.
function toggleHipInput() {
var gender = document.getElementById("gender").value;
var hipContainer = document.getElementById("hip-container");
if (gender === "female") {
hipContainer.style.display = "block";
} else {
hipContainer.style.display = "none";
}
}
function calculateBF() {
var gender = document.getElementById("gender").value;
var height = parseFloat(document.getElementById("height").value);
var weight = parseFloat(document.getElementById("weight").value);
var neck = parseFloat(document.getElementById("neck").value);
var waist = parseFloat(document.getElementById("waist").value);
var hip = parseFloat(document.getElementById("hip").value);
var resultBox = document.getElementById("result-box");
var bfValueDisplay = document.getElementById("bf-value");
var bfCategoryDisplay = document.getElementById("bf-category");
var fatMassDisplay = document.getElementById("fat-mass");
var leanMassDisplay = document.getElementById("lean-mass");
if (isNaN(height) || isNaN(weight) || isNaN(neck) || isNaN(waist) || (gender === "female" && isNaN(hip))) {
alert("Please enter all required measurements correctly.");
return;
}
var bfPercent = 0;
// Navy Method Calculations (Metric)
if (gender === "male") {
// formula: 495 / (1.0324 – 0.19077 * log10(waist – neck) + 0.15456 * log10(height)) – 450
bfPercent = 495 / (1.0324 – 0.19077 * Math.log10(waist – neck) + 0.15456 * Math.log10(height)) – 450;
} else {
// formula: 495 / (1.29579 – 0.35004 * log10(waist + hip – neck) + 0.22100 * log10(height)) – 450
bfPercent = 495 / (1.29579 – 0.35004 * Math.log10(waist + hip – neck) + 0.22100 * Math.log10(height)) – 450;
}
if (bfPercent < 2) bfPercent = 2; // Floor at essential fat
var fatMass = (bfPercent / 100) * weight;
var leanMass = weight – fatMass;
// Determine Category
var category = "";
var catColor = "#333";
if (gender === "male") {
if (bfPercent < 6) { category = "Essential Fat"; catColor = "#e67e22"; }
else if (bfPercent < 14) { category = "Athlete"; catColor = "#27ae60"; }
else if (bfPercent < 18) { category = "Fitness"; catColor = "#2ecc71"; }
else if (bfPercent < 25) { category = "Average"; catColor = "#f1c40f"; }
else { category = "Obese"; catColor = "#e74c3c"; }
} else {
if (bfPercent < 14) { category = "Essential Fat"; catColor = "#e67e22"; }
else if (bfPercent < 21) { category = "Athlete"; catColor = "#27ae60"; }
else if (bfPercent < 25) { category = "Fitness"; catColor = "#2ecc71"; }
else if (bfPercent < 32) { category = "Average"; catColor = "#f1c40f"; }
else { category = "Obese"; catColor = "#e74c3c"; }
}
bfValueDisplay.innerHTML = bfPercent.toFixed(1) + "%";
bfCategoryDisplay.innerHTML = category;
bfCategoryDisplay.style.color = catColor;
fatMassDisplay.innerHTML = fatMass.toFixed(2) + " kg";
leanMassDisplay.innerHTML = leanMass.toFixed(2) + " kg";
resultBox.style.display = "block";
}