Pick a birth date and a target date. The calculator returns your age on that target date as three integers: years, months, and days. Both inputs are read as plain YYYY-MM-DD values and the math runs in UTC, so the answer never shifts because of your local time zone. The result reflects the western international convention (you turn 1 year old on the first anniversary of birth), not Korean or East Asian age reckoning. Birthdays that fall on February 29 are handled by walking the actual calendar; for the divisibility logic that decides which years carry that day, see the leap year checker.
Common use cases
- Filling out a form that wants exact age. A medical intake form asks for age in years and months. Enter your birth date and today as the target. The calculator returns the breakdown directly, so you can write "47 years 3 months" instead of guessing whether your birthday has passed this year.
- Confirming a child reaches a legal threshold. School enrollment, driving permits, and travel-document rules all hinge on a child being a specific age on a specific cutoff date. Enter the birth date and the cutoff as the target, then read the years field to confirm the threshold is met before submitting.
- Computing the gap between siblings or partners. Set the older person's birth date as the birth input and the younger person's birth date as the target. The result is the gap in years, months, and days. To see only the calendar-day count without the year/month split, the days between calculator returns a single integer.
- Looking up an age on a historical date. Genealogy records often list a birth date and an event date (a marriage, an enlistment, a census entry). Enter the birth date as the birth input and the event date as the target to read how old the person was at that moment, no mental arithmetic required.
- Planning a milestone birthday. To check what age you will be on a future date, enter your birth date and the future date as the target. Pair the answer with the weekday lookup to see which day of the week that birthday lands on, useful when picking a venue or a flight.
How it works
The calculator parses both inputs as plain YYYY-MM-DD values, anchors them to UTC midnight, and asks date-fns for the calendar interval between them. The result is split into completed years, then completed months inside the leftover, then leftover days. Birth dates after the target raise an error rather than returning a negative age. The math runs entirely against the civil calendar, so leap years and month-length differences are handled by the underlying calendar walk rather than by any fixed average.
Worked examples
Standard birthday on the day
Enter birth date 1990-04-27 and target date 2026-04-27.
Result: The calculator returns 36 years 0 months 0 days.
When the target lands on the birthday itself, both the months and days fields read zero. Every birthday since 1991 has done the same; the years field steps up by one each April 27.
The day before the birthday
Enter birth date 1990-04-27 and target date 2026-04-26.
Result: The calculator returns 35 years 11 months 30 days.
One calendar day before the next birthday, you are still 35. The 11-month-30-day breakdown is the date-fns intervalToDuration output, which counts completed months from April 27 of the previous year and walks the leftover in days.
A leap-day birthday in a non-leap year
Enter birth date 1992-02-29 and target date 2026-03-01.
Result: The calculator returns 34 years 0 months 1 day.
On 2026-02-28 the result still reads 33 in the years field, because the calendar walk has not crossed a date matching the birth month and day. The years field steps up on March 1 in non-leap years and on February 29 in leap years.
A newborn measured in days
Enter birth date 2026-04-25 and target date 2026-04-27.
Result: The calculator returns 0 years 0 months 2 days.
For young infants, only the days field carries useful information. Pediatricians switch to weeks at around two months and to months at around two years, but the underlying calendar walk does not change.
A 126-year span
Enter birth date 1900-01-01 and target date 2026-01-01.
Result: The calculator returns 126 years 0 months 0 days.
The calendar walk crosses 31 leap days inside that window without any special handling. Long spans are exact, not rounded; the years field is the count of completed annual anniversaries, never an average.
Edge cases & gotchas
- Leap-day birthdays roll over on March 1 in non-leap years. A person born on February 29 has their next birthday land on February 29, 2024, then March 1, 2025 (because 2025 has no leap day), then March 1, 2026. The calculator follows the date-fns calendar walk: on 2026-02-28 the years field still reads one less than the next age; on 2026-03-01 it ticks up. Some jurisdictions treat February 28 as the legal birthday in non-leap years for things like driving age, which can disagree with the calculator by one day.
- A future birth date raises an error. If the birth date sits after the target date, the calculator throws "Birth date cannot be after target date" rather than returning a negative age. Negative ages are not a meaningful concept for most use cases, and silently flipping the sign would mask a data-entry mistake. Swap the two inputs to read the gap in the other direction.
- No Korean or East Asian age reckoning. The calculator returns international age. In traditional Korean reckoning, a newborn is 1 at birth and gains a year every Lunar New Year (or January 1, depending on the variant), which can put the Korean age 1-2 years higher than the international age. South Korea formally switched to international age for legal and administrative use in June 2023, but the older convention is still common in everyday speech.
- The breakdown can read X years 12 months 0 days on leap-day birthdays. For a Feb-29 birth date measured against Feb 28 of a non-leap year, the date-fns intervalToDuration output can present as years short by one with months reading 12, rather than rolling that twelfth month into the years field. The calculator surfaces the underlying duration verbatim. Treat the years field as authoritative for legal-age questions; the months field is a leftover, not a count.
Frequently asked questions about Age Calculator
Why does the day before my birthday show 11 months 30 days, not zero?
The calculator reports completed months from the previous birthday, then leftover days. One day before the next birthday, the previous birthday is 11 full months and most of a 12th month away. The years field still reads the lower age until the calendar passes your birth month and day, which is the rule international age conventions use.
How are leap-day birthdays handled?
The calculator walks the actual calendar. A person born February 29 has their years field tick up on February 29 in leap years and on March 1 in non-leap years, because that is when the calendar next passes a date matching the birth month and day. Some legal systems use February 28 as the in-non-leap-year birthday, which can disagree by one day; this calculator follows the date-fns convention.
Does it follow ISO 8601?
Inputs are read as YYYY-MM-DD per ISO 8601, and the math runs in UTC. ISO 8601 itself does not define an "age" calculation; the years/months/days breakdown is the date-fns convention, which matches Java Time and most calendar libraries.
What happens if I enter a future birth date?
The calculator throws an error rather than returning a negative age. The check is intentional: a negative age is rarely what you want, and the error catches a swapped-input mistake before it propagates. To measure the gap in the forward direction, swap the birth and target inputs.
Does this match Korean or East Asian age?
No. The calculator returns international age, where you are 0 at birth and turn 1 on the first anniversary. Traditional Korean and East Asian reckonings start at 1 at birth and increment on Lunar New Year or January 1, which can put those numbers 1 or 2 years higher than the international value for the same person on the same date.
Is the answer affected by my time zone?
No. Both dates are read as plain YYYY-MM-DD values and anchored to UTC midnight inside the calculator. The result is identical whether you load the page in Tokyo or Los Angeles, which is the right behavior for an answer that is only ever meaningful at day granularity.
Can I get my age in total days or weeks instead?
This calculator returns the years/months/days breakdown only. For a single integer count of calendar days between the two dates, use the days-between tool linked above. Total weeks is the days count divided by seven, with the remainder as the leftover-days line.
Glossary
- International age
- The convention used in the western world and ISO documents: you are 0 at birth and turn N on the Nth anniversary of birth. The calculator returns this value in its years field.
- Korean age
- A traditional East Asian reckoning where a newborn is 1 at birth and gains a year on Lunar New Year or January 1. South Korea moved to international age for legal use in 2023; this calculator does not implement Korean age.
- Leap-day birthday
- A birth date of February 29. In non-leap years the calendar has no matching date, so the years field ticks up on March 1 in this calculator. Some legal systems use February 28 instead.
- Calendar walk
- The technique of advancing one day at a time along the civil calendar to count the interval between two dates. The walk handles leap days and month-length differences without any special-case code.
- Anniversary rollover
- The moment the years field increments. It happens when the target date passes a date with the same month and day as the birth date. Until then, the years field reads the lower age and the months/days fields carry the leftover.