Gellish max heart rate calculator
At 40 years old, the Gellish equation puts your maximum heart rate at 179 bpm: 207 minus 0.7 times your age. Use it when a coach, course or app asks for Gellish specifically rather than Fox or Tanaka. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Age
- 40
- Hrmax bpm
- 179 bpm
- Equation
- 207 - 0.7 * age
- Precision
- 2
Maximum heart rate is the highest pulse in beats per minute that a person of a given age is expected to reach during all-out effort. The Gellish equation estimates that ceiling from age alone: two hundred seven minus zero point seven times age in years. Coaches, cardiac-rehab educators, and fitness-app authors search for this named regression specifically, because it is not the classic Fox two-hundred-twenty rule and not the Tanaka two-hundred-eight intercept either.
What the Gellish equation estimates and what you get
Maximum heart rate is an estimate of the highest sustainable pulse in beats per minute that a person of a given age can typically reach under maximal exertion. Trainers and textbooks use that ceiling when sketching intensity bands such as fifty to sixty percent of HRmax for easy recovery or eighty to ninety percent for harder intervals, even though true individual peaks still vary with genetics, medications, and fitness.
The linear Gellish equation, published by Gellish and colleagues, is a population regression of the form two hundred seven minus zero point seven times age. It is close to the Tanaka intercept of two hundred eight but is a distinct published coefficient set, so people who search for a Gellish maximum heart rate calculator are not looking for a multi-formula Fox–Tanaka–Gulati table. This page answers that named-formula intent only.
Where a Gellish HRmax calculator fits in training, teaching, and software
Coaches and athletes often start zone planning with an age-predicted ceiling before refining with field tests or lab data, and a dedicated Gellish page lets them cite the two-hundred-seven intercept instead of silently swapping in Fox or Tanaka. Teachers can pre-generate answer keys for modest ages without trusting opaque apps that change coefficients or drop decimals.
Developers call the same contract from scripts to seed deterministic test vectors for heart-rate UIs, to normalize user-entered ages before intensity demos, or to satisfy programming-challenge statements that demand the Gellish form rather than a hardcoded two hundred twenty. Contest and certification practice sometimes needs a fast, offline source of bpm estimates so solutions can be checked without laboratory equipment. Product and education tools use the estimate when a learner types an age and the UI must show this named textbook equation with a clear bpm result.
What you can do with it
Named-formula training starting points
Estimate HRmax from age with the Gellish equation so athletes and coaches can sketch intensity bands while citing the 207 − 0.7 × age coefficients.
Homework and exercise-physiology education
Generate reproducible bpm answers for textbooks, quizzes, and labs that specifically teach the Gellish maximum heart rate regression.
FAQ
What does the Gellish max heart rate calculator cost?
It is free in your browser on this page.
How is Gellish different from Fox or Tanaka?
Fox is 220 − age. Tanaka is 208 − 0.7 × age. Gellish uses the same 0.7 slope as Tanaka but a 207 intercept, so the two differ by one beat per minute at every age.
What happens if age is missing, zero, or negative?
Age is required and must be a positive finite number; missing and non-positive values are not valid for this equation.
Is this a medical measurement of my true max heart rate?
No. Gellish is a population regression from age alone. True individual maximums vary; use clinical or supervised testing when precision matters for health decisions.
How do I use the Gellish estimate to set training intensities?
Trainers often sketch bands from it, such as 50 to 60 percent of the estimate for easy recovery and 80 to 90 percent for harder intervals. Treat it as a starting point and refine it with field tests or lab data.
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/health/hrmax-gellish \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":40}'const res = await fetch("https://api.kit.forhosting.com/health/hrmax-gellish", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/hrmax-gellish",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/hrmax-gellish", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/hrmax-gellish", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"age": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.hrmax_gellish",
"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.
Limits
max_age | 120 |
min_age | 1e-9 |
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
This calculator applies the published linear Gellish form, returns a structured bpm result, and rejects missing or invalid age with invalid_input.
What the Gellish equation estimates and what the response contains
For each request you get the validated age, hrmax_bpm from the closed form, unit tagged as bpm, method set to gellish, the formula and equation strings, and the precision used for rounding. There is no wearable sync path and no random noise: the engine either builds a finite bpm estimate inside the supported age range or rejects the input with invalid_input. Rejected cases include missing age, empty strings, non-finite values, ages above the documented ceiling, and any non-positive age, because zero or negative years are not meaningful for this model.
How age is read and how the Gellish arithmetic stays reproducible
Optional leading plus signs and scientific notation on age strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong heart-rate ceiling. Worked examples you can pin: age forty yields one hundred seventy-nine beats per minute exactly, because zero point seven times forty is twenty-eight and two hundred seven minus twenty-eight is one hundred seventy-nine; age thirty-five yields one hundred eighty-two point five, because zero point seven times thirty-five is twenty-four point five. The preferred field is age in years, but aliases age_years, years, and a are accepted so spreadsheets, query strings, and typed forms can reuse the same contract. Age must be strictly positive: zero, negative numbers, and non-finite values fail with invalid_input because the Gellish equation is not defined for non-positive age. An optional precision field, with aliases decimals and dp, chooses how many decimal places to expose for age and hrmax_bpm, defaulting to two and capped at fifteen so JSON goldens stay stable. Pair the free browser run on this page with the priced API when you need the identical mathematical result inside an automated pipeline without re-implementing the Gellish coefficients yourself.
Where a Gellish HRmax calculator fits in training, teaching, and software
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split — free interactive exploration and a priced, identical API — matches the rest of the KIT tier-A catalog and lets you move from a classroom demo to an automated pipeline without changing the mathematical result. Pair it with pace, VO2, or other health endpoints when you are building a small lab of free, deterministic fitness helpers, and always treat population formulas as estimates rather than medical diagnosis.
Integration use cases
Deterministic software fixtures
Seed unit tests and coaching apps with a stable Gellish HRmax output without re-implementing the intercept and slope in every client language.
Technical questions
What is the Gellish equation for maximum heart rate?
The linear Gellish form is HRmax = 207 − 0.7 × age, with age in years and HRmax in beats per minute. The response field hrmax_bpm holds that estimate.