MyAgeScore

Methodology

MyAgeScore is an educational health-marker age model, not a validated biological-age clock. The table reads weights, thresholds and citation labels from the code. That keeps those values aligned; it does not validate the coefficients or automatically verify the explanatory text.

Reference data generated: NHANES 2017–2018 · 2026-08-29

1. The model

Directional markers use the z-score at your chronological age and sex, multiplied by a configured years-per-SD coefficient to shift that age. Band/floor markers instead use deviation from configured ranges. The result combines their weighted mean with activity and sleep, limited to ±3 years. Final age is clamped to ±15 years around chronological age and to 18–80. This is not an age-search or best-fit procedure, nor PhenoAge.

matchedAge_i = clamp(age + z_i · dir_i · yearsPerSD_i,  age ± 15,  [18, 80])
      z_i = (value_i − μ_i(age, sex)) / σ_i(age, sex)

optimalBand   deviation = max(0, lo − value) + max(0, value − hi)
              matchedAge_i = clamp(age + (deviation / σ_i) · yearsPerSD_i,  age ± 15,  [18, 80])

optimalFloor  matchedAge_i = clamp(age + max(0, threshold − value) / σ_i · yearsPerSD_i,  age ± 15,  [18, 80])

factorAge_j = weightedMean(matchedAge_i in factor j)
weight_j = Σ w_i in factor j
BA_fit = Σ(weight_j · factorAge_j) / Σ weight_j
BA     = clamp(clamp(BA_fit + lifestyle,  age ± 15),  [18, 80])
lifestyle ∈ [−3, +3]
scenario = clamp(clamp(Σ(weight_j · min(factorAge_j, age)) / Σ weight_j − 3,  age ± 15),  [18, 80])
delta  = round1(BA − age)          Σ factor.impact === delta
Core formulas

2. Marker directions

These directions describe the model's arithmetic, not universal health rules. Sample averages are not health targets. BMI, waist-to-height ratio and blood pressure use configured bands, and vitamin D uses a floor. Very low glucose or very high HDL, for example, must not be assumed healthy because they lower this model's estimate.

higherWorse
Higher increases the model age relative to the sample mean for your age and sex; lower is not necessarily medically safer.
higherBetter
Higher decreases the model age using the reversed z-score; this does not imply unlimited health benefit.
optimalBand
Configured band: either-side deviation increases the model age; within the band is neutral.
optimalFloor
Configured floor: below-threshold values increase the model age; at or above is neutral, not necessarily safe.

3. Markers, weights and references

Weights and years per SD are heuristic product coefficients, not fitted or externally validated clinical calibrations. Weights are normalised across supplied markers. Years per SD converts one standard deviation into a model age shift. Listed sources concern clinical ranges or marker associations; they do not establish these numerical coefficients. Configured references are not individual treatment targets.

MarkerDirectionWeightYears / SDClinical reference
HbA1c (Blood Sugar Control)higherWorse1.210Normal < 5.7%Clinical sources, not coefficient validationAmerican Diabetes Association, diabetes diagnostic criteria (clinical context only)
Blood GlucosehigherWorse1.08Fasting 70–99 mg/dLClinical sources, not coefficient validationAmerican Diabetes Association, diabetes diagnostic criteria (clinical context only)
Waist-to-Height RatiooptimalBand0.4 – 0.50.98Model band 0.40–0.50Clinical sources, not coefficient validationAshwell, Gunn & Gibson, cardiometabolic screening meta-analysis (Obesity Reviews, 2012); not age-coefficient validation
Blood Pressure — SystolicoptimalBand90 – 1200.97Normal < 120 mmHgClinical sources, not coefficient validationWhelton et al., 2017 ACC/AHA Hypertension Guideline; model band 90–120 is not a universal treatment target
Inflammation (CRP)higherWorse0.87Low risk < 1.0 mg/LClinical sources, not coefficient validationRidker, hs-CRP and cardiovascular risk (Circulation, 2003)
Body CompositionoptimalBand18.5 – 24.90.77Healthy 18.5–24.9 kg/m²Clinical sources, not coefficient validationWHO body mass index classification; Global BMI Mortality Collaboration (Lancet, 2016)
Total CholesterolhigherWorse0.66Desirable < 200 mg/dLClinical sources, not coefficient validationGrundy et al., ACC/AHA Cholesterol Guideline (2018)
TriglycerideshigherWorse0.65Normal < 150 mg/dLClinical sources, not coefficient validationGrundy et al., ACC/AHA Cholesterol Guideline (2018)
Heart RatehigherWorse0.55Model compares with age/sex sample mean; no fixed optimal rangeClinical sources, not coefficient validationZhang et al., resting heart rate and all-cause mortality (CMAJ, 2016)
Blood Pressure — DiastolicoptimalBand60 – 800.45Normal < 80 mmHgClinical sources, not coefficient validationWhelton et al., ACC/AHA Hypertension Guideline (2017)
HDL CholesterolhigherBetter0.35Model assumes higherBetter; not a universal HDL targetClinical sources, not coefficient validationGrundy et al., ACC/AHA Cholesterol Guideline (2018); clinical context, not validation of a monotonic HDL benefit
Vitamin DoptimalFloor30 – ∞0.35Historical model floor 30 ng/mL; not a universal treatment targetClinical sources, not coefficient validationHolick et al. (2011), historical threshold; Demay et al., Endocrine Society (2024), disease-prevention update

4. Attribution

Each factor card shows how many years that marker contributed. Contributions are distributed with largest-remainder rounding, so they always add up exactly to your total difference — no hidden residual.

5. Estimate vs hypothetical scenario

The hypothetical scenario takes the lower of each grouped factor age and your chronological age, preserving negative shifts and neutralising positive ones. Blood pressure and lipids are each grouped before this step. It applies the best lifestyle adjustment (−3 years) and the same age limits. The difference is a model scenario gap, not evidence of years recoverable through treatment or lifestyle changes.

6. Data sources

Measured-marker means, standard deviations and percentiles use NHANES 2017–2018 records with completed interview/examination and recorded ages 18–80, in six bands by sex. Recorded age 80 includes everyone aged 80 or older. The processor uses no survey weights, trims pooled marker values at the 0.1st and 99.9th percentiles, and omits groups with fewer than 30 observations. These are sample statistics, not representative US estimates or healthy targets. Means and SDs are interpolated between band midpoints, with endpoint values outside 24–75.

Age-band midpoints: 18-29 → 24 · 30-39 → 34.5 · 40-49 → 44.5 · 50-59 → 54.5 · 60-69 → 64.5 · 70-80 → 75

Measured-marker statistics in the static JSON can be reproduced from the local parquet cache with scripts/process_nhanes.py --audit, without replacing it. Fresh CDC downloads have not been independently compared with that cache. Fasting eligibility is not explicitly filtered; tiny positive values in cached weights and diastolic readings need review. Pregnancy is not excluded. Activity and sleep references are legacy model inputs with publication-level provenance still unverified, not statistics computed by this processor.

7. Limitations

No external validation of this tool against mortality, clinical outcomes or epigenetic age has been established. Heuristic coefficients, unweighted US sample references, correlated markers, self-report and age limits affect the estimate. Coverage counts optional grouped factors, not an uncertainty interval. The historical vitamin D threshold comes from 2011; the 2024 Endocrine Society update states that optimal levels for disease prevention remain uncertain. Do not change medication, supplements or sun exposure to lower this score; discuss abnormal measurements with a healthcare professional.

Try it yourself

The calculation runs entirely in your browser. Nothing you enter is transmitted or stored.

Start the Test