ForHosting KIT · Health & fitness

STOP-BANG calculator

Answer eight yes-or-no questions on snoring, tiredness, observed pauses, blood pressure, BMI over 35, age over 50, neck over 40 cm and male sex. Each yes adds a point; 5 to 8 means high risk of sleep apnea. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon

The STOP-BANG questionnaire is an eight-item screening tool used to estimate the risk of obstructive sleep apnea from simple yes-or-no answers. Each item is worth one point: loud snoring, daytime tiredness, observed breathing pauses, treated or known high blood pressure, body-mass index greater than thirty-five, age over fifty, a large neck, and male sex. The integer total therefore occupies the closed range from zero to eight. Published bands map zero through two to low risk, three and four to intermediate risk, and five through eight to high risk of OSA. This capability implements that published rule as a pure function: you send eight booleans and receive the score together with the risk band. Missing answers are rejected with invalid input rather than being treated as no.

How the STOP-BANG score is defined

STOP-BANG is the eight-item obstructive sleep apnea screen whose initials spell the questionnaire: Snoring, Tiredness, Observed apnea, Pressure, BMI, Age, Neck, and Gender. The published rule is deliberately small: eight binary findings, each worth one point, with no weighting and no sleep-study AHI. Loud snoring contributes one point when it is heard through a closed door or earns an elbow from a bed partner.

Daytime tiredness contributes one point when fatigue or sleepiness is frequent, including nodding off while driving or talking. Observed apnea contributes one point when anyone has seen breathing stop, choking, or gasping during sleep. Pressure contributes one point when high blood pressure is present or treated.

BMI contributes one point when body-mass index is greater than thirty-five kilograms per square metre. Age contributes one point when the person is older than fifty. Neck contributes one point when circumference exceeds forty centimetres, or sixteen inches.

Gender contributes one point for male sex. Adding the eight bits produces an integer from zero through eight. Published teaching maps zero through two to low risk of OSA, three and four to intermediate risk, and five through eight to high risk.

This capability implements those eight flags and those three bands exactly. It does not compute BMI from height and weight, does not convert a neck measurement, and does not ingest an Epworth sleepiness total or an apnea-hypopnea index. Inputs must be present.

A missing answer cannot be assumed as no and fails with invalid input rather than silently under-scoring. Always frame outputs as educational scores from the published STOP-BANG rule, not as a clinical diagnosis or a substitute for a sleep study, a clinician, or local treatment protocols.

Where STOP-BANG calculators show up in real work

Sleep-medicine education, nursing orientation, and physician-assistant courses constantly assign STOP-BANG drills from textbook yes-no vignettes, so a single trusted oracle that returns the integer beside the risk band speeds grading and demo setup. Occupational-health and preoperative screening worksheets want a documented eight-flag path that clients can audit by hand rather than a black-box apnea model that mixes overnight oximetry, Epworth sleepiness scores, and Mallampati class without disclosure.

Research assistants preparing synthetic preoperative datasets need stable STOP-BANG labels from known answers without network calls or model drift, and they need a hard reject when any of the eight answers is missing so dirty extracts cannot masquerade as scores. If you later need the Epworth Sleepiness Scale, an AHI from a sleep study, BMI from height and weight, or neck circumference in centimetres, treat those as separate search intents and landings rather than overloading this STOP-BANG calculator page.

Always present results as educational estimates from the published eight-point rule; clinical decisions require qualified professionals, a full history this tool does not collect, and protocols that may refer for polysomnography when the score is intermediate or high. Keep requests small, pin the integer score and the risk band in tests, and you get reproducible STOP-BANG figures for homework, LMS plugins, and edge workers without standing up a clinical information system of your own.

Preoperative screening worksheets

Show the eight published STOP-BANG criteria in teaching labs and occupational-health forms without mixing Epworth, AHI, or Mallampati on the same landing.

What is the STOP-BANG score?

STOP-BANG is an eight-item obstructive sleep apnea screen. One point each for loud snoring, daytime tiredness, observed apnea, high blood pressure, BMI over 35, age over 50, a neck over 40 cm, and male sex. The total runs from 0 to 8.

How do you turn the eight answers into a risk level?

Each yes is one point. Scores 0–2 map to low risk of OSA, 3–4 to intermediate risk, and 5–8 to high risk. The response reports both the integer score and the risk band. This is the published screening rule, not a sleep-study diagnosis.

What happens if one of the eight answers is missing?

A blank is not treated as no, because that would silently under-score the questionnaire.

Do I send BMI, age, and neck as numbers?

Numeric BMI, years, or centimetres belong on other calculators; this landing scores the eight yes/no items.

What does the STOP-BANG calculator cost?

The browser tool is free and runs locally.

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/stop-bang

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/stop-bang \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"snoring":true,"tired":true,"observed":true,"pressure":true,"bmi_over_35":true,"age_over_50":false,"neck_large":true,"male":true}'
{
  "snoring": true,
  "tired": true,
  "observed": true,
  "pressure": true,
  "bmi_over_35": true,
  "age_over_50": false,
  "neck_large": true,
  "male": true
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "health.stop_bang",
  "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.

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.

Successful API calls use the published $0.002 per item; invalid input is not billed.

How the STOP-BANG score is defined

The computation is pure comparison and addition with no network calls, no random seeds, no wall-clock timestamps, and no model drift, so identical answer sets always yield identical JSON.

What you send and what you get back

Each flag accepts true or false, yes or no, and one or zero. A classic high-risk pattern is five or more yes answers. An all-no pattern yields score zero and low risk. An isolated three-yes pattern yields intermediate risk. If your upstream form collects numeric BMI, age in years, or neck circumference in centimetres, convert those measurements to the matching yes-or-no flags before sending them here. Send eight required boolean fields that already encode the questionnaire thresholds. The field snoring is true when loud snoring is present; aliases snore and loud_snoring are accepted. The field tired is true when daytime tiredness, fatigue, or sleepiness is frequent; aliases tiredness, sleepy, and fatigue are accepted. The field observed is true when someone has seen breathing stop, choking, or gasping during sleep; aliases apnea_observed, stop_breathing, and gasping are accepted. The field pressure is true when high blood pressure is present or treated; aliases high_blood_pressure, hypertension, and bp are accepted. The field bmi_over_35 is true when body-mass index is greater than thirty-five; aliases high_bmi and bmi_high are accepted. The field age_over_50 is true when age is over fifty years; aliases older_than_50 and age_gt_50 are accepted. The field neck_large is true when neck circumference exceeds forty centimetres; aliases neck_over_40, large_neck, and neck_gt_40cm are accepted. The field male is true when sex is male as in the original Gender item; aliases sex_male, gender_male, and male_sex are accepted. Missing required fields, empty strings, and values that are not booleans fail with invalid_input naming the field and are not charged. On success the response echoes the eight cleaned booleans, reports score as their integer sum from zero to eight, reports risk as low, intermediate, or high using the published bands, and includes formula and method strings for display and for pinning in tests. Pricing for successful API calls is the published $0.002 per item; validation failures do not consume prepaid balance.

Where STOP-BANG 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.

Classroom STOP-BANG answer keys

Generate the 0–8 score and low/intermediate/high OSA risk band from textbook yes/no vignettes so instructors and auto-graders share one transparent ground truth.

Deterministic OSA-screen fixtures

Bulk-produce stable STOP-BANG labels for synthetic preoperative datasets and regression tests, with hard invalid_input when any of the eight answers is missing.

Read the full KIT documentation →