We Built a Free Biological Age Calculator — 18 Inputs, 2 Minutes, No Blood Test
Key Takeaways
- We just shipped dorsi.ai/biological-age-calculator — a free biological age estimator: 18 self-reported inputs, 2 minutes, no signup, no email, no blood test. Your data never leaves your browser.
- It's grounded in 14 peer-reviewed cohort studies (Aune 2016 BMJ, Nes 2011 MSSE, Mandsager 2018 JAMA Network Open, Saeidifard 2019, Paluch 2022 Lancet Public Health, Windred 2024 SLEEP, Doll 2004 BMJ, and others). Every coefficient traces back to a paper you can click through to.
- The output isn't just a single age — it's a per-dimension breakdown across body composition, cardiovascular fitness, strength & movement, sleep & recovery, and lifestyle habits. The breakdown tells you which lifestyle factor is your single biggest lever, which is the part that actually changes anything.
- The scoring engine is open source under MIT: github.com/YusongCui/biological-age-calculator. We packaged it as a Claude Code / Codex CLI skill so any AI assistant can run the same algorithm — and as a plain JS module for any app to embed. Read every coefficient. Disagree with our tables? Fork it.
- We didn't build a blood/DNA clock and won't pretend to. If you want PhenoAge or GrimAge accuracy, you need a $200–$500 lab test (TruDiagnostic, NOVOS). What we built is the best free starting point — useful as a "where am I" first signal and as an intervention-direction-finder.
Why we built it
Two weeks ago we ran a deep-dive on how biological age is actually calculated. The short version of what we found:
- The gold-standard clocks (GrimAge, DunedinPACE) require a $200–$500 DNA-methylation test and a clinic visit. Most people won't ever take one.
- The free / cheap alternatives split into two camps. One camp does it honestly (Garmin's Fitness Age = VO₂max repackaged; Apple's Cardio Fitness = same). The other camp wraps a proprietary score in marketing language and asks you to trust them ("biological age", "wellness score", "vitality index" — all undefined under the hood).
- There's a middle ground nobody had built well: a free, defensible, cited estimator that uses inputs anyone can self-report in two minutes and is transparent about exactly where each year of credit or debit comes from.
So we built it. dorsi.ai/biological-age-calculator is free, no signup, no email, no analytics on your inputs. Open-source under MIT so the scoring engine can be audited or reused.
What goes in
18 inputs, grouped into 5 dimensions, in the order they're asked:
Basics (used by multiple dimensions)
- Age, sex, height, weight
Body Composition — Aune 2016 BMJ (BMI U-shape) + Janssen 2004 AJCN (waist independent of BMI)
- Waist circumference
Cardiovascular Fitness — Nes 2011 MSSE (non-exercise VO₂peak regression) + Aune 2017 BMC Med (resting heart rate → mortality) + Mandsager 2018 JAMA Network Open (VO₂max → mortality)
- Resting heart rate
- Cardio sessions per week
- Average session duration
- Typical intensity (low / moderate / high)
Strength & Movement — Saeidifard 2019 Eur J Prev Cardiol (strength → mortality) + Paluch 2022 Lancet Public Health (daily steps) + Patterson 2018 Eur J Epidemiol (sedentary time)
- Strength sessions per week (0 / 1 / 2 / 3+)
- Daily steps band (<5k / 5–8k / 8–10k / 10k+)
- Daily sedentary hours
Sleep & Recovery — Yin 2017 J Am Heart Assoc (duration U-shape) + Windred 2024 SLEEP (regularity stronger than duration)
- Average sleep hours
- Sleep regularity (1–5, where 5 is "very consistent bedtime and wake time")
Lifestyle Habits — Doll 2004 BMJ (smoking) + GBD 2018 Lancet (alcohol) + Estruch 2018 NEJM PREDIMED (diet) + Cohen 2007 JAMA (stress)
- Smoking status (never / former / current + cigs/day if current)
- Alcohol drinks per week
- Diet quality (1–5)
- Stress level (1–5)
Units toggle (metric / imperial) at the top of the form, persisted to localStorage. The sliders show their current value plus a short qualitative descriptor (3 — moderate, 4 — consistent) so you always know what you're picking.
What comes out
The result isn't a single number. It's a structured breakdown that's designed to be acted on, not just looked at.
Headline — the big age number, framed as years (estimate) — not ±3 years. We deliberately don't display a fixed confidence interval because the uncertainty depends on which inputs you can answer accurately and on how each dimension contributes for your specific profile. Pretending we know the precision is dishonest.
Verdict block — color-themed callout:
- Younger than chronological (≥3 yr): "About X years younger than your chronological age. Nice — your habits are buying you back years. Keep showing up. The dimensions below show your strongest wins; protect those, and look for one neutral row you could nudge into the green."
- Aligned (within 3 yr): "Tracking with your chronological age. You're sitting on the population average. The dimensions below show where you can pull ahead — pick the biggest neutral row and turn it green."
- Older (≥3 yr): "About X years older than your chronological age. Don't panic — this is the kind of number that responds fast. Look at the amber rows below: the largest one is your single biggest lever. Sleep regularity, daily steps, and quitting smoking are the fastest movers in the literature."
Per-dimension breakdown — and this is the part that makes the calculator actually useful. Each of the 5 dimensions gets:
- A horizontal magnitude bar (teal for negative deltas / good; amber for positive / costing you years)
- The signed-year value (
+1.5 yror−6.0 yr) - A one-line rationale built from your actual inputs
For example, with a typical input set you might see:
Body Composition +1.5 yr BMI 25.5 (overweight, +0.5 yr) ·
waist 92 cm (at WHO first-risk threshold, +1 yr).
Cardiovascular Fitness −6.0 yr Est. VO₂max 52 mL/kg·min, well above
your age-sex norm of 42 ·
resting HR 55 bpm (within healthy range).
Strength & Movement −1.5 yr Strength 2×/week (−1.5 yr) ·
8–10k steps/day (−1 yr) ·
6.0h sedentary (moderate, +0.5 yr).
Sleep & Recovery +0.5 yr 7.5h/night (optimal 7–8h band, 0 yr) ·
regularity 4/5 (consistent, −0.5 yr).
Lifestyle Habits −2.0 yr Smoking: never smoked (0 yr) ·
alcohol 4/week (light, +0.3 yr) ·
diet quality 4/5 (−1 yr) ·
stress 2/5 (0 yr).
That's where the value is. The headline number is the hook; the per-row breakdown is the what to actually do tomorrow.
Save free PDF result — single-page A4, ~12 KB, lays out all of the above with the per-dimension rationales preserved. No signup required to download.
What we deliberately didn't do
A few things we didn't build, and why:
- No CTA, no email gate, no waitlist push. Pure SEO and brand asset. We're betting on quality and citation depth, not on conversion-funnel optimization.
- No fixed
±X yearsconfidence interval next to the headline number. Implying false precision is the most common dishonesty in this space. The number is an estimate — the word "estimate" appears next to it, and the methodology section explains the limits. - No "buy our supplement / book / coaching" upsell. The calculator is the calculator. There's nothing else.
- No chronological-age clock pretending to be a biological-age clock. First-gen DNAm clocks (Horvath, Hannum) are great science but were trained to predict chronological age, not mortality. We don't reproduce that mistake.
What goes wrong if you use it badly
A few honest caveats:
- The absolute number is ±5 years off, best case. Self-report bias is real — particularly for stress, diet quality, and sleep regularity. Use the relative ranking across dimensions to decide what to change. That part is robust.
- We translate hazard ratios into "years" using best-effort scaling. Cohort studies give hazard ratios; we map those to a years scale that lets us sum five dimensions. The mapping is reasonable but not unique; another team could rebuild the same algorithm with somewhat different per-input year values and both would be defensible.
- The NTNU VO₂max coefficients are tuned to ~3% of the published values. They produce physiologically plausible VO₂max outputs for typical inputs. If you're using the open-source library for anything beyond a rough estimate, verify the coefficients against Nes 2011 Table 2.
- Ethnicity bias. Most cited studies were predominantly European-ancestry. The relative ranking holds; the absolute years may be a few off for non-European users.
- This isn't a clinical tool. It's wellness-framed and educational. If something in your result concerns you, talk to a clinician.
Open source — fork it, read it, run it anywhere
The scoring engine lives at github.com/YusongCui/biological-age-calculator under MIT.
What you get:
lib/scoring.js— the main scorer + per-dimension rationale generators, ES module, runs in any Node 16+ environment or browser. ~370 lines, zero dependencies.lib/ntnu-fitness.js— Nes 2011 PA-R calculator and VO₂peak regressionlib/vo2max-norms.js— ACSM age/sex VO₂max mediansreferences/methodology.md— every scoring table, full algorithm, the NTNU regression with annotationsreferences/papers.md— full APA citations with DOIs for all 14 papersreferences/faq.md— 14 user-facing Q&A
Plus a SKILL.md so any AI assistant (Claude Code, Codex CLI, or anything that follows the agentskills.io spec) can install it as a portable skill in two lines:
# Claude Code (personal install across all projects)
git clone https://github.com/YusongCui/biological-age-calculator.git \
~/.claude/skills/biological-age-calculator
# Codex CLI
git clone https://github.com/YusongCui/biological-age-calculator.git \
~/.agents/skills/biological-age-calculator
Once installed, your AI assistant will recognize prompts like "what's my biological age?" / "am I aging faster than my real age?" / "how can I lower my biological age?" — and run the exact same algorithm that powers the web calculator, with per-dimension reasoning. See the README for full install instructions and the examples/example-conversation.md for a worked example of how the skill plays out in chat.
Try it
→ dorsi.ai/biological-age-calculator (web, 2 minutes, free)
→ github.com/YusongCui/biological-age-calculator (open-source scoring engine + AI skill)
If you build something on top of the open-source version — an iOS app, a chatbot, a CGM integration, a self-experiment dashboard — we'd love to see it. PRs welcome on the GitHub repo, especially if you have a literature-backed adjustment to one of the scoring tables.
If you want the deeper science background on what's happening under the hood — the three generations of biological age clocks, what's actually in PhenoAge and GrimAge, why DunedinPACE is the gold standard for tracking interventions — that's all in our field guide to how biological age is actually calculated.
Related Articles
Ready to just show up?
Open the free TestFlight beta — Dorsi handles your training decisions.