Working out how old someone is sounds trivial: subtract the birth year from the current year and you are done. Except that shortcut is wrong almost half the time. It ignores whether the person has actually had their birthday yet this year, and it falls apart the moment months and days enter the picture.
This guide shows you how to calculate exact age from a date of birth the right way: in years, months, and days. You will see the manual method, fully worked examples, the leap-year edge cases that trip people up, and a faster option when you just need the answer.
What "Age" Actually Means
The age most people want is chronological age — the amount of time that has elapsed since the moment of birth, expressed in completed years, months, and days.
The key word is completed. You are 30 years old right up until the instant you turn 31. You do not round up. A child who is "almost 6" is still 5. This is why age is calculated using floor logic (always rounding down to the last full unit), not standard rounding.
So the real question is not "what year were you born" but "how many full years, then full months, then full days have passed since your birth date."
The Manual Method, Step by Step
Here is the reliable algorithm. Write the dates as Year-Month-Day and label them:
- DOB = date of birth
- TODAY = the date you are calculating age on (often today)
Step 1: Subtract the years
years = TODAY.year - DOB.year
Step 2: Subtract the months
months = TODAY.month - DOB.month
Step 3: Subtract the days
days = TODAY.day - DOB.day
Step 4: Borrow when a result is negative
This is the part the naive "year minus year" approach skips.
- If days is negative, borrow one month: add the number of days in the previous month to
days, then subtract 1 frommonths. - If months is now negative, borrow one year: add 12 to
months, then subtract 1 fromyears.
The final years, months, and days are the exact age.
Worked Example 1: A Clean Case
DOB = 1990-04-12, TODAY = 2026-06-01.
years = 2026 - 1990 = 36
months = 6 - 4 = 2
days = 1 - 12 = -11 ← negative, borrow
Days is negative, so borrow one month. The month before June is May, which has 31 days:
days = -11 + 31 = 20
months = 2 - 1 = 1
Months is now positive, so we stop. Age = 36 years, 1 month, 20 days.
Notice the naive method (2026 - 1990 = 36) happened to land on the right number of years here only because the birthday had already passed. Watch what happens when it has not.
Worked Example 2: Birthday Not Yet Reached
DOB = 2000-12-25, TODAY = 2026-06-01.
years = 2026 - 2000 = 26
months = 6 - 12 = -6 ← negative, borrow
days = 1 - 25 = -24 ← negative, borrow first
Start with days. The month before June is May (31 days):
days = -24 + 31 = 7
months = -6 - 1 = -7
Months is still negative, so borrow a year:
months = -7 + 12 = 5
years = 26 - 1 = 25
Age = 25 years, 5 months, 7 days. The naive subtraction would have said 26 — a full year too high, because this person has not had their 2026 birthday yet. This is the single most common age-calculation mistake.
The Leap-Year Trap: February 29
People born on February 29 only get a "real" birthday every four years. So how old is a leap-day baby on February 28 or March 1 in a normal year?
There is no universal law, but the common conventions are:
- Legal/most jurisdictions: the birthday is treated as March 1 in non-leap years, so they turn a year older on March 1.
- Some systems: treat it as February 28.
A well-built calculator picks one rule and applies it consistently. When you borrow days across a February, always use the correct length for that year — 29 days in a leap year, 28 otherwise. A year is a leap year if it is divisible by 4, except century years, which must be divisible by 400 (so 2000 was a leap year, 1900 was not).
Why Not Just Divide Days by 365?
A tempting shortcut is: count the total days between the two dates and divide by 365. It is close, but it drifts. Roughly one year in four has 366 days, so dividing everything by 365 slowly overstates age — about one extra day every four years, which can flip a result right around a birthday.
Total-days-divided-by-365.25 is better for a rough decimal age, but it still cannot give you the clean "years, months, and days" breakdown people actually expect. For that, you need the borrow-and-subtract method above.
That said, the total days lived figure is genuinely useful on its own — for milestones like turning 10,000 days old, or for medical and scientific contexts where an exact day count matters more than calendar years.
The Fast Way
Doing this by hand is fine once. If you need it repeatedly — or you want the total months, weeks, days, hours, and minutes alongside the years-months-days result — use the age calculator on this site. Enter the date of birth, optionally pick a date to calculate the age on (leave it blank for today), and you get the exact age plus every running total instantly, with leap years handled for you.
For specific needs, there are focused tools too: the age calculator by date for any past or future day, the exact age calculator when you want hours and minutes, and the date difference calculator for the duration between any two dates.
Quick Reference
| Situation | Rule |
|---|---|
| Birthday already passed this year | years = thisYear − birthYear |
| Birthday not yet reached this year | years = thisYear − birthYear − 1 |
| Negative days | Borrow days from the previous month |
| Negative months | Borrow 12 months from the year |
| Feb 29 birthday, normal year | Usually treated as Mar 1 |
FAQ
How do I calculate age from a date of birth manually?
Subtract the birth year, month, and day from today's year, month, and day separately. If the day result is negative, borrow days from the previous month and reduce the month count by one. If the month result is then negative, add 12 and reduce the year count by one. The final figures are the exact age in years, months, and days.
Why is "current year minus birth year" wrong?
It only works if the person has already had their birthday this year. If their birthday is still ahead on the calendar, that formula overstates their age by exactly one year. You must check whether today's month and day have passed the birth month and day.
How is age calculated for someone born on February 29?
Because February 29 only occurs in leap years, most legal systems treat the birthday as March 1 in non-leap years (some use February 28). A consistent calculator applies one rule every time and uses the correct February length when counting days.
What is the difference between age in years and total days lived?
Age in years, months, and days is a calendar breakdown that resets each birthday. Total days lived is a single cumulative count of every day since birth — useful for milestones (like 10,000 days) and contexts where an exact day count matters more than calendar years.
Does age calculation round up or down?
Always down. You stay a given age until the exact moment you reach the next birthday, so age uses floor logic — completed units only — never standard rounding.
What is the fastest way to get an exact age?
Use the age calculator: enter the date of birth, optionally set a comparison date, and read the exact age in years, months, and days plus total months, weeks, days, hours, and minutes — with leap years handled automatically.