How to calculate your exact age by hand
Almost everyone can subtract two years. Almost nobody gets years, months and days right on the first attempt — and the reason is that a month is not a unit of fixed length.
Ask someone how old they are and you get a single number. Ask a form, a visa application, a paediatrician or a pension scheme and you get a request for something more precise: age in completed years and months on a particular date, or age in completed months for an infant. That second question is where the arithmetic goes wrong, and it goes wrong in a specific, predictable way.
The method that works
Counting an age is a three-stage borrow, exactly like long subtraction. Write both dates as year, month, day — the birth date underneath the target date — and subtract column by column, right to left.
- Subtract the days. If the result is negative, borrow one month: add the number of days in the month preceding the target date to the day column, and reduce the month column by one.
- Subtract the months. If the result is negative, borrow one year: add 12 to the month column and reduce the year column by one.
- Subtract the years. What remains is the completed age in years, months and days.
Take a birth date of 30 November 2023 and a target date of 28 February 2026. Days: 28 − 30 = −2, so borrow. The month preceding February 2026 is January, which has 31 days: 28 + 31 − 30 = 29 days, and the month column drops from 2 to 1. Months: 1 − 11 = −10, so borrow again: 1 + 12 − 11 = 2 months, and the year column drops from 2026 to 2025. Years: 2025 − 2023 = 2. The answer is 2 years, 2 months and 29 days.
The step people skip is the first one. Borrowing a flat 30 days is the standard shortcut, and it produces 28 days instead of 29 in the example above. Over a single calculation that is trivial; applied to a schedule of monthly instalments it accumulates into a real discrepancy.
Why you cannot just divide
The tempting alternative is to count the total days between the two dates and divide: by 365.25 for years, by 30.44 for months. This gives a decimal age, which is fine for a chart and wrong for a form.
The problem is that neither divisor corresponds to anything on your calendar. Divide by 365.25 and you inherit the Julian year, which is about 11 minutes longer than the actual Gregorian mean year of 365.2425 days. More importantly, the result is a proportion of an average year, not a count of anniversaries — and the two disagree at exactly the moment you care about, which is around your birthday.
A person born on 1 March 2000 and checked on 28 February 2026 has lived 9,495 days. Divided by 365.25 that is 25.996 years, which rounds to 26. But their twenty-sixth birthday has not happened yet: they are 25 years, 11 months and 27 days old. Every jurisdiction that attaches a legal consequence to an age — voting, drinking, retirement, criminal responsibility — uses the anniversary, not the quotient.
Leap-day birthdays
Roughly one person in 1,461 is born on 29 February, and their legal birthday in common years is decided by statute rather than by arithmetic. The two conventions in use are: treat the anniversary as 1 March (the common-law approach, used in most of the United States, England and Wales), or treat it as 28 February (used in New Zealand, Taiwan and Hong Kong, among others).
The difference matters exactly once per person, on the day someone reaches an age threshold in a non-leap year. Under the 1 March convention a leapling turns 18 on 1 March 2026; under the 28 February convention, a day earlier. Our age calculator uses the 1 March convention.
Age in months, and why parents need it
For the first two or three years of life, age is tracked in months rather than years, because that is the resolution at which development is measured. Growth charts, vaccination schedules and paediatric dosing are all indexed by completed months.
Completed months follow the same borrowing rule: a baby born on the 31st is one month old on the 28th, 29th or 30th of the following month only if that month has no 31st — otherwise on the 31st. This is why a baby born on 31 December is one month old on 31 January, but a baby born on 31 January is one month old on 28 February in a common year. There is no way to make that symmetric, and no convention makes everyone happy; the borrowing rule is simply the one everyone has agreed to be unhappy about.
Note the difference between completed months and month-count-in-weeks. Four weeks is 28 days, which is shorter than every month except February. A schedule written as “every four weeks” drifts steadily earlier against one written as “monthly” — by roughly 13 versus 12 occurrences per year.
Seconds, and the numbers worth knowing
Elapsed time in small units is where age gets interesting rather than administrative. A few reference points:
- One billion seconds is 31 years, 8 months and a few days. Most people pass it without noticing.
- 10,000 days is 27 years and 4 months.
- One million minutes is just under 1 year and 11 months.
- A billion heartbeats is roughly 30 years at an average resting rate — the figure that gets quoted in comparative biology, where it holds surprisingly well across mammal species.
Counting these requires an anchor to an actual instant rather than a calendar date, which is why a seconds-lived figure needs a birth time to be exact. Without one, the convention is to count from midnight at the start of the birth date, which is what our calculator does — so the figure is precise to within the hours of your actual birth.
The time zone trap
One last subtlety that catches software more often than people. A birth date is a calendar date, not a moment in time. Someone born in Sydney on 3 September was born on 3 September, full stop — not on 2 September because that is what the clock read in London.
Naive date code stores that birth date as an instant at midnight local time, then reads it back in a different zone, and the date silently shifts by one. It is a common bug, and it produces off-by-one ages for anyone born east or west of wherever the server happens to be. The fix is to do all date-only arithmetic in a single fixed frame — we use UTC throughout — and only involve the local clock for values that genuinely depend on the current instant, like a live seconds counter.
In short: count whole years, then whole months, then borrow the real length of the preceding month for the days. Never divide by 365.25 if the answer has legal or administrative consequences.