Count years, months and days
Enter a date of birth and, if you need an age on a particular day rather than today, a second date. This is useful for admission and examination cut-offs, age bands in sport, visa and pension dates, and for recording a child's age on a given day. Both dates stay in your browser.
How it counts
Both dates are read as plain calendar dates at midnight UTC, so no time of day, time zone or daylight-saving shift can move the answer. A value that is not a real calendar date is rejected rather than rolled over: 30 February and 31 April are refused instead of becoming 2 March and 1 May. A date of birth later than the end date is also refused.
The count then runs in two stages — whole months first, leftover days afterwards:
- Count the calendar months between the two month positions: (end year − birth year) × 12 + end month − birth month. For 31 January 2000 to 1 March 2026 that is 26 × 12 + 2 = 314.
- Find the monthly anniversary that many months after the birth date. If that anniversary falls after the end date, the last month is not complete, so subtract one and use the previous anniversary.
- Divide the completed months by 12. The quotient is the years and the remainder is the months.
- The days are the whole days from the last completed anniversary to the end date, so the figure is always 0 or more and never larger than the length of the month just passed.
Because step 1 uses real calendar months, a month is never treated as 30 or 30.44 days. Thirty days from 1 February is not "one month"; the anniversary on 1 March is.
Birthdays on the 31st and other month ends
A monthly anniversary is built by moving to the first of the target month, finding that month's last day, and then taking the smaller of the birth day-of-month and that last day. Someone born on the 31st therefore has an anniversary on 28 February (29 in a leap year), 30 April, 30 June, 30 September and 30 November, and on the 31st in every other month.
This clamping is why the day count can be 0 on a date that is not literally the same day number. For a birth date of 31 January 2000, the result on 28 February 2026 is 26 years, 1 months, and 0 days: February has no 31st, so its last day completes the month.
A 29 February birthday
The same clamping handles leap-day birthdays without a special case. In a leap year the anniversary of 29 February 2004 is 29 February. In a common year the last day of February is the 28th, so the anniversary is 28 February and a person born on a leap day turns a year older on that date. On 28 February 2026 the result is 22 years, 0 months, and 0 days; one day later it is 22 years, 0 months, and 1 days.
Worked examples
Each row below is the output for that pair of dates. The sentence is assembled from the three numbers without adjusting the grammar, so a value of 1 still reads "1 months" and "1 days".
| Date of birth | Age at date | Result |
|---|---|---|
| 15 May 1990 | 1 October 2026 | 36 years, 4 months, and 16 days |
| 31 January 2000 | 27 February 2026 | 26 years, 0 months, and 27 days |
| 31 January 2000 | 28 February 2026 | 26 years, 1 months, and 0 days |
| 31 January 2000 | 1 March 2026 | 26 years, 1 months, and 1 days |
| 29 February 2004 | 28 February 2026 | 22 years, 0 months, and 0 days |
| 29 February 2004 | 1 March 2026 | 22 years, 0 months, and 1 days |
Follow the third row through the method. The month arithmetic gives 314 months, whose anniversary would be 31 March 2026 — after the end date, so the last month is incomplete. Dropping to 313 months puts the anniversary at 28 February 2026, and 313 ÷ 12 is 26 remainder 1. One day separates 28 February from 1 March, giving 26 years, 1 months, and 1 days.
Common mistakes
- Converting the months and days into a decimal age by dividing by 30 or 365. Months differ in length, so a fraction built that way does not match the calendar figure.
- Expecting the days figure to be the total days lived. It is only the remainder after the whole years and months have been removed.
- Leaving the second field blank when an application uses a fixed eligibility date. Blank means today on your device, not the cut-off.
- Assuming an incorrect date will be corrected automatically. Picking the wrong year in a date field is the most common error, and 29 February in a non-leap year is rejected outright.
- Treating the result as the legal age. Some jurisdictions and insurers use their own rule, such as the age at the nearest birthday or a qualifying date fixed by statute.
Limits
The output is a calendar difference and nothing else. It does not count total days, weeks or hours, work out a next-birthday countdown, handle times of day, or convert between calendars — dates are read as proleptic Gregorian throughout, which does not match historical dates recorded under the Julian calendar.
It does not decide eligibility either. Where an age requirement matters, read the rule that applies and enter the date shown on the identity or birth document.
Questions
Why does the result say "1 months" instead of "1 month"?
The sentence is built from the three numbers with fixed wording, so the plural is not adjusted for a value of one. It is a wording limitation, not a sign that the number is wrong.
Does it count leap days?
Yes, as part of the calendar. Leap days are not added as an extra adjustment; they appear because February 2024 genuinely has 29 days, so the days remainder spanning that month includes it.
Can I work out an age in the past?
Yes. Put the earlier date in the second field. Any pair of dates works as long as the first is not later than the second, so the same calculation also measures a service period or the gap between two events.
Why does a government form show a different age?
Usually because it measures to a fixed qualifying date rather than today, or applies a rounding rule of its own. Enter that qualifying date in the second field to compare.
Is the date of birth stored?
No. The calculation runs in your browser and the function contains no code that transmits either date.
