RSBI calculator
20 breaths a minute of 0.4 litres each give a rapid shallow breathing index of 50, below the commonly taught cutoff of 105. Enter the breathing rate and the tidal volume in litres to get the index. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Respiratory rate
- 20
- Tidal volume
- 0.4
- Rsbi
- 50
- Weaning threshold
- 105
The rapid shallow breathing index, abbreviated RSBI and sometimes called the Tobin index, is respiratory rate in breaths per minute divided by tidal volume in liters. Yang and Tobin described the quotient as a compact bedside marker of a fast, shallow breathing pattern. This calculator takes a finite positive respiratory rate and a strictly positive tidal volume, divides the first by the second, and returns the index in breaths per minute per liter.
What the rapid shallow breathing index is and how the ratio is formed
The rapid shallow breathing index is the arithmetic ratio of breathing frequency to tidal volume when tidal volume is expressed in liters, not milliliters. Frequency is the number of breaths counted in one minute. Tidal volume is the volume of gas moved in a typical breath.
Dividing frequency by that volume in liters yields a number whose unit is breaths per minute per liter: a patient taking twenty breaths of zero point four liters each has an RSBI of fifty, while thirty breaths of zero point two five liters each has an RSBI of one hundred twenty. The index rises when rate goes up or when each breath gets smaller, which is exactly the rapid-shallow pattern the name describes.
Yang and Tobin popularized a commonly taught educational threshold of one hundred five breaths per minute per liter when discussing spontaneous breathing trials; this tool reports the numeric index and a simple below-threshold flag against that published cutoff, but it does not diagnose weaning success, does not inspect arterial blood gas, and does not replace a clinician. Both inputs must be finite and strictly greater than zero.
Always frame outputs as educational estimates from the published ratio, not as a clinical weaning decision or a substitute for professional judgment, ventilator waveforms, or local protocols.
Where an RSBI calculator earns its keep in study, teaching, and software
Respiratory-therapy and critical-care courses routinely ask learners to compute RSBI from a given rate and tidal volume so they can compare the quotient against the commonly taught one hundred five cutoff on a spontaneous-breathing-trial vignette. Exam-prep generators need a deterministic oracle that rejects zero tidal volume instead of silently emitting Infinity that a buggy grader might treat as success.
Product teams building educational ventilator-weaning widgets want a documented frequency-over-volume path that clients can audit by hand rather than a black-box readiness score that mixes gas exchange, cuff leak, and sedation without disclosure. Simulation labs preparing synthetic ventilator datasets need stable RSBI labels from known rate and volume pairs without network calls or model drift. Chart-review practice sometimes needs a fast offline source of quotients so solutions can be checked without inventing unit conversions under time pressure.
Always present results as educational estimates from the published ratio; clinical weaning decisions require qualified professionals, continuous context, and protocols this tool does not collect.
What you can do with it
Weaning-lab homework and respiratory-therapy drills
Compute RSBI from textbook rate and tidal-volume pairs and check the educational one hundred five cutoff before grading or chart practice.
Education and simulation dashboards
Normalize user-entered respiratory rate and liter tidal volume into RSBI for tutors, quizzes, and simple weaning-education charts.
FAQ
What does the RSBI calculator cost?
It is free in your browser on this page.
How is the rapid shallow breathing index calculated?
RSBI equals respiratory rate in breaths per minute divided by tidal volume in liters. Example: 20 breaths/min with 0.4 L yields 50 breaths/min/L; 30 breaths/min with 0.25 L yields 120.
Must tidal volume be in liters or milliliters?
Liters. Convert milliliters first: 400 mL is 0.4 L. Values above 10 L are rejected so a milliliter figure is not silently treated as liters.
What happens if tidal volume is zero or negative?
Tidal volume must be a positive number in liters because RSBI is respiratory rate divided by tidal volume.
What does the 105 threshold mean?
It is the cutoff Yang and Tobin popularised for spontaneous breathing trials: an index below 105 breaths per minute per litre is flagged as below the threshold. It is a teaching marker, not a weaning decision.
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/rsbi \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"respiratory_rate":20,"tidal_volume":0.4}'const res = await fetch("https://api.kit.forhosting.com/health/rsbi", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"respiratory_rate": 20,
"tidal_volume": 0.4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/rsbi",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"respiratory_rate": 20,
"tidal_volume": 0.4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/rsbi", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"respiratory_rate":20,"tidal_volume":0.4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"respiratory_rate":20,"tidal_volume":0.4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/rsbi", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"respiratory_rate": 20,
"tidal_volume": 0.4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.rsbi",
"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_respiratory_rate | 200 |
max_tidal_volume_l | 10 |
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
Zero or negative tidal volume is rejected with invalid_input because division by a non-positive volume is undefined for this model. Successful API calls cost $0.002 per item; failed validation is not charged.
What the rapid shallow breathing index is and how the ratio is formed
A tidal volume of zero would make the quotient undefined, and a negative volume is not a physical breath, so those cases fail with invalid_input rather than Infinity or an absolute-value workaround. The arithmetic is pure floating-point with no network, no random seeds, and no wall-clock timestamps, so identical rate and volume pairs always serialize to the same JSON after a stable round.
Input contract, units, response shape, and error behaviour
Send two required fields. Entering four hundred for a four-hundred-milliliter breath is wrong: convert first, so four hundred milliliters becomes zero point four liters, and the ten-liter ceiling exists specifically to catch that milliliter mix-up before a nonsense quotient is returned. Classic smoke checks include twenty breaths per minute with zero point four liters, which yields fifty and sits below the cutoff, and thirty breaths with zero point two five liters, which yields one hundred twenty and sits above it. The field respiratory_rate is the breathing frequency in breaths per minute and must be a finite number strictly greater than zero and at most two hundred; aliases rr, f, frequency, breaths_per_minute, and respiratory_frequency are accepted so spreadsheets, query strings, and typed forms can reuse the same contract. The field tidal_volume is the tidal volume in liters, not milliliters, and must be a finite number strictly greater than zero and at most ten liters; aliases vt, tv, vt_l, and tidal_volume_l are accepted. Missing fields, blank strings, non-numeric tokens, NaN, Infinity, zero, and negative values fail with invalid_input and are not charged. On success the response echoes the cleaned respiratory_rate and tidal_volume, returns rsbi as their quotient, tags unit as breaths/min/L, restates the Yang-Tobin formula, sets method to yang_tobin, includes the educational weaning_threshold of one hundred five, and sets below_weaning_threshold true when rsbi is strictly less than that cutoff. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance.
Where an RSBI calculator earns its keep in study, 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.
Integration use cases
Deterministic test fixtures for ventilator UIs
Generate reproducible breaths-per-minute-per-liter quotients and threshold flags for unit tests, property checks, and CI assertions.
Technical questions
What does the one hundred five threshold mean here?
It is the commonly taught Yang-Tobin educational cutoff. below_weaning_threshold is true when RSBI is strictly less than 105. This is a teaching flag, not a diagnosis or a weaning order.