Skip to content
🛠️ToolsShed

Body Surface Area Calculator

Calculate body surface area using the Mosteller and DuBois formulas — used in medication dosing.

About this tool

Body Surface Area (BSA) is a clinical measurement that represents the total skin surface of the human body, expressed in square meters. Unlike height and weight alone, BSA accounts for how these measurements combine to give a more accurate estimate of metabolic rate and physiological needs. BSA is crucial in medicine because medication dosages, especially for chemotherapy and certain cardiac or renal drugs, are often calculated based on BSA rather than simple body weight—ensuring dosing is both safe and effective across patients of all body types.

To calculate your BSA, simply enter your height and weight in either metric or imperial units. The tool provides results using both the Mosteller formula (the most commonly used in modern clinical practice) and the DuBois formula (historically significant and still used in some contexts). These formulas differ slightly but both are widely accepted; your healthcare provider will indicate which is appropriate for your specific medication. The result helps you and your doctor determine the correct therapeutic dose or assess your relative body composition.

BSA calculators are indispensable for patients undergoing cancer treatment, those on specialized medications, or anyone whose therapy is dose-adjusted by body surface. However, these formulas are mathematical approximations based on population averages—actual metabolic variation between individuals exists. Your healthcare team will use BSA as one of several factors in dosing decisions; always follow your provider's guidance rather than self-adjusting medication based on calculator results alone.

Frequently Asked Questions

Code Implementation

import math

def bsa_mosteller(height_cm: float, weight_kg: float) -> float:
    """
    Mosteller formula: BSA (m²) = sqrt(height_cm * weight_kg / 3600)
    Widely used due to simplicity and clinical accuracy.
    """
    return math.sqrt(height_cm * weight_kg / 3600)

def bsa_dubois(height_cm: float, weight_kg: float) -> float:
    """
    DuBois & DuBois formula (1916):
    BSA (m²) = 0.007184 * height_cm^0.725 * weight_kg^0.425
    """
    return 0.007184 * (height_cm ** 0.725) * (weight_kg ** 0.425)

def bsa_haycock(height_cm: float, weight_kg: float) -> float:
    """
    Haycock formula (1978) — recommended for children and neonates:
    BSA (m²) = 0.024265 * height_cm^0.3964 * weight_kg^0.5378
    """
    return 0.024265 * (height_cm ** 0.3964) * (weight_kg ** 0.5378)

# Comparison across formulas
cases = [
    ("Avg adult male",   178, 80),
    ("Avg adult female", 165, 65),
    ("Child (10 y)",     140, 35),
    ("Large adult",      190, 110),
]

print(f"{'Case':<22} {'Mosteller':>10} {'DuBois':>8} {'Haycock':>9}")
print("-" * 52)
for name, h, w in cases:
    m  = bsa_mosteller(h, w)
    d  = bsa_dubois(h, w)
    hc = bsa_haycock(h, w)
    print(f"{name:<22} {m:>10.3f} {d:>8.3f} {hc:>9.3f}")

Comments & Feedback

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