Compare your baby's weight against WHO (World Health Organization) growth standards for infants aged 0-36 months.
Boy
Girl
Understanding Infant Weight Percentiles
Infant weight percentiles are a tool used by pediatricians to track a child's growth over time. A percentile indicates how your baby's weight compares to other babies of the same age and sex. For example, if your baby is in the 75th percentile, it means they weigh more than 75% of babies their age and less than 25%.
WHO vs. CDC Growth Charts
This calculator utilizes the WHO Child Growth Standards. The WHO charts are based on infants raised in environments that promote healthy growth, such as being breastfed. The CDC (Centers for Disease Control) also provides charts, but these are typically used for children older than 2 years in the United States, or for infants based on historical data that included formula-fed babies.
Calculation Example
Consider a 6-month-old baby boy who weighs 7.9 kg. According to WHO data:
Age: 6 Months
Weight: 7.9 kg
Result: Approximately the 50th percentile.
This means the baby is exactly at the median weight for his age group.
When to Consult a Doctor
It is important to remember that a single data point is less important than the trend of growth. Most healthy babies follow a consistent percentile curve. Significant jumps up or down in percentiles may warrant a discussion with your pediatrician to ensure nutritional needs are being met.
function calculateInfantPercentile() {
var gender = document.getElementById('infant_gender').value;
var age = parseFloat(document.getElementById('infant_age').value);
var weight = parseFloat(document.getElementById('infant_weight').value);
var resultContainer = document.getElementById('growth_result_container');
var percentileVal = document.getElementById('percentile_val');
var percentileDesc = document.getElementById('percentile_desc');
if (isNaN(age) || isNaN(weight) || age 36 || weight <= 0) {
alert("Please enter valid age (0-36 months) and weight.");
return;
}
// Simplified WHO LMS Data for Weight-for-Age (Birth to 36 Months)
// L = Power transformation, M = Median weight, S = Coefficient of variation
// Data points for Boys at 0, 6, 12, 24, 36 months
var dataBoys = [
{m: 0, l: 0.3487, mu: 3.3464, s: 0.14602},
{m: 6, l: -0.0611, mu: 7.8978, s: 0.11803},
{m: 12, l: -0.1691, mu: 9.6487, s: 0.11264},
{m: 24, l: -0.2104, mu: 12.234, s: 0.11054},
{m: 36, l: -0.2016, mu: 14.322, s: 0.11520}
];
// Data points for Girls at 0, 6, 12, 24, 36 months
var dataGirls = [
{m: 0, l: 0.4349, mu: 3.2322, s: 0.14171},
{m: 6, l: -0.0163, mu: 7.2982, s: 0.12513},
{m: 12, l: -0.0886, mu: 8.9417, s: 0.11956},
{m: 24, l: -0.1256, mu: 11.514, s: 0.11894},
{m: 36, l: -0.1235, mu: 13.883, s: 0.12646}
];
var dataset = (gender === 'male') ? dataBoys : dataGirls;
// Linear interpolation of L, M, S values based on age
var L, M, S;
var i = 0;
while (i dataset[i+1].m) {
i++;
}
var p1 = dataset[i];
var p2 = dataset[i+1] || dataset[i];
if (p1.m === p2.m) {
L = p1.l; M = p1.mu; S = p1.s;
} else {
var ratio = (age – p1.m) / (p2.m – p1.m);
L = p1.l + ratio * (p2.l – p1.l);
M = p1.mu + ratio * (p2.mu – p1.mu);
S = p1.s + ratio * (p2.s – p1.s);
}
// Calculate Z-score using LMS formula: z = [((weight/M)^L) – 1] / (L*S)
var zScore = (Math.pow((weight / M), L) – 1) / (L * S);
// Convert Z-score to Percentile (Approximation of Standard Normal CDF)
var percentile = zScoreToPercentile(zScore);
resultContainer.style.display = "block";
resultContainer.style.backgroundColor = "#eaf2f8";
percentileVal.innerText = Math.round(percentile) + "th Percentile";
percentileDesc.innerText = "Your " + (gender === 'male' ? 'son' : 'daughter') + " weighs more than " + Math.round(percentile) + "% of children their age.";
}
function zScoreToPercentile(z) {
if (z 6.5) return 99.9;
var factK = 1;
var sum = 0;
var term = z;
var k = 0;
var loopStop = 100;
while(k < loopStop) {
sum += term;
k++;
factK *= k;
term = Math.pow(-1, k) * Math.pow(z, 2 * k + 1) / (Math.pow(2, k) * factK * (2 * k + 1));
}
return (0.5 + (1 / Math.sqrt(2 * Math.PI)) * sum) * 100;
}