Maffetone 180 aerobic heart rate
At 40 with steady training, the Maffetone 180 formula puts your aerobic ceiling at 140 bpm, with an easy window of 130 to 140. Enter your age and training history to set the limit for base-building runs and rides. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Age
- 40
- Category
- Consistent bpm
- Adjustment
- 0
- Base hr
- 140
- Maf hr
- 140
This Maffetone 180 aerobic heart rate calculator estimates your maximum aerobic function heart rate from chronological age and a training-status adjustment published by Dr. Phil Maffetone. The closed form is one hundred eighty minus age, then minus ten, minus five, unchanged, or plus five according to health and training history. Athletes sixteen and under receive a fixed one hundred sixty-five beats per minute because the one-hundred-eighty formula is not applicable in that age band. The engine is fully offline and deterministic: the same age and category always yield the same beats-per-minute ceiling and ten-beat aerobic training window, with no network calls, no sampling, and no date-dependent shortcuts.
Where Maffetone MAF heart rate fits in training, teaching, and software
Coaches and endurance athletes often start aerobic base building with the 180-Formula before refining with field tests, and Maffetone-specific search intent is distinct from a generic maximum-heart-rate or Karvonen landing because the number is a ceiling for easy work, not an all-out peak. Teachers can pre-generate answer keys for modest ages and every category without trusting opaque apps that silently change the plus-five rule or drop the youth exception.
Developers call the same contract from scripts to seed deterministic test vectors for aerobic-zone user interfaces, to normalize user-entered ages before a training demo, or to satisfy programming-challenge statements that demand the Maffetone 180-Formula rather than two hundred twenty minus age. Contest and certification practice sometimes needs a fast, offline source of beats-per-minute estimates so solutions can be checked without laboratory equipment.
Product and education tools use the estimate when a learner types an age, picks a training history, and the interface must show a single textbook formula with a clear equation label and a ten-beat window.
What you can do with it
Aerobic base training targets
Estimate MAF heart rate from age and training category so endurance athletes can hold easy runs and rides inside the ten-beat aerobic window.
Homework and coaching education
Generate reproducible 180-Formula answers for textbooks, quizzes, and clinics that teach Maffetone aerobic heart rate, including the youth 165 bpm exception.
FAQ
What does the Maffetone 180 aerobic heart rate calculator cost?
It is free in your browser on this page.
Which formula is used?
Athletes 16 and under receive a fixed 165 bpm. This page does not compute Fox, Tanaka, or Karvonen maximum or reserve heart rates.
What happens if age is missing or not a number?
Age is required and must be a finite number between 1 and 120 years; blank forms never invent a heart-rate ceiling.
Is this my true maximum heart rate?
No. MAF HR is a coaching estimate of the top of the aerobic training band, not an all-out laboratory maximum. True individual ceilings vary; use clinical or supervised testing when precision matters for health decisions.
How does the training category change the result?
Illness subtracts 10 bpm, beginner subtracts 5, consistent leaves 180 − age unchanged, and competitive adds 5. Category is ignored for ages 16 and under, who always receive 165 bpm.
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/maffetone-aerobic-hr \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":40}'const res = await fetch("https://api.kit.forhosting.com/health/maffetone-aerobic-hr", {
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/maffetone-aerobic-hr",
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/maffetone-aerobic-hr", 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/maffetone-aerobic-hr", 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.maffetone_aerobic_hr",
"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
What the 180-Formula computes and what the response contains
The Maffetone maximum aerobic heart rate is an estimate of the highest pulse, in beats per minute, at which an athlete can still train aerobically according to the 180-Formula rather than a laboratory lactate or ventilatory threshold test. Coaches and endurance athletes use that ceiling as the top of an easy training band, typically a ten-beat window from ten beats below MAF heart rate up to MAF heart rate itself, so long aerobic sessions stay below the point where anaerobic contribution rises sharply. This calculator does not measure your pulse, does not estimate maximum heart rate with Fox or Tanaka equations, and does not prescribe medical treatment; it applies the published closed form to age and a discrete training category and returns structured numbers you can cite or wire into software. For each request you receive the validated age, the normalized category, the signed adjustment in beats, the unadjusted base of one hundred eighty minus age or one hundred sixty-five when the youth exception applies, maf_hr as the primary result, zone_low and zone_high as the ten-beat aerobic window, unit tagged as bpm, method tagged as maffetone_180 or youth_fixed_165, plus formula, message, and steps fields that document the arithmetic explicitly. There is no wearable sync path and no random noise: the engine either builds a finite beats-per-minute estimate or rejects the input with invalid_input. Rejected cases include a missing age, non-finite values, any non-positive age, ages outside one to one hundred twenty years, and an unrecognized category string, because those inputs are not a valid 180-Formula domain.
How age and category are read so the 180-Formula 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 aerobic ceiling. The four canonical values are illness for minus ten beats, beginner for minus five, consistent for no change, and competitive for plus five; common synonyms such as rehab, injured, elite, and trained fold into those four after case folding. When category is omitted the engine uses consistent, matching the official instruction to keep one hundred eighty minus age unchanged for athletes who train regularly without the listed problems. Ages sixty-five and older still use one hundred eighty minus age plus the selected adjustment, and the response adds a short note that further individualization may be needed. 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 lie between one and one hundred twenty inclusive: zero, negative numbers, non-finite values, and ages outside that window fail with invalid_input because the 180-Formula is not defined there. Optional category, with aliases adjustment_category, training, and status, selects the official adjustment bucket and is declared as a closed enum so the form paints a select instead of asking you to memorize syntax. Athletes aged sixteen or younger take a different path: maximum aerobic heart rate is fixed at one hundred sixty-five beats per minute, the category is echoed for audit but not applied, method is tagged youth_fixed_165, and youth_exception is true.
Where Maffetone MAF heart rate 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 — lets you move from a classroom demo to an automated pipeline without changing the mathematical result. Pair it with pace, oxygen-uptake, or other health endpoints when you are building a small lab of free, deterministic fitness helpers, and always treat population coaching formulas as estimates rather than medical diagnosis or a substitute for supervised exercise testing when health decisions are at stake.
Integration use cases
Deterministic software fixtures
Seed unit tests and coaching apps with stable MAF outputs without re-implementing 180 minus age and the four official adjustments.