Enter a birth date and, optionally, a date to calculate as of (defaults to today) to get exact age in years, months, and days.
How to Use the Age Calculator
Birth date is required; the "as of" date defaults to today but can be set to any date, past or future, to calculate age as of that point instead.
Age math is simple subtraction right up until it isn't. February exists, months aren't all the same length, and "this year minus birth year" quietly breaks for anyone whose birthday hasn't happened yet this year. This calculator takes a birth date and a "calculate as of" date — today by default — and does the subtraction properly.
years = target.year − dob.year
months = target.month − dob.month
days = target.day − dob.day
(borrow a month from years, and a month's days from months,
for any negative remainder — same as column subtraction)
Someone born in November, calculated against a March date, hasn't had a birthday yet this year — so their real age is one less than the naive year subtraction until it arrives. The calculator checks month and day before finalizing anything, which is also why "30" can undersell someone who turned it eleven months ago and is now most of the way to 31.
Leap years get the standard treatment: a February 29 birthday counts as falling on February 28 in non-leap years, for the purpose of deciding whether that year's birthday has already happened. That's the convention most legal and administrative age calculations quietly rely on.
Set the "as of" date to anything — a past exam, a contract signing, a future date you're curious about — and the same logic runs either direction. What makes this different from a plain days-between-dates count is the format: instead of one number ("12,483 days"), you get the years/months/days breakdown people actually use to state an age, which means accounting for every month's different length along the way rather than just counting days.