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.