Navy Body Fat
Measure What Matters.
The scale lies. The US Navy Body Fat method uses tape measurements to provide a highly accurate estimate of your true body composition. Track your body fat percentage to ensure you are losing fat, not hard-earned muscle.
Body Fat % Calculator (Navy Method)
Disclaimer: This tool is for informational purposes only and is not a substitute for professional medical advice, diagnosis, or treatment.
Estimated Body Fat
Category: Average
let currentUnit = 'imperial'; let currentGender = 'male';
function setGender(gender) { currentGender = gender; document.getElementById('btnMale').classList.toggle('active', gender === 'male'); document.getElementById('btnFemale').classList.toggle('active', gender === 'female'); document.getElementById('hipGroup').style.display = gender === 'female' ? 'block' : 'none'; }
function setUnit(unit) { currentUnit = unit; document.getElementById('btnImp').classList.toggle('active', unit === 'imperial'); document.getElementById('btnMet').classList.toggle('active', unit === 'metric');
let u = unit === 'imperial' ? '(inches)' : '(cm)'; document.getElementById('lblHeight').innerText = 'Height ' + u; document.getElementById('lblNeck').innerText = 'Neck Circumference ' + u; document.getElementById('lblWaist').innerText = 'Waist Circumference ' + u; document.getElementById('lblHip').innerText = 'Hip Circumference ' + u; }
function calculateBF() { let h = parseFloat(document.getElementById('height').value); let n = parseFloat(document.getElementById('neck').value); let w = parseFloat(document.getElementById('waist').value); let hip = parseFloat(document.getElementById('hip').value);
if (!h || !n || !w || (currentGender === 'female' && !hip)) { alert('Please fill in all measurements.'); return; }
if (currentUnit === 'imperial') { h *= 2.54; n *= 2.54; w *= 2.54; hip *= 2.54; }
let bf = 0; if (currentGender === 'male') { bf = 495 / (1.0324 - 0.19077 * Math.log10(w - n) + 0.15456 * Math.log10(h)) - 450; } else { bf = 495 / (1.29579 - 0.35004 * Math.log10(w + hip - n) + 0.22100 * Math.log10(h)) - 450; }
if (isNaN(bf) || bf < 0 || bf > 80) { alert('Invalid measurements resulting in impossible body fat percentage. Please check inputs.'); return; }
document.getElementById('bfResult').innerText = bf.toFixed(1) + '%';
let category = ''; if (currentGender === 'male') { if (bf < 6) category = 'Essential Fat'; else if (bf < 14) category = 'Athletes'; else if (bf < 18) category = 'Fitness'; else if (bf < 25) category = 'Average'; else category = 'Obese'; } else { if (bf < 14) category = 'Essential Fat'; else if (bf < 21) category = 'Athletes'; else if (bf < 25) category = 'Fitness'; else if (bf < 32) category = 'Average'; else category = 'Obese'; } document.getElementById('categoryResult').innerText = 'Category: ' + category; document.getElementById('results').style.display = 'block'; }
let currentUnit = 'imperial'; let currentGender = 'male';
function setGender(gender) { currentGender = gender; document.getElementById('btnMale').classList.toggle('active', gender === 'male'); document.getElementById('btnFemale').classList.toggle('active', gender === 'female'); document.getElementById('hipGroup').style.display = gender === 'female' ? 'block' : 'none'; }
function setUnit(unit) { currentUnit = unit; document.getElementById('btnImp').classList.toggle('active', unit === 'imperial'); document.getElementById('btnMet').classList.toggle('active', unit === 'metric');
let u = unit === 'imperial' ? '(inches)' : '(cm)'; document.getElementById('lblHeight').innerText = 'Height ' + u; document.getElementById('lblNeck').innerText = 'Neck Circumference ' + u; document.getElementById('lblWaist').innerText = 'Waist Circumference ' + u; document.getElementById('lblHip').innerText = 'Hip Circumference ' + u; }
function calculateBF() { let h = parseFloat(document.getElementById('height').value); let n = parseFloat(document.getElementById('neck').value); let w = parseFloat(document.getElementById('waist').value); let hip = parseFloat(document.getElementById('hip').value);
if (!h || !n || !w || (currentGender === 'female' && !hip)) { alert('Please fill in all measurements.'); return; }
if (currentUnit === 'imperial') { h *= 2.54; n *= 2.54; w *= 2.54; hip *= 2.54; }
let bf = 0; if (currentGender === 'male') { bf = 495 / (1.0324 - 0.19077 * Math.log10(w - n) + 0.15456 * Math.log10(h)) - 450; } else { bf = 495 / (1.29579 - 0.35004 * Math.log10(w + hip - n) + 0.22100 * Math.log10(h)) - 450; }
if (isNaN(bf) || bf < 0 || bf > 80) { alert('Invalid measurements resulting in impossible body fat percentage. Please check inputs.'); return; }
document.getElementById('bfResult').innerText = bf.toFixed(1) + '%';
let category = '';
if (currentGender === 'male') {
if (bf < 6) category = 'Essential Fat';
else if (bf < 14) category = 'Athletes';
else if (bf < 18) category = 'Fitness';
else if (bf < 25) category = 'Average';
else category = 'Obese';
} else {
if (bf < 14) category = 'Essential Fat';
else if (bf < 21) category = 'Athletes';
else if (bf < 25) category = 'Fitness';
else if (bf < 32) category = 'Average';
else category = 'Obese';
}
document.getElementById('categoryResult').innerText = 'Category: ' + category;
document.getElementById('results').style.display = 'block';
}