Non-HDL cholesterol calculator
Total cholesterol of 200 mg/dL with an HDL of 50 leaves a non-HDL cholesterol of 150 mg/dL. Enter both values from your lipid panel, in the same unit, to see the cholesterol carried by every particle that is not HDL. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Total cholesterol
- 200
- Hdl cholesterol
- 50
- Non hdl cholesterol
- 150 mg/dL
- Non hdl rounded
- 150
Non-HDL cholesterol is total cholesterol minus HDL cholesterol, a single derived lipid number that captures every atherogenic lipoprotein particle that is not high-density lipoprotein. Clinicians, students, and health-education products use it when a full advanced lipoprotein panel is unavailable, because it folds LDL, VLDL, IDL, and remnant cholesterol into one residual after HDL is removed.
What non-HDL cholesterol is and which inputs you need
Non-HDL cholesterol is defined as total cholesterol minus HDL cholesterol when both measurements use the same concentration unit. Total cholesterol sums every major circulating cholesterol fraction reported on a standard lipid panel; HDL cholesterol is the high-density fraction often called good cholesterol in patient education materials. Subtracting HDL leaves the residual non-HDL pool, which includes low-density lipoprotein cholesterol, very-low-density lipoprotein cholesterol, intermediate-density lipoprotein cholesterol, and remnant particles that carry atherogenic cholesterol.
Many teaching guidelines discuss non-HDL targets alongside LDL goals because non-HDL remains informative even when triglycerides are elevated and calculated LDL formulas become less reliable. Practical bounds keep consumer and classroom inputs sane: each value from zero point zero one through two thousand in the shared unit, conventionally labeled milligrams per decilitre in the response. Do not mix milligrams per decilitre with millimoles per litre in a single request without converting first; the arithmetic only holds when both numbers already share one scale.
Where it is used and its practical limits
Call the free in-browser non-HDL cholesterol calculator for classroom demos, nursing homework checks, patient-education worksheets, and quick personal learning without reimplementing the subtraction in every spreadsheet. Prefer consistent conventional units in milligrams per decilitre when your audience is US-centric; if your UI only collects whole numbers, send integers and the engine still accepts numeric strings. Authors shipping SDKs can map the derived non-HDL into colour chips or teaching thresholds you define yourself and show the formula string on an education card.
Keep expectations educational: this is a calculation and learning tool, not a diagnostic medical device, and people with symptoms, known cardiovascular disease, or medication changes should follow professional medical advice rather than any single automated lipid subtraction alone.
What you can do with it
Health education apps and worksheets
Apps show learners how non-HDL is residual cholesterol after HDL without re-coding total minus HDL on every client.
FAQ
What happens if total or HDL is zero or negative?
Non-positive cholesterol values are not valid inputs for this calculator and are not charged.
What if HDL is greater than total cholesterol?
Check that both values come from the same panel and unit system.
Is the non-HDL cholesterol calculator free?
The browser tool runs free on your device.
Can I mix mg/dL and mmol/L in one request?
No. Both total and HDL must already share one unit.
What does non-HDL cholesterol include?
Everything that is not high-density lipoprotein: LDL, VLDL and IDL cholesterol plus remnant particles. Subtracting HDL from the total folds all of these into one number when a full advanced lipoprotein panel is not available.
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/non-hdl-cholesterol \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total_cholesterol":200,"hdl_cholesterol":50}'const res = await fetch("https://api.kit.forhosting.com/health/non-hdl-cholesterol", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total_cholesterol": 200,
"hdl_cholesterol": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/non-hdl-cholesterol",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total_cholesterol": 200,
"hdl_cholesterol": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/non-hdl-cholesterol", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total_cholesterol":200,"hdl_cholesterol":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total_cholesterol":200,"hdl_cholesterol":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/non-hdl-cholesterol", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"total_cholesterol": 200,
"hdl_cholesterol": 50
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.non_hdl_cholesterol",
"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
Missing fields, non-numeric strings, non-positive readings, out-of-range values, and HDL greater than total fail with invalid_input and are never charged. The free browser path and the prepaid API share the same pure arithmetic module, so classroom demos and production pipelines never disagree on a subtraction edge case.
What non-HDL cholesterol is and which inputs you need
Send required fields total_cholesterol and hdl_cholesterol as finite positive numbers; aliases such as total, tc, cholesterol_total, total_chol, hdl, hdl_c, and hdl_chol are accepted when documented. Both values must be strictly greater than zero because non-positive laboratory readings are not valid inputs for this product; HDL must not exceed total, or non-HDL would be negative and the request fails with invalid_input. Identical inputs always yield identical JSON because the path is pure subtraction with no network, no model, no random seed, and no wall clock.
Reading the response fields, rounding, and error behaviour
On success the response echoes total_cholesterol and hdl_cholesterol with stable rounding, sets unit to mg/dL as the conventional label for this contract, and reports non_hdl_cholesterol as the full-precision subtraction result used for programmatic comparison, plus non_hdl_rounded to two decimal places for UI display. formula restates the teaching equation as a single string, and method is always non_hdl_total_minus_hdl so downstream code can branch without sniffing shapes. Missing required fields, empty strings, non-finite values, out-of-range readings, any non-positive total or HDL, and HDL strictly greater than total all fail with invalid_input and are not charged. Do not confuse this endpoint with cholesterol unit converters that map mg/dL to mmol/L, LDL calculators that apply Friedewald or other estimates, full cardiovascular risk scores, or advanced particle-number assays—those are different search intents and different contracts. This product only subtracts two validated positive cholesterol numbers and returns a transparent derived non-HDL value.
API usage, pricing, product workflows, and practical limits
Send a JSON body with required total_cholesterol and hdl_cholesterol values that already share one concentration unit. Use the prepaid API when a health SaaS, electronic worksheet, simulation lab, tutoring platform, or school LMS needs a stable contract under KIT balance at $0.002 per successful item; validation failures never consume balance after the engine rejects the request. Pair this endpoint with your own laboratory units and clinical workflow—confirm that total and HDL come from the same panel draw and the same unit system—then store non_hdl_cholesterol and non_hdl_rounded alongside the raw inputs for dashboards and export columns.
Integration use cases
Nursing and medical-school homework
Students submit total and HDL from a practice lipid panel and pin expected non-HDL JSON in automated checkers with deterministic outputs.
Simulation labs and SaaS backends
Server pipelines that already store lipid panel fields call a prepaid endpoint for non-HDL instead of duplicating the subtraction in every language.
Technical questions
How is non-HDL cholesterol calculated?
Non-HDL = total cholesterol − HDL cholesterol. Send those two required positive fields in the same unit; the response includes non_hdl_cholesterol, non_hdl_rounded, and a readable formula string.