Mean arterial pressure calculator
A reading of 120/80 mmHg gives a mean arterial pressure of about 93.3 and a pulse pressure of 40. Enter your systolic and diastolic numbers to get the average pressure over one heartbeat, the value that best reflects how well organs are perfused. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Systolic blood pressure
- 120
- Diastolic blood pressure
- 80
- Pulse pressure
- 40 mmHg
- Mean arterial pressure
- 93.3333333333
Mean arterial pressure is the time-weighted average pressure in the arteries over one cardiac cycle. Clinicians, physiology students, and product teams often estimate it from a single pair of cuff readings with the classical formula MAP equals systolic plus two times diastolic, all divided by three. That expression is equivalent to diastolic plus one third of the pulse pressure, reflecting that diastole occupies roughly two thirds of the cycle at resting heart rates. This calculator accepts positive systolic and diastolic values in millimetres of mercury, returns cleaned inputs, pulse pressure, and MAP, and rejects non-positive readings so invalid cuff numbers never produce a misleading average.
How mean arterial pressure is estimated from systolic and diastolic readings
Blood pressure is commonly reported as two numbers: systolic blood pressure, the peak arterial pressure during ventricular contraction, and diastolic blood pressure, the trough pressure while the heart relaxes and refills. Mean arterial pressure sits between those extremes and better tracks organ perfusion pressure than either number alone. Under the standard resting approximation, MAP equals systolic plus two times diastolic, all divided by three.
The same quantity can be written as diastolic plus one third of the pulse pressure, where pulse pressure is systolic minus diastolic. Both forms are algebraically identical and use only elementary arithmetic. This capability implements that closed form exactly: it does not integrate a continuous arterial waveform, does not apply heart-rate corrections, and does not blend age-specific or drug-specific models.
Inputs must be finite and strictly greater than zero. A zero or negative systolic or diastolic reading cannot represent a meaningful cuff measurement for this model and fails with invalid input rather than inventing an absolute-value workaround. Always frame outputs as educational estimates from the published formula, not as a clinical diagnosis or a substitute for professional judgment, continuous monitoring, or local treatment protocols.
Where mean arterial pressure calculators show up in real work
Secondary-school and college physiology courses constantly assign MAP drills from textbook blood pressure pairs, so a single trusted oracle that returns MAP beside pulse pressure speeds grading and demo setup. Nursing and emergency-medicine training programs use the two-thirds diastolic rule as a bedside estimate before continuous arterial lines, and instructors need deterministic answer keys that match hand arithmetic. Product teams building educational wellness or simulation widgets want a documented systolic-diastolic path that clients can audit by hand rather than a black-box score that mixes multiple risk models without disclosure.
Research assistants preparing synthetic vital-sign datasets need stable MAP labels from known cuff pairs without network calls or model drift. If you later need BMI, body surface area, basal metabolic rate, hydrostatic pressure, or unit conversion among pascals and millimetres of mercury, treat those as separate search intents and landings rather than overloading this mean arterial pressure calculator page. Always present results as educational estimates from the classical MAP formula; clinical decisions require qualified professionals, continuous context, and protocols this tool does not collect.
What you can do with it
Classroom MAP answer keys
Generate MAP and pulse pressure from textbook SBP/DBP pairs so instructors and auto-graders share one transparent ground truth.
Physiology and nursing demos
Show the classical two-thirds diastolic MAP estimate in training labs without mixing continuous waveform models on the same landing.
FAQ
What is mean arterial pressure?
MAP is the time-weighted average arterial pressure over a cardiac cycle. This calculator estimates it as MAP = (SBP + 2×DBP) / 3 from a single systolic and diastolic pair.
What formula do you use?
MAP = (systolic + 2 × diastolic) / 3, which is the same as diastolic + (systolic − diastolic) / 3. Units are treated as mmHg.
What happens if systolic or diastolic is zero or negative?
Non-positive blood pressure readings are rejected rather than inventing absolute values or silent NaNs.
How do I format the input?
Send systolic and diastolic as finite positive numbers (e.g. 120 and 80).
What does it cost?
The browser tool is free and runs locally.
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/mean-arterial-pressure \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"systolic":120,"diastolic":80}'const res = await fetch("https://api.kit.forhosting.com/health/mean-arterial-pressure", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"systolic": 120,
"diastolic": 80
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/mean-arterial-pressure",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"systolic": 120,
"diastolic": 80
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/mean-arterial-pressure", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"systolic":120,"diastolic":80}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"systolic":120,"diastolic":80}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/mean-arterial-pressure", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"systolic": 120,
"diastolic": 80
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.mean_arterial_pressure",
"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
How mean arterial pressure is estimated from systolic and diastolic readings
The computation is pure floating-point arithmetic with no network calls, no random seeds, no wall-clock timestamps, and no machine-learning drift, so identical systolic and diastolic pairs always yield identical JSON.
What you send and what you get back
Send two required fields. Classic smoke checks include one hundred twenty over eighty, which yields a MAP of roughly ninety-three point three and a pulse pressure of forty, and one ten over seventy, which yields a MAP of roughly eighty-three point three. If your upstream form collects pressures in other units, convert to millimetres of mercury first with a dedicated converter and pass the positive mmHg numbers here. The field systolic is the systolic blood pressure in millimetres of mercury and must be a finite number strictly greater than zero; aliases sbp, systolic_pressure, and sys are accepted. The field diastolic is the diastolic blood pressure in the same unit and must also be finite and strictly positive; aliases dbp, diastolic_pressure, and dia are accepted. Missing fields, non-numeric strings, NaN, Infinity, zero, and negative values fail with invalid_input and are not charged. On success the response returns the cleaned systolic and diastolic values, pulse_pressure as systolic minus diastolic, mean_arterial_pressure as systolic plus two times diastolic divided by three, unit set to mmHg, the formula string MAP equals open parenthesis SBP plus two times DBP close parenthesis divided by three, and method mean_arterial_pressure. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance. If a caller supplies aliases such as sbp and dbp instead of the long names, the same validation and arithmetic path applies without changing the output shape.
Where mean arterial pressure calculators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Deterministic vital-sign fixtures
Bulk-produce stable MAP labels for synthetic datasets and regression tests with hard invalid_input on non-positive readings.