{"id":2429,"date":"2026-02-13T22:26:15","date_gmt":"2026-02-13T20:26:15","guid":{"rendered":"https:\/\/bio-me.bio\/?page_id=2429"},"modified":"2026-02-17T20:53:31","modified_gmt":"2026-02-17T18:53:31","slug":"body-fat-calculator-navy-method","status":"publish","type":"page","link":"https:\/\/bio-me.bio\/?page_id=2429","title":{"rendered":"Body Fat % Calculator (Navy Method)"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-bf-7e0c2\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Body Fat % Calculator (Navy Method)<\/h2>\n    <p class=\"eco-tool__lead\">\n      Estimate body fat percentage using the U.S. Navy circumference method. Educational estimate.\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-bf-form-7e0c2\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <!-- Sex -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-bf-sex-7e0c2\">\n          Sex<br>(formula)\n        <\/label>\n        <select class=\"eco-tool__input\" id=\"eco-bf-sex-7e0c2\">\n          <option value=\"male\" selected>Male<\/option>\n          <option value=\"female\">Female<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">The Navy formula differs by sex.<\/div>\n      <\/div>\n\n      <!-- Units -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-bf-unit-7e0c2\">\n          Units<br>system\n        <\/label>\n        <select class=\"eco-tool__input\" id=\"eco-bf-unit-7e0c2\">\n          <option value=\"metric\" selected>Metric (cm)<\/option>\n          <option value=\"imperial\">Imperial (inches)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Use the same unit for all measurements.<\/div>\n      <\/div>\n\n      <!-- Height -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" id=\"eco-bf-hlabel-7e0c2\" for=\"eco-bf-height-7e0c2\">\n          Height<br>(cm)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-bf-height-7e0c2\" type=\"number\" min=\"0\" step=\"any\" placeholder=\"e.g., 175\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Measure without shoes.<\/div>\n      <\/div>\n\n      <!-- Neck -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" id=\"eco-bf-nlabel-7e0c2\" for=\"eco-bf-neck-7e0c2\">\n          Neck<br>(cm)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-bf-neck-7e0c2\" type=\"number\" min=\"0\" step=\"any\" placeholder=\"e.g., 38\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Measure just below Adam\u2019s apple.<\/div>\n      <\/div>\n\n      <!-- Waist -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" id=\"eco-bf-wlabel-7e0c2\" for=\"eco-bf-waist-7e0c2\">\n          Waist<br>(cm)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-bf-waist-7e0c2\" type=\"number\" min=\"0\" step=\"any\" placeholder=\"e.g., 85\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">At navel level (relaxed).<\/div>\n      <\/div>\n\n      <!-- Hip (female only) -->\n      <div class=\"eco-tool__field\" id=\"eco-bf-hipwrap-7e0c2\" style=\"display:none;\">\n        <label class=\"eco-tool__label\" id=\"eco-bf-hplabel-7e0c2\" for=\"eco-bf-hip-7e0c2\">\n          Hip<br>(cm)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-bf-hip-7e0c2\" type=\"number\" min=\"0\" step=\"any\" placeholder=\"e.g., 95\" inputmode=\"decimal\" \/>\n        <div class=\"eco-tool__hint\">Widest point of hips.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-bf-calc-7e0c2\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-bf-reset-7e0c2\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-bf-error-7e0c2\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-bf-result-7e0c2\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Result<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Estimated body fat<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-bf-out-7e0c2\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\">Percent (%)<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Method<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-bf-method-7e0c2\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub eco-tool__muted\" id=\"eco-bf-eq-7e0c2\">\u2014<\/div>\n      <\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      This is an estimate. Measuring tape position and posture can change results.\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n.eco-tool{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:16px}\n.eco-tool__grid3{display:grid;grid-template-columns:1fr;gap:16px}\n@media (min-width:860px){.eco-tool__grid3{grid-template-columns:1fr 1fr 1fr}}\n.eco-tool__field{display:flex;flex-direction:column;gap:6px}\n.eco-tool__label{font-weight:600}\n.eco-tool__input{height:44px;padding:0 12px;border:1px solid rgba(0,0,0,.2);border-radius:10px;background:#fff;font:inherit;box-sizing:border-box}\n.eco-tool select.eco-tool__input{appearance:none;padding-right:40px}\n.eco-tool__hint{font-size:.92em;opacity:.78;min-height:38px}\n\n.eco-tool__actions{display:flex;gap:10px;margin-top:16px;align-items:center;flex-wrap:wrap}\n.eco-tool__btn{padding:10px 22px}\n.eco-tool__btn--ghost{background:transparent!important;border:1px solid rgba(0,0,0,.2)!important}\n.eco-tool__btn--ghost:hover,.eco-tool__btn--ghost:focus{background:rgba(0,0,0,.06)!important;border-color:rgba(0,0,0,.35)!important}\n.eco-tool__error{font-weight:600;min-height:1.2em;flex:1 1 240px}\n\n.eco-tool__result{margin-top:16px}\n.eco-tool__subtitle{margin:0 0 10px}\n.eco-tool__cards{display:grid;gap:10px;grid-template-columns:1fr}\n@media (min-width:860px){.eco-tool__cards{grid-template-columns:1fr 1fr}}\n.eco-tool__card{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px}\n.eco-tool__metric-label{opacity:.85;font-weight:600}\n.eco-tool__metric-value{font-size:1.6em;font-weight:800;margin-top:6px;line-height:1.1}\n.eco-tool__metric-sub{opacity:.85;margin-top:6px}\n.eco-tool__muted{opacity:.8}\n.eco-tool__note{margin-top:10px;opacity:.9}\n<\/style>\n\n<script>\n(function(){\n  const S=\"7e0c2\";\n  const el=(id)=>document.getElementById(id+\"-\"+S);\n\n  const sexEl=el(\"eco-bf-sex\");\n  const unitEl=el(\"eco-bf-unit\");\n\n  const hLabel=el(\"eco-bf-hlabel\");\n  const nLabel=el(\"eco-bf-nlabel\");\n  const wLabel=el(\"eco-bf-wlabel\");\n  const hpLabel=el(\"eco-bf-hplabel\");\n\n  const heightEl=el(\"eco-bf-height\");\n  const neckEl=el(\"eco-bf-neck\");\n  const waistEl=el(\"eco-bf-waist\");\n  const hipWrap=el(\"eco-bf-hipwrap\");\n  const hipEl=el(\"eco-bf-hip\");\n\n  const calcBtn=el(\"eco-bf-calc\");\n  const resetBtn=el(\"eco-bf-reset\");\n  const errEl=el(\"eco-bf-error\");\n\n  const resEl=el(\"eco-bf-result\");\n  const outEl=el(\"eco-bf-out\");\n  const methodEl=el(\"eco-bf-method\");\n  const eqEl=el(\"eco-bf-eq\");\n\n  function setError(msg){ errEl.textContent = msg || \"\"; }\n  function fmt(n,d){ return Number(n).toLocaleString(undefined,{maximumFractionDigits:d}); }\n\n  function log10(x){ return Math.log(x)\/Math.LN10; }\n\n  function setUI(){\n    const sex = sexEl.value;\n    const u = unitEl.value;\n\n    hipWrap.style.display = (sex === \"female\") ? \"flex\" : \"none\";\n\n    const unitText = (u === \"metric\") ? \"cm\" : \"in\";\n    hLabel.innerHTML = `Height<br>(${unitText})`;\n    nLabel.innerHTML = `Neck<br>(${unitText})`;\n    wLabel.innerHTML = `Waist<br>(${unitText})`;\n    hpLabel.innerHTML = `Hip<br>(${unitText})`;\n\n    setError(\"\");\n    resEl.hidden = true;\n  }\n\n  function valNum(input){\n    const v = Number(input.value);\n    return Number.isFinite(v) ? v : NaN;\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const sex = sexEl.value;\n    const u = unitEl.value;\n\n    \/\/ Convert to inches because standard Navy equations are in inches\n    const height = valNum(heightEl);\n    const neck = valNum(neckEl);\n    const waist = valNum(waistEl);\n    const hip = valNum(hipEl);\n\n    if(!(height > 0) || !(neck > 0) || !(waist > 0)){\n      setError(\"Please enter valid height, neck, and waist values.\");\n      resEl.hidden = true;\n      return;\n    }\n    if(sex === \"female\" && !(hip > 0)){\n      setError(\"Please enter a valid hip value (required for female formula).\");\n      resEl.hidden = true;\n      return;\n    }\n\n    const toIn = (u === \"metric\") ? (1\/2.54) : 1;\n    const H = height * toIn;\n    const N = neck * toIn;\n    const W = waist * toIn;\n    const Hp = hip * toIn;\n\n    \/\/ Validity checks for log arguments\n    if(sex === \"male\"){\n      const a = W - N;\n      if(a <= 0){\n        setError(\"Waist must be greater than neck for the male formula.\");\n        resEl.hidden = true;\n        return;\n      }\n      \/\/ Male: %BF = 86.010*log10(waist-neck) - 70.041*log10(height) + 36.76\n      const bf = 86.010*log10(a) - 70.041*log10(H) + 36.76;\n\n      if(!Number.isFinite(bf) || bf <= 0){\n        setError(\"Inputs produced an unrealistic result. Check measurements.\");\n        resEl.hidden = true;\n        return;\n      }\n\n      outEl.textContent = `${fmt(bf,1)}%`;\n      methodEl.textContent = \"U.S. Navy (Male)\";\n      eqEl.textContent = \"BF% = 86.010\u00b7log10(waist\u2212neck) \u2212 70.041\u00b7log10(height) + 36.76\";\n    } else {\n      const a = W + Hp - N;\n      if(a <= 0){\n        setError(\"For the female formula, (waist + hip) must be greater than neck.\");\n        resEl.hidden = true;\n        return;\n      }\n      \/\/ Female: %BF = 163.205*log10(waist+hip-neck) - 97.684*log10(height) - 78.387\n      const bf = 163.205*log10(a) - 97.684*log10(H) - 78.387;\n\n      if(!Number.isFinite(bf) || bf <= 0){\n        setError(\"Inputs produced an unrealistic result. Check measurements.\");\n        resEl.hidden = true;\n        return;\n      }\n\n      outEl.textContent = `${fmt(bf,1)}%`;\n      methodEl.textContent = \"U.S. Navy (Female)\";\n      eqEl.textContent = \"BF% = 163.205\u00b7log10(waist+hip\u2212neck) \u2212 97.684\u00b7log10(height) \u2212 78.387\";\n    }\n\n    resEl.hidden = false;\n  }\n\n  function reset(){\n    sexEl.value = \"male\";\n    unitEl.value = \"metric\";\n    heightEl.value = \"\";\n    neckEl.value = \"\";\n    waistEl.value = \"\";\n    hipEl.value = \"\";\n    setError(\"\");\n    resEl.hidden = true;\n    setUI();\n  }\n\n  sexEl.addEventListener(\"change\", setUI);\n  unitEl.addEventListener(\"change\", setUI);\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n\n  setUI();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Body Fat % Calculator (Navy Method) Estimate body fat percentage using the U.S. Navy circumference method. Educational estimate. Sex(formula) MaleFemale The Navy formula differs by sex. Unitssystem Metric (cm)Imperial (inches)&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2457,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2429"}],"collection":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2429"}],"version-history":[{"count":2,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2429\/revisions"}],"predecessor-version":[{"id":2487,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2429\/revisions\/2487"}],"up":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2457"}],"wp:attachment":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}