# LDL Cholesterol Calculator

> Calculates LDL cholesterol from total cholesterol, HDL and triglycerides with the Friedewald equation (mg/dL or mmol/L), plus non-HDL cholesterol and the NCEP LDL category.

- Calculator id: `ldl-cholesterol` · Category: Medical & Clinical (`medical`) · Tool name: `calculate_ldl_cholesterol`
- Canonical page: https://tttkmbb.com/medical/ldl-cholesterol · This document: https://tttkmbb.com/medical/ldl-cholesterol.md · JSON definition: https://tttkmbb.com/medical/ldl-cholesterol.json

## Purpose

Calculates LDL cholesterol from total cholesterol, HDL and triglycerides with the Friedewald equation (mg/dL or mmol/L), plus non-HDL cholesterol and the NCEP LDL category.

**Use when:** You have a fasting lipid panel without a direct LDL measurement and need the calculated LDL or non-HDL cholesterol.

**Do not use when:** Triglycerides exceed 400 mg/dL (4.5 mmol/L) or the sample was non-fasting; Friedewald is invalid there and a direct LDL assay or the Martin/Hopkins or Sampson equations are used instead.

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `total_cholesterol` | number |  | required | Total cholesterol in the chosen unit. (> 0, max 2000) |
| `hdl_cholesterol` | number |  | required | HDL cholesterol in the chosen unit. (> 0, max 500) |
| `triglycerides` | number |  | required | Fasting triglycerides in the chosen unit. (> 0, max 5000) |
| `unit` | enum: mg_dl \| mmol_l |  | optional, default "mg_dl" | Unit shared by all three inputs. |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `ldl_cholesterol` | number |  | Calculated LDL in the input unit. |
| `non_hdl_cholesterol` | number |  | Total − HDL, in the input unit. |
| `unit` | string |  | Unit of the two values above. |
| `ldl_cholesterol_mg_dl` | number | mg/dL | LDL in mg/dL. |
| `ldl_cholesterol_mmol_l` | number | mmol/L | LDL in mmol/L (mg/dL × 0.02586). |
| `ldl_category` | string |  | Optimal <100, near optimal 100–129, borderline high 130–159, high 160–189, very high ≥190 mg/dL. |

## Formula

`LDL = total_cholesterol − hdl_cholesterol − triglycerides / 5 (mg/dL) or − triglycerides / 2.2 (mmol/L); non-HDL = total_cholesterol − hdl_cholesterol`

Friedewald (1972) assumes VLDL cholesterol ≈ TG/5 in fasting samples; accuracy falls when TG is 200–400 mg/dL or LDL is below 70 mg/dL. Results are informational only and not a substitute for clinical judgement or medical advice.

## Data Sources

- Friedewald WT, Levy RI, Fredrickson DS (1972) Estimation of the concentration of low-density lipoprotein cholesterol in plasma, without use of the preparative ultracentrifuge, Clin Chem 18:499-502 — https://pubmed.ncbi.nlm.nih.gov/4337382/ (peer_reviewed, retrieved 2026-09-24)
- American Heart Association – What your cholesterol levels mean — https://www.heart.org/en/health-topics/cholesterol/about-cholesterol/what-your-cholesterol-levels-mean (reference, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/ldl-cholesterol?total_cholesterol=…&hdl_cholesterol=…&triglycerides=…`
- `POST https://tttkmbb.com/api/v1/calculate/ldl-cholesterol` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/ldl-cholesterol · OpenAPI operationId `calculate_ldl_cholesterol` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "ldl-cholesterol", "inputs": {…}}`

## Example

- TC 200, HDL 50, TG 150 mg/dL: inputs `{"total_cholesterol":200,"hdl_cholesterol":50,"triglycerides":150,"unit":"mg_dl"}` → `{"ldl_cholesterol":120,"non_hdl_cholesterol":150,"ldl_cholesterol_mmol_l":3.1,"ldl_category":"Near optimal (100–129 mg/dL)"}`
- TC 5.2, HDL 1.3, TG 1.5 mmol/L: inputs `{"total_cholesterol":5.2,"hdl_cholesterol":1.3,"triglycerides":1.5,"unit":"mmol_l"}` → `{"ldl_cholesterol":3.22,"non_hdl_cholesterol":3.9,"ldl_cholesterol_mg_dl":124.4}`

```
GET https://tttkmbb.com/api/v1/calculate/ldl-cholesterol?total_cholesterol=200&hdl_cholesterol=50&triglycerides=150&unit=mg_dl
```

## Limitations

Triglycerides exceed 400 mg/dL (4.5 mmol/L) or the sample was non-fasting; Friedewald is invalid there and a direct LDL assay or the Martin/Hopkins or Sampson equations are used instead. Friedewald (1972) assumes VLDL cholesterol ≈ TG/5 in fasting samples; accuracy falls when TG is 200–400 mg/dL or LDL is below 70 mg/dL. Results are informational only and not a substitute for clinical judgement or medical advice. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why is Friedewald invalid at high triglycerides?**

The TG/5 term assumes a fixed VLDL composition; above 400 mg/dL (and in chylomicronaemia) it overestimates VLDL and underestimates LDL, so the calculator returns an error instead of a number.

**What is non-HDL cholesterol for?**

It captures all atherogenic lipoproteins (LDL, VLDL, IDL, Lp(a)) and stays valid in non-fasting samples; targets are usually 30 mg/dL (0.8 mmol/L) above the LDL target.

## Related

- [Cholesterol Unit Converter](https://tttkmbb.com/medical/cholesterol-unit-conversion.md) — Convert lipid values between mg/dL and mmol/L.
- [BMI Calculator](https://tttkmbb.com/health/bmi.md) — Weight status alongside lipid results.
