Fat Percentage Calculator

Body Fat Percentage Calculator

U.S. Navy Method Estimation

Male Female
Metric (cm, kg) Imperial (in, lbs)

Your Estimated Body Fat

0%
Category: Normal
Fat Mass: 0 | Lean Mass: 0

Understanding Body Fat Percentage

Body fat percentage is a measurement of your total body mass that is composed of fat, as opposed to lean muscle, bones, and organs. Unlike BMI, which only looks at weight and height, body fat percentage gives a clearer picture of health and fitness levels.

The U.S. Navy Method

This calculator uses the U.S. Navy Body Fat formula, which is one of the most accurate tape-measure methods. It relies on specific circumference measurements to estimate body density. For the best results, measure yourself in the morning before eating.

Category Men Range Women Range
Essential Fat 2-5% 10-13%
Athletes 6-13% 14-20%
Fitness 14-17% 21-24%
Average 18-24% 25-31%
Obese 25%+ 32%+

How to Measure Correctly

  • Height: Stand straight against a wall without shoes.
  • Neck: Measure below the larynx, sloping slightly downward to the front.
  • Waist: Men: Measure at the navel. Women: Measure at the narrowest point.
  • Hips (Women only): Measure at the widest point of the buttocks.
function toggleHips() { var gender = document.getElementById("gender").value; var hipsContainer = document.getElementById("hipsContainer"); if (gender === "female") { hipsContainer.style.display = "block"; } else { hipsContainer.style.display = "none"; } } function updateLabels() { var units = document.getElementById("units").value; var isMetric = (units === "metric"); document.getElementById("heightLabel").innerText = "Height (" + (isMetric ? "cm" : "in") + ")"; document.getElementById("weightLabel").innerText = "Weight (" + (isMetric ? "kg" : "lbs") + ")"; document.getElementById("neckLabel").innerText = "Neck Circumference (" + (isMetric ? "cm" : "in") + ")"; document.getElementById("waistLabel").innerText = "Waist Circumference (" + (isMetric ? "cm" : "in") + ")"; document.getElementById("hipsLabel").innerText = "Hip Circumference (" + (isMetric ? "cm" : "in") + ")"; } function calculateBodyFat() { var gender = document.getElementById("gender").value; var units = document.getElementById("units").value; var h = parseFloat(document.getElementById("height").value); var w = parseFloat(document.getElementById("weight").value); var n = parseFloat(document.getElementById("neck").value); var wa = parseFloat(document.getElementById("waist").value); var hi = parseFloat(document.getElementById("hips").value) || 0; if (!h || !w || !n || !wa || (gender === "female" && !hi)) { alert("Please enter all required measurements."); return; } var bodyFat = 0; var weightUnit = (units === "metric") ? "kg" : "lbs"; // Standardize to metric for calculation logic var heightCm = (units === "metric") ? h : h * 2.54; var neckCm = (units === "metric") ? n : n * 2.54; var waistCm = (units === "metric") ? wa : wa * 2.54; var hipCm = (units === "metric") ? hi : hi * 2.54; if (gender === "male") { // U.S. Navy formula for men (metric) bodyFat = 495 / (1.0324 – 0.19077 * Math.log10(waistCm – neckCm) + 0.15456 * Math.log10(heightCm)) – 450; } else { // U.S. Navy formula for women (metric) bodyFat = 495 / (1.29579 – 0.35004 * Math.log10(waistCm + hipCm – neckCm) + 0.22100 * Math.log10(heightCm)) – 450; } if (bodyFat < 2) bodyFat = 2; // Minimum floor for essential fat var fatMass = (w * (bodyFat / 100)).toFixed(1); var leanMass = (w – fatMass).toFixed(1); displayResult(bodyFat, gender, fatMass, leanMass, weightUnit); } function displayResult(percentage, gender, fatMass, leanMass, unit) { var resArea = document.getElementById("resultArea"); var pctDiv = document.getElementById("fatPercentage"); var catDiv = document.getElementById("fatCategory"); var massDiv = document.getElementById("fatMass"); pctDiv.innerText = percentage.toFixed(1) + "%"; massDiv.innerText = "Fat Mass: " + fatMass + " " + unit + " | Lean Mass: " + leanMass + " " + unit; var category = ""; if (gender === "male") { if (percentage < 6) category = "Essential Fat"; else if (percentage < 14) category = "Athlete"; else if (percentage < 18) category = "Fitness"; else if (percentage < 25) category = "Average"; else category = "Obese"; } else { if (percentage < 14) category = "Essential Fat"; else if (percentage < 21) category = "Athlete"; else if (percentage < 25) category = "Fitness"; else if (percentage < 32) category = "Average"; else category = "Obese"; } catDiv.innerText = "Category: " + category; resArea.style.display = "block"; resArea.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }

Leave a Comment