ForHosting KIT · Health & fitness

Time of death estimator

A body at 32.5 °C in a room at 18 °C, weighing 70 kg, has been cooling for about seven and a half hours by the Henssge method. Enter three measurements to estimate the interval for study and teaching. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Body temperature
32.5
Ambient temperature
18
Weight
70
You get
Normal temperature
37 hours
Hours since death
7.481808
Cooling constant
-0.0616600815
Normalized temperature
0.7631578947

This time of death calculator estimates hours since death from three measurements: current body temperature, ambient temperature, and body weight. After circulation stops, a body cools toward the surrounding air; forensic teaching inverts that cooling curve to recover a post-mortem interval. The engine uses Henssge's empirical cooling constant from body mass together with the Marshall-Hoare double-exponential cooling model, then solves for elapsed hours so the same inputs always produce the same estimate. It is an educational, deterministic approximation for study, teaching, and software tests, not a legal or clinical determination of the moment of death. Requests that report a body temperature above normal living temperature are rejected, because a living or febrile reading is outside the cooling model.

What the cooling model computes from temperature and weight

After death the body no longer produces metabolic heat, so rectal temperature falls toward the temperature of the surrounding air. Time-of-death work inverts that cooling curve: given the temperature now, the air temperature, and how large the body is, the model estimates how many hours of cooling already happened.

This calculator uses Henssge's mass-dependent cooling constant B equal to minus 1.2815 times weight to the power of minus 0.625, plus 0.0284, with weight in kilograms and B in inverse hours, together with the Marshall-Hoare double-exponential that forensic nomograms are built on. The engine then solves Q of t equals A times e to the B t minus (A minus 1) times e to the (A over A minus 1) times B t, for t in hours, with a deterministic Newton iteration from the single-exponential guess ln(Q) over B.

Heavier bodies cool more slowly, so the same temperature drop implies a longer interval when weight is larger.

Forensic science coursework

Check a Henssge-style hours-since-death estimate from rectal temperature, room temperature, and body mass against a nomogram or homework key.

Teaching keys and quiz engines

Generate reproducible post-mortem interval answers from known temperature and weight triples without drawing a paper cooling chart.

What happens if body temperature exceeds normal living temperature?

A reading above 37 °C is treated as living or febrile, so it is outside the cooling model and is not billed.

Why does a heavier body return more hours for the same temperatures?

Henssge's B becomes less steep as mass grows, so a large body loses heat more slowly. The same drop from 37 °C therefore implies a longer post-mortem interval.

Can this be used as the legal time of death?

No. It is an educational approximation for study and teaching. Clothing, humidity, air flow, a fever at death and the measurement site all shift the true interval, and none of them is corrected here.

Which temperatures should I enter?

The current deep-body or rectal temperature and the air temperature around the body, both in degrees Celsius, plus the weight in kilograms. The air must be below 37 °C, otherwise there is no cooling to measure.

Why does it matter whether the room is cool or warm?

The method applies a plateau factor of 1.25 when the air is at 23.2 °C or less, and 1.11 when it is warmer. That reproduces the short temperature plateau that comes before steady exponential cooling.

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.

POSThttps://api.kit.forhosting.com/health/time-of-death

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.

curl -X POST https://api.kit.forhosting.com/health/time-of-death \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"body_temperature":32.5,"ambient_temperature":18,"weight":70}'
{
  "body_temperature": 32.5,
  "ambient_temperature": 18,
  "weight": 70
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "health.time_of_death",
  "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.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

min_weight_kg5
max_weight_kg250
normal_temperature_c37
HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Run it free in the browser, or call the API at $0.002 per successful task.

What the cooling model computes from temperature and weight

A plateau factor of 1.25 applies when ambient_temperature is at most 23.2 degrees Celsius and 1.11 when ambient air is warmer; those factors reproduce the short post-mortem temperature plateau before Newton's exponential decay dominates. Normalized temperature Q is body_temperature minus ambient_temperature, divided by 37 minus ambient_temperature, using 37 degrees Celsius as normal living temperature at the instant of death. The result is an educational hours_since_death figure, not a courtroom time of death: clothing, humidity, air flow, fever at death, and measurement site all move the true interval, and those corrections are outside this three-field contract.

Input contract, rejected readings, and the response shape

Ambient temperature must stay below 37 degrees Celsius so there is a cooling driving force. POST a JSON object with three required finite numbers. body_temperature is the current deep-body or rectal temperature in Celsius; aliases body_temp and rectal_temperature are accepted. ambient_temperature is the surrounding air temperature in the same unit; aliases ambient and ta work. weight is body mass in kilograms; aliases weight_kg, body_weight, mass, and kg are accepted. Every field must parse as a finite number: missing keys, empty strings, NaN, and infinities fail with invalid_input naming the field, and those failures are not billed. body_temperature must not exceed normal living temperature of 37 degrees Celsius—the cooling model starts from that value, so a febrile or living reading is rejected rather than producing a negative interval. body_temperature must also stay strictly above ambient_temperature; once the body has equilibrated with the air the exponential is flat and hours cannot be recovered. weight must be positive and between 5 and 250 kilograms, the range where Henssge's B formula stays a cooling (negative) rate for human-scale bodies. On success the body echoes the validated inputs, reports hours_since_death rounded to six decimal places, unit hours, the Henssge cooling_constant B, the dimensionless normalized_temperature Q, the plateau_factor A, method henssge_marshall_hoare, normal_temperature 37, and a formula string you can show next to the number.

Where a time of death estimate belongs, and where it does not

Forensic science courses use a time of death calculator so students can check a Henssge-style estimate against a nomogram without drawing the paper chart for every homework body. The page is not a substitute for a pathologist, a death-scene reconstruction, or a legal timeline. Treat the number as an educational central estimate and keep courtroom language off the result label. In the browser the run is free. Instructors generate answer keys from known triples of rectal temperature, room temperature, and mass, then mark the hours_since_death field instead of eyeballing a curve. Clothing, wetness, air movement, sunshine, fever at the moment of death, and whether the probe sat in the rectum or on the skin all change the true interval; this endpoint models an unclothed, still-air, rectal cooling path only. Through the API each successful estimate costs $0.002; invalid input is not charged and nothing is stored after the response. Pair this helper with other health calculators when you are assembling a small, deterministic physiology lab, and remember that hours_since_death is a model output, not a certified time of death for any real investigation.

Deterministic PMI test fixtures

Seed unit tests and training-app CI with a stable hours_since_death for the same body_temperature, ambient_temperature, and weight.

How does this time of death calculator estimate hours since death?

It builds Henssge's cooling constant B from body weight, forms the normalized temperature Q from body_temperature, ambient_temperature, and 37 °C, then inverts the Marshall-Hoare double-exponential for t in hours.

Which units do body_temperature, ambient_temperature, and weight use?

Temperatures are Celsius. weight is kilograms (5 to 250). The result hours_since_death is in hours. There is no Fahrenheit or pound conversion on this endpoint.

What does the time of death calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →