Geologic Age Converter: Ma, Ga, ka and the ICS Time Scale
Heading to the field? Install this site from your browser menu and this tool works with no signal. See how
Geologic Age Converter and Time Scale Tool
Convert an age between years, ka, Ma and Ga, place it on the ICS time scale, measure the span between two ages, work out accumulation rates and solve radiometric decay ages. Boundary ages follow the International Chronostratigraphic Chart, December 2024.
Position on the International Chronostratigraphic Chart
Calculation steps
| Name | Rank | Base, Ma | Top, Ma | Duration, Myr | Sits inside |
|---|
Intervals the span touches
| Rank | Intervals crossed | Count |
|---|
Calculation steps
Calculation steps
Where that age falls on the chart
Calculation steps

How to use this tool
Type an age into the Convert tab, pick the unit it is written in, and everything else updates as you type. The five cards give the same age in Ga, Ma, ka, years and seconds, and the row of chips underneath tells you which eon, era, period, epoch and stage that age falls in. Both timeline bars redraw with a red marker at your value, the upper one across all of Earth history and the lower one zoomed into whichever period contains it.
The input people get wrong is the unit, and it is nearly always the same mistake in the same direction. A paper reports a zircon date as 1.85 Ga, someone types 1.85 and leaves the selector on Ma, and the answer comes back in the Early Jurassic instead of the Paleoproterozoic. The tool cannot catch that for you because 1.85 Ma is a perfectly legal age, so check the selector before you trust the chips. It does catch the other direction: anything older than 4567 Ma is flagged, because nothing on Earth is.
The unit list also carries three datums rather than plain multiples. Years BP counts from the 1950 radiocarbon datum. Calendar year CE and calendar year BCE convert through that same datum, which is why 1 BCE comes out as 1950 BP and not 1951: there is no year zero, so 1 BCE is astronomical year 0. The other four tabs take the same age handling and put it to work. Span measures the interval between two ages and lists every chart unit it crosses. Accumulation rate solves any one of thickness, duration and rate from the other two. Radiometric age turns a measured isotope ratio into an age for ten decay systems and then drops that age back onto the chart.
What the calculation is doing
The conversions themselves are trivial and that is the point: every value goes to years first, then out to whatever you asked for. A thousand years is a ka, a million is an Ma, a billion is a Ga. Seconds use the Julian year of 365.25 days, which is the convention behind the SI annum, so one Ma is 3.15576 times ten to the thirteenth seconds exactly rather than something that drifts with leap years.
What actually needs care is the difference between Ma and Myr, and most sloppy stratigraphy comes down to conflating them. Ma is a point in time, measured back from the present. Myr is a length of time with no anchor. The Jurassic began at 201.4 Ma and ended at 143.1 Ma, so it is 58.3 Myr long. Writing that the Jurassic is 58.3 Ma long is not a style quibble, it is a category error, and it becomes a real one the moment you feed the number into a subsidence or maturity calculation that expects a duration. This tool keeps them separate on purpose: the Convert tab returns Ma, the Span tab returns Myr, and they are labelled differently.
The chart itself is a lookup, not a formula. Every eon, era, period, epoch and stage in the International Chronostratigraphic Chart is stored as a pair of boundary ages, and placing an age is a matter of finding the interval whose base is older and whose top is younger. That sounds too simple to get wrong, and yet the data behind it is where the errors hide, which brings us to the part worth explaining.
Why the boundary ages keep moving, and why that matters to you
Chronostratigraphic boundaries are defined by a physical point in a physical outcrop, the golden spike, and not by a number. The number is a measurement of that point, and measurements improve. That is a healthy arrangement for stratigraphy and an annoying one for anybody comparing two datasets, because the same named boundary carries different ages in different vintages of the chart.
The moves are not small. In the last few revisions the base of the Cretaceous went from 145.0 Ma to 143.1 Ma, the base of the Silurian from 443.8 to 443.1, the base of the Devonian from 419.2 to 419.62, the base of the Ordovician from 485.4 to 486.85. A 1.9 Myr shift at the base of the Cretaceous sounds like rounding until you are computing an accumulation rate across the Berriasian, where it changes the answer by around a third.
So the practical rule is that a geologic age is only meaningful alongside the chart version it was placed against. This tool uses the December 2024 chart throughout and says so on the face of the app, in the table footer and in the exported CSV. If you are reconciling a number from an older report and it disagrees with what you see here by a couple of million years near a period boundary, the chart version is the first thing to check, well before you start doubting the analysis.
The same logic applies to the decay constants in the Radiometric age tab, only more so. The rubidium 87 constant moved from 1.42 to 1.397 times ten to the minus eleven per year, which shifts every rubidium strontium age by about 1.6 percent. Carbon 14 is worse, because the field deliberately kept the wrong number: the Libby half life of 5568 years is 2.9 percent short of the measured 5730, and conventional radiocarbon ages are still reported on Libby so that half a century of published dates stay comparable. Both are in the system list. If you are reproducing a published age, match the constant the original used rather than the best modern one.
A worked check you can repeat on paper
Load the page and leave the Convert tab on its defaults, 66 and Ma. That is the Cretaceous Paleogene boundary, which is a good test because everybody knows roughly where it should land.
Sixty six million years is 66 000 000 yr, so 66 000 ka and 0.066 Ga. In seconds it is 66 000 000 multiplied by 31 557 600, which is 2.083 times ten to the fifteenth. Earth history is 4567 Ma, so 66 divided by 4567 is 0.014451, or 1.445 percent. Turn that into a clock where the planet forms at midnight and now is the next midnight and you get 24 hours less 1.445 percent of 24 hours, which is 23:39:11. Every one of those appears on the page.
The chips should read Phanerozoic, Mesozoic, Cretaceous, Late Cretaceous, Maastrichtian. Note that 66 exactly is a boundary at four ranks at once, and every one of them resolves downward: Mesozoic rather than Cenozoic, Cretaceous rather than Paleogene, Late Cretaceous rather than Paleocene, Maastrichtian rather than Danian. That is deliberate. An age sitting exactly on a boundary is reported in the older interval, because a sample dated at the boundary age is stratigraphically at the top of the older unit and not above it. Nudge the value to 65.99 and all four chips flip at once, which is a neat way to see how tightly the ranks are nested.
Now the decay tab, with uranium 238 to lead 206 selected and a daughter to parent atom ratio of 0.0538. The age equation for a simple decay chain is t equals one over lambda times the natural log of one plus the ratio. Lambda for uranium 238 is 1.55125 times ten to the minus ten per year. The natural log of 1.0538 is 0.0524027. Divide that by 1.55125 times ten to the minus ten and you get 337 809 372 years, so 337.809 Ma, which puts the sample in the Visean stage of the Mississippian. Only 0.0756 of a half life has elapsed, so 94.89 percent of the original uranium is still sitting there. That last figure is the sanity check that matters on this system: uranium 238 has a 4468 Myr half life, so even a sample as old as the Earth has burnt through less than a single half life.
The Span tab defaults to 201.4 and 143.1, the two ends of the Jurassic. It returns 58.3 Myr, 1.277 percent of Earth history and 10.82 percent of the Phanerozoic, and it reports one period, three epochs and eleven stages crossed. Counting the stages by hand from Hettangian to Tithonian gives eleven, which is the check.
Every engine on this page was written twice, once as a reference implementation run in Node against hand calculations and published half lives, and once as the browser code you are using. The two were then compared: 400 sample ages checked at all five chart ranks, 2000 comparisons, plus every decay system, and they agree to floating point precision. The derived half lives are the strongest single check, because the tool stores decay constants and not half lives, yet dividing the natural log of 2 by each stored constant reproduces the published half lives to within 0.07 percent: 4468 Myr for uranium 238, 703.8 Myr for uranium 235, 1250 Myr for potassium 40, 49.6 Gyr for rubidium 87. Five of the boundary ages were also checked against an independent published source after the first two sources disagreed about them, and the December 2024 values were confirmed.
Mistakes that catch people out
Reading a duration as an age. If a table says an interval is 23.48, ask whether that is a position or a length. The Silurian is 23.48 Myr long and it sits at 443.1 to 419.62 Ma. Nothing about the bare number tells you which one you are holding.
Assuming BP means before now. It means before 1950. For a Pleistocene age the 76 year offset is noise, but for anything Holocene or archaeological it is not, and it is the difference between a calibrated tree ring date and a radiocarbon result agreeing or not.
Treating a conventional radiocarbon age as a calendar age. It is not one, and the gap reaches roughly a thousand years in parts of the record. The tool gives you the conventional age from the decay equation, which is what a laboratory reports before calibration. Turning that into calendar years needs a calibration curve such as IntCal, and no arithmetic in a converter can substitute for it.
Dividing a stratigraphic thickness by a duration and calling it a sedimentation rate. What you get is an accumulation rate, and it is a compacted thickness averaged over every hiatus in the interval. It will sit well below the rate the sediment was actually deposited at, often by a factor of several, and the discrepancy grows the longer the interval you average over. The tool says so in the result banner rather than letting the number stand unqualified.
Using potassium argon arithmetic without the branching factor. Potassium 40 decays two ways and only the electron capture branch makes argon 40, so the age equation carries a factor of lambda over lambda sub e, about 9.54. Leave it out and every age comes back too young. For an argon to potassium ratio of 0.01 the correct answer is 164.4 Ma; the naive calculation gives 17.9 Ma, and it will look plausible.
Mixing chart versions inside one project. Pick a chart edition at the start, write it into the project header, and convert anything inherited from older work rather than assuming the boundaries have not moved.
Related Calculators and Reference
- True Stratigraphic Thickness Calculator, the step before an accumulation rate. Correct your measured interval for dip and hole deviation first, because a rate built on apparent thickness is wrong by the same factor as the geometry.
- Well Log Correlation Panel, for picking the tops that give you the two ages a span is measured between.
- Cross Section Maker, to turn those correlated tops into a section once the thicknesses and durations are settled.
- Vitrinite Reflectance Calculator, the natural next step when you have burial durations, since maturity depends on how long a rock sat hot and not only on how hot it got.
- Sediment Settling Velocity Calculator, for the depositional end of the same question, where grain size sets what could have accumulated at the rate you calculated.
- Dip and Strike Three Point Problem Calculator, for the structural attitude that the thickness correction depends on.
- International Commission on Stratigraphy chart, the source of every boundary age used here and the place to check which edition your own numbers came from.
