Skip to content
🛠️ToolsShed

Ideal Weight Calculator

Calculate your ideal body weight based on height using multiple formulas.

About this tool

Ideal Weight Calculator estimates your healthy body weight using five evidence-based formulas recognized in sports medicine and fitness science. Rather than relying on a single method, this tool presents results from Robinson, Miller, Devine, Hamwi, and a Healthy BMI range to show how different expert approaches can yield slightly different targets based on height and gender. Understanding these multiple perspectives helps you establish a realistic and personalized weight goal.

Enter your gender and height in either centimeters (metric) or feet and inches (imperial), then click Calculate. The tool instantly displays weight recommendations from all five formulas in both kilograms and pounds. The Healthy BMI range shows a weight band corresponding to the standard healthy BMI window of 18.5 to 24.9, which many health organizations recommend for overall wellness.

No two people's ideal weight is truly identical—factors like bone density, muscle mass, age, and fitness level all influence what healthy weight means for you. These formulas work best as a starting point for discussion with a healthcare provider or fitness professional, especially if you have specific health conditions or athletic goals. Regular monitoring combined with overall fitness metrics gives a more complete picture than weight alone.

Frequently Asked Questions

Code Implementation

def ideal_weight(height_cm: float, sex: str) -> dict:
    """
    Calculate ideal body weight using Devine, Robinson, and Miller formulas.
    sex: 'male' or 'female'
    Returns weights in kg.
    """
    height_in = height_cm / 2.54
    inches_over_5ft = max(0, height_in - 60)  # inches above 5 feet

    if sex == "male":
        devine  = 50.0  + 2.3   * inches_over_5ft
        robinson = 52.0 + 1.9   * inches_over_5ft
        miller   = 56.2 + 1.41  * inches_over_5ft
    else:
        devine  = 45.5  + 2.3   * inches_over_5ft
        robinson = 49.0 + 1.7   * inches_over_5ft
        miller   = 53.1 + 1.36  * inches_over_5ft

    bmi_low  = 18.5 * (height_cm / 100) ** 2
    bmi_high = 24.9 * (height_cm / 100) ** 2

    return {
        "devine_kg":  round(devine, 1),
        "robinson_kg": round(robinson, 1),
        "miller_kg":  round(miller, 1),
        "bmi_range_kg": f"{bmi_low:.1f} - {bmi_high:.1f}",
    }

result = ideal_weight(170, "female")
print(f"Devine   : {result['devine_kg']} kg")
print(f"Robinson : {result['robinson_kg']} kg")
print(f"Miller   : {result['miller_kg']} kg")
print(f"BMI 18.5-24.9: {result['bmi_range_kg']} kg")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.