Skip to content
🛠️ToolsShed

Waist-to-Hip Ratio Calculator

Calculate your WHR and assess health risk based on WHO guidelines.

WHO Risk Categories

Waist-to-Hip Ratio thresholds

SexLowModerateHighVery High
Male<0.900.90–0.950.95–1.00≥1.00
Female<0.800.80–0.850.85–0.90≥0.90

About this tool

The Waist-to-Hip Ratio (WHR) is a simple yet powerful measurement that divides your waist circumference by your hip circumference to assess body shape and health risk. Unlike BMI, which only considers overall weight, WHR specifically measures central obesity—fat stored around the abdomen—which is strongly linked to cardiovascular disease, type 2 diabetes, and metabolic syndrome. Health organizations like the WHO use WHR thresholds to evaluate whether your weight distribution poses a health risk regardless of your overall body mass.

Using this calculator is straightforward: measure your natural waist at the narrowest point just above your hip bones, and measure your hips at the widest part of your buttocks. Enter both measurements in centimeters or inches, and the tool instantly calculates your ratio and categorizes your health status according to WHO guidelines. The color-coded results show whether your ratio is normal, overweight, or obese-class, helping you understand if your current body composition warrants lifestyle changes or medical consultation.

Keep in mind that WHR is most accurate when measurements are taken consistently and honestly—standing relaxed in front of a mirror often yields the best results. While WHR is a reliable health indicator, it should not replace professional medical advice; consult your doctor if you have concerns about your cardiovascular health or need personalized guidance on diet and exercise.

Frequently Asked Questions

Code Implementation

def waist_to_hip_ratio(waist_cm, hip_cm):
    """
    Calculate Waist-to-Hip Ratio (WHR).

    Parameters:
        waist_cm - waist circumference in centimetres
        hip_cm   - hip circumference in centimetres

    Returns WHR as a float.
    """
    if hip_cm <= 0:
        raise ValueError("Hip circumference must be greater than 0")
    return waist_cm / hip_cm

def whr_risk(whr, gender):
    """
    Classify WHR health risk using WHO thresholds.

    gender: 'male' or 'female'
    Returns: 'Low', 'Moderate', or 'High'
    """
    if gender.lower() == 'male':
        if whr < 0.90:  return 'Low'
        if whr < 1.00:  return 'Moderate'
        return 'High'
    else:  # female
        if whr < 0.80:  return 'Low'
        if whr < 0.85:  return 'Moderate'
        return 'High'

def waist_height_ratio(waist_cm, height_cm):
    """
    Waist-to-Height Ratio (WHtR) — supplementary metric.
    Health threshold: < 0.5 for all adults.
    """
    return waist_cm / height_cm

# Examples
whr = waist_to_hip_ratio(85, 98)
print(f"WHR:      {whr:.2f}")
print(f"Risk (M): {whr_risk(whr, 'male')}")
print(f"Risk (F): {whr_risk(whr, 'female')}")
print(f"WHtR:     {waist_height_ratio(85, 175):.2f}")

Comments & Feedback

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