This page contains affiliate links. We may earn a commission at no extra cost to you if you make a purchase through these links. Our editorial opinions remain independent.

BMI Calculator

Your Body Mass Index (BMI) is a simple number derived from your height and weight that helps gauge whether you are in a healthy weight range. Use this free calculator to find your BMI instantly — no sign-up required. Toggle between Imperial (lb/ft) and Metric (kg/cm), and get a color-coded result along with your healthy weight range and a personalized goal panel.

<!-- Imperial Inputs -->
<div id="bmi-imperial-inputs">
  <div class="bmi-grid">
    <div class="bmi-field">
      <label>Height</label>
      <div class="bmi-height-imperial">
        <input type="number" id="imp-ft" placeholder="5" min="1" max="8" inputmode="decimal">
        <span>ft</span>
        <input type="number" id="imp-in" placeholder="7" min="0" max="11" inputmode="decimal">
        <span>in</span>
      </div>
    </div>
    <div class="bmi-field">
      <label>Weight (lbs)</label>
      <input type="number" id="imp-lbs" placeholder="154" min="1" max="1000" inputmode="decimal">
    </div>
    <div class="bmi-field">
      <label>Age (optional)</label>
      <input type="number" id="imp-age" placeholder="30" min="2" max="120" inputmode="decimal">
    </div>
    <div class="bmi-field">
      <label>Gender</label>
      <div class="bmi-gender-row">
        <label><input type="radio" name="bmi-gender-imp" value="male" checked> Male</label>
        <label><input type="radio" name="bmi-gender-imp" value="female"> Female</label>
      </div>
    </div>
  </div>
</div>

<!-- Metric Inputs -->
<div id="bmi-metric-inputs" style="display:none">
  <div class="bmi-grid">
    <div class="bmi-field">
      <label>Height (cm)</label>
      <input type="number" id="met-cm" placeholder="170" min="50" max="300" inputmode="decimal">
    </div>
    <div class="bmi-field">
      <label>Weight (kg)</label>
      <input type="number" id="met-kg" placeholder="70" min="1" max="500" inputmode="decimal">
    </div>
    <div class="bmi-field">
      <label>Age (optional)</label>
      <input type="number" id="met-age" placeholder="30" min="2" max="120" inputmode="decimal">
    </div>
    <div class="bmi-field">
      <label>Gender</label>
      <div class="bmi-gender-row">
        <label><input type="radio" name="bmi-gender-met" value="male" checked> Male</label>
        <label><input type="radio" name="bmi-gender-met" value="female"> Female</label>
      </div>
    </div>
  </div>
</div>

<button class="bmi-calc-btn" onclick="bmiCalculate()">Calculate My BMI</button>
<!-- Big Number -->
<div class="bmi-card" style="padding:0;overflow:hidden">
  <div id="bmi-number-wrap" class="bmi-result-number-wrap" style="margin:0;border-radius:0">
    <div id="bmi-number" class="bmi-result-number">--</div>
    <div id="bmi-cat-text" class="bmi-result-label">--</div>
  </div>

  <div style="padding:1.25rem">
    <!-- Scale Bar -->
    <div class="bmi-scale-wrap">
      <div class="bmi-scale-label">BMI Scale</div>
      <div class="bmi-scale-track">
        <div id="bmi-pointer" class="bmi-scale-pointer" style="left:0%"></div>
      </div>
      <div class="bmi-scale-ticks">
        <span>10</span>
        <span>18.5</span>
        <span>25</span>
        <span>30</span>
        <span>40+</span>
      </div>
    </div>

    <!-- Info Boxes -->
    <div class="bmi-info-grid">
      <div class="bmi-info-box">
        <div class="bmi-info-box-title">Your BMI</div>
        <div class="bmi-info-box-value" id="bmi-info-number">--</div>
      </div>
      <div class="bmi-info-box">
        <div class="bmi-info-box-title">Category</div>
        <div class="bmi-info-box-value" id="bmi-info-cat">--</div>
      </div>
      <div class="bmi-info-box">
        <div class="bmi-info-box-title">Healthy Weight Range</div>
        <div class="bmi-info-box-value" id="bmi-info-range">--</div>
      </div>
      <div class="bmi-info-box">
        <div class="bmi-info-box-title">Your Weight</div>
        <div class="bmi-info-box-value" id="bmi-info-weight">--</div>
      </div>
    </div>

    <!-- Goal Panel -->
    <div id="bmi-goal-panel" class="bmi-goal-panel bmi-on-track">
      <div class="bmi-goal-title" id="bmi-goal-title">Status</div>
      <div class="bmi-goal-text" id="bmi-goal-text"></div>
    </div>
  </div>
</div>

<!-- Chart Reference -->
<div class="bmi-card">
  <div class="bmi-chart-title">BMI Category Reference Chart</div>
  <table class="bmi-chart-table">
    <thead>
      <tr><th>Category</th><th>BMI Range</th></tr>
    </thead>
    <tbody id="bmi-chart-body">
      <tr data-cat="underweight"><td>Underweight</td><td>&lt; 18.5</td></tr>
      <tr data-cat="normal"><td>Normal</td><td>18.5 – 24.9</td></tr>
      <tr data-cat="overweight"><td>Overweight</td><td>25.0 – 29.9</td></tr>
      <tr data-cat="obese1"><td>Obese Class I</td><td>30.0 – 34.9</td></tr>
      <tr data-cat="obese2"><td>Obese Class II</td><td>35.0 – 39.9</td></tr>
      <tr data-cat="obese3"><td>Obese Class III</td><td>&#8805; 40.0</td></tr>
    </tbody>
  </table>
</div>

BMI is a screening tool, not a diagnostic measure. It does not account for muscle mass, bone density, or fat distribution. Consult a qualified healthcare professional for personalized health and weight advice.