Radiometric age calculator
Equal amounts of parent and daughter isotope, a ratio of 1, with a decay constant of 0.1 per year give an age of 6.9314718056 years, exactly one half-life. The age comes from t = (1/λ)·ln(1 + D/P) in the time unit of λ. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Parent to daughter ratio
- 1
- Decay constant
- 0.1
- Daughter parent ratio
- 1
- Age
- 6.9314718056
- Half life
- 6.9314718056
- Log argument
- 2
Radiometric dating turns a measured parent-to-daughter isotope inventory and a known decay constant into an age in the same time unit as the reciprocal of λ. Geologists, geochemists, and students need a reproducible closed-system age equation that fails loudly when the logarithm is undefined instead of returning NaN or a silent negative time. This radiometric age calculator accepts the parent-to-daughter ratio R equals remaining parent over radiogenic daughter and the decay constant λ, applies t equals one over λ times the natural log of one plus daughter over parent, and returns age, the derived half-life ln two over λ, and the intermediate log argument for audit trails.
The closed-system age equation and what the ratio means
In a closed system where a radioactive parent isotope decays to a stable radiogenic daughter and no parent or daughter is lost or gained by open-system processes, the remaining parent inventory P and the accumulated daughter inventory D are linked by exponential decay. The textbook age equation rearranges that law into t equals one over λ times the natural logarithm of one plus D over P, where λ is the decay constant of the parent in inverse time units.
This capability takes the parent-to-daughter isotope ratio R defined as P divided by D, so daughter over parent is the reciprocal one over R, and substitutes to obtain t equals one over λ times ln of one plus one over R.
A ratio of one means equal parent and daughter inventories and therefore an age of one half-life when expressed with the matching λ; a very large R means little daughter has accumulated and the age approaches zero; a small positive R means most parent has decayed and the age is many half-lives. The natural logarithm is only defined for a strictly positive argument, so one plus D over P must be greater than zero.
When R is zero the reciprocal is undefined; when R is negative or otherwise drives the argument of the log to zero or below, the age equation has no real solution for that input pair.
What you can do with it
Classroom radiometric dating labs
Let students enter parent-to-daughter ratio and λ, then verify the closed-system age against hand calculation of t=(1/λ)·ln(1+D/P).
Exam and LMS auto-grading
Mark geochronology items with a deterministic oracle that rejects ratios making the logarithm undefined and never invents a negative age.
Notebooks and teaching demos
Convert a measured P/D inventory and a published decay constant into a quick age before loading full isochron or Ar-Ar software.
FAQ
When is the isotope ratio invalid?
When R is zero, non-positive, or otherwise makes 1+D/P ≤ 0 so the natural logarithm is undefined.
What time unit is the age returned in?
If λ is in 1/year, age is in years; if λ is in 1/Ma, age is in million years.
Does this correct for initial daughter or multi-isotope systems?
No. It solves the general closed-system single parent→daughter age equation only. Isochrons, initial ratios, and discordance tests are out of scope.
Why is the half-life shown too?
The calculator adds the half-life, ln 2 divided by λ, so you can see at a glance how many half-lives the age represents. Both share the time unit of the decay constant.
What does a very large or very small ratio mean?
A very large ratio means little daughter isotope has built up, so the age approaches zero. A small positive ratio means most of the parent has decayed and the sample is many half-lives old.
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/earth/radiometric-age-general \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"parent_to_daughter_ratio":1,"decay_constant":1.55125e-10}'const res = await fetch("https://api.kit.forhosting.com/earth/radiometric-age-general", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"parent_to_daughter_ratio": 1,
"decay_constant": 1.55125e-10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/earth/radiometric-age-general",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"parent_to_daughter_ratio": 1,
"decay_constant": 1.55125e-10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/earth/radiometric-age-general", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"parent_to_daughter_ratio":1,"decay_constant":1.55125e-10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"parent_to_daughter_ratio":1,"decay_constant":1.55125e-10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/earth/radiometric-age-general", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"parent_to_daughter_ratio": 1,
"decay_constant": 1.55125e-10
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "earth.radiometric_age_general",
"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
When the isotope ratio is zero, non-positive, or otherwise makes one plus D over P non-positive, the task fails with invalid_input so notebooks and LMS graders never treat a domain error as a successful zero age.
The closed-system age equation and what the ratio means
Decay constant must be strictly positive: a non-positive λ would invert growth or division by zero and is outside the physical radiometric age model this endpoint implements.
Input contract, response fields, and error behaviour
Invalid requests are not billed. POST a JSON body with two required finite numbers: parent_to_daughter_ratio (aliases include ratio, isotope_ratio, parent_daughter_ratio, p_over_d) and decay_constant (aliases lambda, k, decay_rate). Each field may arrive as a JSON number or as a decimal numeric string; missing fields, empty strings, non-finite values, and magnitudes beyond the supported absolute ceiling fail with invalid_input naming the field. On success the body echoes the cleaned parent_to_daughter_ratio and decay_constant, reports daughter_parent_ratio as the reciprocal D over P, age as the radiometric time t, half_life as ln two over λ for convenience when you want to compare t to t½, log_argument as the value passed into the logarithm, plus formula, equation, unit_note, and method strings for display. Age and half_life share the reciprocal time unit of the decay constant: if λ is given in per year, age is in years; if λ is in per million years, age is in million years. Example: parent_to_daughter_ratio equals one and decay_constant equals ln two yields age equal to one, because one plus D over P equals two and ln two over λ cancels to the half-life scale. Pair the numeric age with your own stratigraphic or petrologic context; this endpoint does not apply isochron regressions, initial daughter corrections, or multi-system discordance tests—it solves the general single-ratio closed-system clock only.
Where a radiometric age API earns its keep
Classroom labs and earth-science courses use a radiometric age calculator so learners can check t equals one over λ ln of one plus D over P for arbitrary ratios without calculator-mode log errors. Exam and LMS generators need a deterministic oracle that marks domain failures when the isotope ratio makes the logarithm undefined, instead of a hollow success with a zero age that a buggy grader might accept. Failed validation does not consume balance. Research notebooks and teaching demos often convert a measured parent-to-daughter inventory and a published decay constant into a quick age before committing to full isochron software; calling a tiny parse API avoids pulling a full geochronology package for a two-parameter closed-form step. Keep requests small, pin the rounded age and half_life in tests, and you get reproducible radiometric ages for homework, LMS plugins, and edge workers without standing up symbolic math or laboratory middleware of your own.
Technical questions
How is radiometric age computed from the parent-to-daughter ratio?
Send finite positive parent_to_daughter_ratio R=P/D and strictly positive decay_constant λ. The API returns age t=(1/λ)·ln(1+1/R), which is the classic t=(1/λ)·ln(1+D/P) form.
What does the radiometric age calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.