Age Calculator
Exact age in years, months, days
Age looks like subtraction right up until you meet the cases that break it: a birth date of 29 February, a form that wants age in completed months, or a birthday that has not come round yet this year. This calculator walks calendar units rather than dividing elapsed days by 365.25, so the years-and-months figure it reports is the one a registrar, a spreadsheet or a school admissions office would arrive at.
There are two date fields, not one. The second, Calculate Age As Of, defaults to today but accepts any date — which is how you answer "how old will she be on the first day of term" or "what age does this policy mature at" without doing the arithmetic twice.
Everything it reports is a completed unit. Somebody who is 17 years and 364 days old is 17 here, and stays 17 until the anniversary itself. No age calculator that rounds to the nearest year would be usable for the things people actually use ages for.
Where a completed-months age is the number that matters
Under-twos are plotted on growth charts by age in completed months, not by decimal years, which is why the Total Months row exists at all. For a preterm infant, clinicians usually work from a corrected age — chronological age minus the weeks of prematurity — so read the chronological figure here and subtract separately.
Life insurance underwriting splits on the same distinction: an "age last birthday" basis uses the completed years this calculator reports, while an "age nearest birthday" basis can price you a year older from six months before your birthday. If a quote looks a year out, that is usually why.
School and sport cut-offs are the easiest use: set the as-of date to the cut-off date (1 September, 31 December, the first day of a season) and read the years figure. For gaps between two arbitrary dates that are not a birth date, the Date Difference Calculator is the better fit; for the run-up to a single dated event, use Days Until Event.
The five rows, and the one number deliberately left out
- Age — completed years plus completed months since the last birthday.
- Total Months — the same span expressed as whole months (years × 12 + months).
- Total Days — the raw count of days lived.
- Next Birthday — days from the as-of date to the next anniversary.
- Day of Birth — the weekday the birth date fell on.
What is missing is the leftover days after the whole months, and that omission is deliberate. The days remainder is the single most contested number in calendar arithmetic, because two reasonable implementations disagree about it. The section below shows exactly where they part company.
How the borrow works, and why the leftover days are contested
The calculator subtracts the birth date's year, month and day from the as-of date's, then repairs the negatives in order:
- Take
years = asOf.year − birth.year,months = asOf.month − birth.month,days = asOf.day − birth.day. - If
dayscame out negative, the last month is not yet complete, so drop one frommonths. - If
monthsis now negative, the last year is not yet complete, so drop one fromyearsand add 12 back tomonths.
Notice that step 2 never asks how many days are left over — only whether the month is complete. That question has no agreed answer. Take 31 January to 1 March 2026. Is that one month and one day, one month and zero days, or twenty-nine days? It depends entirely on whether you borrow the length of February (28) or of January (31), and borrowing February gives you a negative. Microsoft's own documentation for the spreadsheet function everyone reaches for says of its day-remainder mode: "We don't recommend using the MD argument, as there are known limitations with it," and warns it "may result in a negative number, a zero, or an inaccurate result".
The same ambiguity runs the other way. What is one month after 31 January 2026? A spreadsheet's EDATE clamps to 28 February; JavaScript's setMonth overflows and lands on 3 March. Neither is a bug. They are different conventions, and a calculator that quietly picked one would be lying about its confidence.
Worked example: a leapling, sixteen days short
Birth date 29 February 2004, as of 16 February 2026. That birth date only exists once every four years, so it is the case worth walking through.
- Years: 2026 − 2004 = 22. Months: February − February = 0. Days: 16 − 29 = −13.
- Days is negative, so drop a month: months becomes −1.
- Months is negative, so drop a year and add 12: 21 years, 11 months.
The remaining rows read: Total Months 263, Total Days 8,023, Day of Birth Sunday, and Next Birthday in 13 days — which lands on 1 March 2026, because 2026 is not a leap year and the anniversary has nowhere else to go. Move the as-of date to 1 March and the headline flips to 22 years, 0 months.
What the calculator cannot decide for you
Leap-day birthdays. In a common year this tool places the anniversary on 1 March, following the way JavaScript's date constructor resolves 29 February when the year has no such day. US jurisdictions do not agree with each other on this, and the rule is usually buried in whichever statute happens to govern the question rather than stated once and generally. Maine, for example, provides in its motor vehicle code that a person born on 29 February is deemed to have been born on 1 March — but that provision is about when a driver's licence expires, not about age at large. Other states arrive at 28 February instead, by way of general-construction statutes that define a "year" so that the leap day and the day before it count as one. If a licence expiry, a drinking age or a benefit eligibility date turns on which of the two applies, read the specific statute that governs it where you live rather than trusting any calculator, this one included.
Time of day. Age turns over at midnight on the calendar date, not at the clock time on the birth certificate. Both inputs are dates with no time component, which matches how every form, statute and hospital record treats the question.
Local dates, not UTC. Both dates are read at local midnight. That is what stops a birth date typed as 1990-05-04 from displaying as 3 May for anyone west of Greenwich, which is the classic failure of naive date parsing in a browser.
Reckoning traditions. The completed-years count here is international age. South Korea standardised its official and legal documents on that basis in June 2023, retiring the older convention in which a newborn is one and everybody gains a year at New Year. If you are converting a document issued before that change, the two numbers can differ by one or two.
Thresholds worth testing an as-of date against
Each of these turns on completed years, so set the as-of date to the day of the event and read the years figure — not the date you happen to be filling in the form.
| Age | What it typically unlocks (US, varies by state) |
|---|---|
| 16 | Driver's licence in most states |
| 18 | Legal adult, voting, most contracts |
| 21 | Alcohol purchase; most car rental counters |
| 25 | Young-driver surcharge drops at most rental agencies |
| 26 | Last year on a parent's health plan under the ACA |
| 59.5 | Penalty-free retirement account withdrawals begin |
| 62 | Earliest Social Security eligibility, at a reduced benefit |
| 65 | Medicare eligibility |
| 67 | Full Social Security retirement age for anyone born 1960 or later |
The 59.5 row is the one that catches people out: it is the only threshold on this list that falls half way through a year, so the years-and-months headline is the row to read, not the years alone. Retirement-related ages in particular get legislated, so confirm against an official source before acting on one.
Frequently asked questions
Why does the headline stop at years and months instead of years, months and days?
Because the days remainder has no single correct definition. Going from 31 January to 1 March, one implementation borrows February's 28 days and another borrows January's 31, and they disagree by three days. Microsoft documents the same problem in its own spreadsheet function and advises against relying on it. The Total Days row gives you an unambiguous raw count instead.
My birthday is 29 February. What does Next Birthday show in a common year?
1 March. That is what JavaScript’s date constructor does with 29 February in a year that has no such day, and it is a display convention rather than a legal ruling. US states differ on whether a leap-day birthday falls on 28 February or 1 March in a common year, and the answer generally turns on the particular statute at issue - a licence expiry rule and a general definition of "year" can point opposite ways in the same state. Check the one that governs your situation.
Can I set the as-of date in the future?
Yes, and that is often the point. Set it to a school cut-off date, a policy maturity date or the first day of a tournament season and the calculator tells you the age that will apply then.
Will this agree with a spreadsheet's DATEDIF?
For the years and the completed-months figures, yes — the borrow logic is the same one DATEDIF uses for its Y and YM modes. It deliberately does not reproduce the MD day-remainder mode, which Microsoft itself flags as unreliable.
Why isn't Total Days just the years multiplied by 365?
Because leap days are real. Over 22 years you pick up five or six extra days depending on where the birth date sits relative to the leap-day cycle, and century years break the every-four-years rule: 1900 was not a leap year, 2000 was, because the exception applies unless the year divides by 400.
Does the birth date leave my device?
No. Both dates are read from the form and processed by JavaScript running in the page. Nothing is posted anywhere, and nothing is stored between visits.