How old am I
Someone born on 9 March 1988 is 38 years, 4 months and 16 days old on 25 July 2026. Enter a birth date and the day you want to measure to, and get an exact age you can write on a form or say out loud. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Birth date
- 1988-03-09
- Reference date
- 2026-07-25
- Years
- 38
- Months
- 4
- Days
- 16
- Total days
- 14,017
How old am I is the first-person form of an exact age question: not only how many whole birthdays have passed, but how many leftover months and leftover days sit between a birth date and a chosen reference date. People type that phrase when they want a civil breakdown they can read aloud — thirty-eight years, four months, and sixteen days — for a form, a party invitation, a visa file, or simple curiosity about a future day. This tool never invents today from a server clock.
What “how old am I” actually counts
How old am I is a civil age, not a clock duration and not a single integer of completed years. The engine first walks from the birth date to the last anniversary that has already occurred on or before the reference date. That anniversary uses the birth month and day, except that a twenty-ninth of February clamps to the twenty-eighth in a common year so the landing day always exists.
The completed years are the number of those anniversaries. From that last birthday the engine then adds whole calendar months, clamping a long-month day onto the last day of a shorter month, until one more month would pass the reference date. The leftover gap is counted as whole civil days.
A person born on the ninth of March nineteen eighty-eight is thirty-eight years, four months, and sixteen days old on the twenty-fifth of July two thousand twenty-six, because the ninth of March has already passed and sixteen days sit after the ninth of July. The same pair of civil dates always produces the same triple because the engine never samples a host clock, a time zone, or daylight-saving tables. Equal dates return zero years, zero months, and zero days — a newborn snapshot on the day of birth.
Use a neighbouring whole-year tool when the form asks only for completed years, and a date-to-date helper when the pair is an unordered span rather than an age. Use this page when the search is how old am I and the answer must be the mixed civil breakdown.
Where a how-old-am-I calculator earns its keep
Invitation copy and family dashboards need a sentence people can say out loud — how old am I on the wedding day, on the cruise, or on the first day of school — not a single integer that hides leftover months. Clinic intake and pediatric follow-up often print years, months, and days next to a visit stamp so a chart remains readable when the patient is still between birthdays.
Human-resources onboarding and insurance snapshots store the same triple against an audit date so exports and regression suites reproduce the same breakdown every time. Contest rules, cinema ratings, and regulated product access can still read the years field when they only need a threshold, while the leftover months and days stay available for the finer print. Parent pages and classroom demos can run the free in-browser how-old-am-I calculator without installing a date library or shipping a timezone database to every client.
Keep expectations honest: this capability measures Gregorian civil age between two explicit dates; it does not skip weekends as business age, load public holiday calendars, convert lunar ages, default the reference to today on the server, or reframe a reversed pair as an absolute span. Pair it with a whole-year helper when the product copy asks only for completed years, and with a birthday countdown when the question is how many days remain until the next anniversary.
What you can do with it
How old will I be on a future date
Enter a birth date and a future reference date to see years, leftover months, and leftover days on a wedding day, a trip, or the first day of school.
Clinic and school age snapshots
Pass a fixed birth date and a visit or cut-off date to print a civil years-months-days age that does not drift with the host clock.
FAQ
How does this how-old-am-I calculator count years, months, and days?
The engine counts completed years to the last anniversary, then completed calendar months with end-of-month clamp, then leftover civil days.
What if the birth date is after the reference date?
Age cannot be negative; correct the pair rather than expecting a signed years-months-days count.
How are leap-day birthdays handled?
A birth on 29 February uses 28 February as the anniversary in a common year, because that year has no 29th. In a leap year the anniversary is 29 February itself. Leftover months and days are then counted from that landing day.
What does a how-old-am-I calculation cost?
The browser tool is free on your device.
How many days old am I?
Along with years, months and days, you also get the total number of days between the two dates. Someone born on 9 March 1988 has lived 14,017 days by 25 July 2026.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/life/how-old-am-i \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"birth_date":"1988-03-09","reference_date":"2026-07-25"}'const res = await fetch("https://api.kit.forhosting.com/life/how-old-am-i", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"birth_date": "1988-03-09",
"reference_date": "2026-07-25"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/how-old-am-i",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"birth_date": "1988-03-09",
"reference_date": "2026-07-25"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/how-old-am-i", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"birth_date":"1988-03-09","reference_date":"2026-07-25"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"birth_date":"1988-03-09","reference_date":"2026-07-25"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/how-old-am-i", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"birth_date": "1988-03-09",
"reference_date": "2026-07-25"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.how_old_am_i",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Both the birth date and the reference date must be supplied as civil YYYY-MM-DD values, so the same pair always yields the same years, months, and days in a browser, in continuous integration, and on the API. Invalid calendar days and a birth date that falls after the reference date fail with invalid_input and are not billed. Successful API calls use the published $0.002 base price.
What “how old am I” actually counts
A birth date that falls strictly after the reference date is not a negative age: the request fails with invalid_input.
Input contract, calendar validation, and the response shape
Each value should be a civil calendar day in YYYY-MM-DD form, for example nineteen eighty-eight hyphen zero three hyphen zero nine for a birth date and two thousand twenty-six hyphen zero seven hyphen twenty-five for the snapshot day. You may prefix a full ISO-8601 datetime; if a time is present only the calendar date part is used, because how old am I is a date-to-date civil measure, not a clock duration with time zones. Years range from one through nine thousand nine hundred ninety-nine, months must be one through twelve, and the day must exist in that month under Gregorian leap rules, including February twenty-nine only in leap years. POST a compact JSON body with two required string fields: birth_date and reference_date. Optional aliases birth, birthdate, dob, and from map to the birth field; reference, as_of, to, and on map to the reference field so form builders and SDKs can keep familiar names. Impossible pairs such as two thousand twenty-three hyphen zero two hyphen twenty-nine are rejected with invalid_input instead of being clamped into March. If the birth date falls strictly after the reference date, the request fails with a clear message that age cannot be negative. Missing fields, empty strings, and non-string values fail with invalid_input naming the field and are not billed. Both endpoints are mandatory on purpose: a how-old-am-I calculator that silently substitutes the host wall clock produces different answers in continuous integration, on a laptop flying across a meridian, and on a worker in Coordinated Universal Time, which breaks audits and reproducible exports.
Where a how-old-am-I calculator earns its keep
Call the prepaid API when eligibility pipelines, visa forms, or payroll snapshots need a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request.
Integration use cases
HR and insurance audit files
Store the exact civil age against a payroll or underwriting date so exports and golden tests reproduce the same triple every time.
Technical questions
Does the calculator use today's date automatically?
No. reference_date is required. The engine never reads the system clock, so results stay identical in CI, browsers, and API workers.