How long an animal lives, against how long an animal of its size should live.
Body mass predicts lifespan. Across the species below — from a rotifer at half a microgram to a blue whale at 150 tonnes, fourteen and a half orders of magnitude — each tenfold increase in mass buys roughly a 1.5-fold increase in maximum lifespan, and the relationship holds across the whole animal kingdom. The longevity quotient is what is left once that relationship is divided out: observed maximum lifespan over the lifespan predicted for that mass. A quotient of one is exactly as long as expected. The interesting animals, and the interesting groups, are the ones far from one.
The group view aggregates every species in a taxon and compares taxa against each other at any rank from phylum down to genus. The bar is the geometric mean quotient of the group's species, with a faint line showing the range from its lowest to its highest member. The geometric mean is used rather than the arithmetic one because quotients are ratios: a species at 4× and a species at 0.25× should average to 1, not to 2.1.
Click any group to drop into the species view filtered to it. The minimum species control matters most at family and genus rank, where a great many groups contain a single animal and their group statistic is just that animal.
An ordinary least squares regression of log lifespan on log body mass. Group fits matter: birds live about twice as long as mammals of the same mass, so a single fit across every animal charges every bird a bonus it did not earn and every mammal a penalty. The default here is the group fit; the switch above shows what a single global fit does instead. Fish classes are pooled together, and the many small invertebrate classes are pooled into one baseline, because separately they are too thin to fit.
Slope is the exponent b in lifespan ∝ massb. r² is measured on the logarithms, so a high value still permits a factor of two error on an individual species. A fit is rejected, and that group falls back to the global baseline, if its slope is not positive or its r² falls below 0.15 — that is what a sample too small to mean anything looks like.
Every species carries a grade: A documented and verified, B a defensible literature estimate, C uncertain. Grade C is kept out of the regressions, and hidden from the rankings by default, and the second of those matters more than it sounds.
Maximum lifespan is an extreme-value statistic: its expected value rises with the number of individuals anyone watched, so a thinly-studied species looks short-lived for reasons that have nothing to do with ageing. That is what grade C mostly marks. If those records are dropped from the fit but left in the display, they are being scored against a baseline they did not contribute to, and they pile up at the bottom of the ranking looking like a discovery. They are not a discovery. They are the sampling effort showing through. Switch to Include C to see them, and read the bottom of that ranking as a map of what is understudied rather than what is short-lived.
One more kind of record is graded C by rule rather than by its source. A compilation figure that far from every other animal of its size and kind is a unit or field error, not an observation — the lowest of them was a 2.2-kilogram hare with a maximum lifespan of one month — and it was sitting at the bottom of every sort graded B. The rule runs in both directions, so a figure ten times too long is treated the same as one ten times too short, and it never touches a grade-A record, which was checked by hand against a citation. Nothing is deleted: a demoted record keeps its row, its note says why, and Include C shows it.
Four entries are colonies rather than individuals: a black coral, a boulder star coral, a giant barrel sponge, and a glass sponge whose spicule growth rings have been read as eleven thousand years. Those are ages of the colony. The polyps composing them live ordinary short lives. They are excluded from every regression, because including them would drag the invertebrate baseline somewhere meaningless, and they are hidden by default for the same reason: an eleven-thousand-year colony sits at the top of every ranking and buries the actual result. Switch Colony ages to Include to see them, marked colonial.
Each species carries up to three maxima, and the bars say which is which: a solid bar is a wild maximum, a hollow bar a captive one, and a hatched bar a maximum whose source did not say where the animal lived. That third kind is the largest: . It comes from the Amniote and AmphiBIO compilations, which report one figure per species without an origin, from FishBase population records, and from the AnAge rows whose specimen origin is listed as unknown. Until September 2026 every one of those was drawn here as a wild maximum. It is not, and it is not relabelled as captive either; it is drawn as what it is.
Longest, the default, takes the largest of whatever a species has and is the figure the baselines are fitted on. Average takes the mean of the recorded maxima. Wild only and Captive only use nothing but a figure a source labeled as such, so they shrink the table to the species that have one.
These are maxima, not averages. A maximum is the oldest individual anyone recorded, which makes it sensitive to how many individuals were watched and for how long. Captive maxima are better documented than wild maxima for nearly every species that has both, because captive animals are counted and wild ones are not. That asymmetry inflates the apparent captive advantage. It is real for small prey animals, which mostly die of being eaten, and it reverses for large social mammals: elephants and killer whales have lower median lifespans in captivity than in the wild, whatever their record holders show.
Data quality is graded per species: A is documented and verified, B is a defensible literature estimate, C is uncertain. The grade and the source appear in the panel when a species is selected. Disputed records — the 226-year koi, the 120-year cockatoo — are excluded in favor of the verified figure.
Andrew Silvestri · lifespan and mass compiled from the
comparative longevity literature; the merge that builds the table is
data/ingest.py and the model is build_lq.py.