# Blood Alcohol Content Calculator

> Estimates blood alcohol concentration from body weight, sex, number of standard drinks and hours since drinking started with the Widmark formula (Widmark 1932), reported in %, g/L and mg/100 mL together with the peak value and the hours until the estimate returns to zero.

- Calculator id: `bac-widmark` · Category: Health (`health`) · Tool name: `estimate_blood_alcohol_widmark`
- Canonical page: https://tttkmbb.com/health/bac-widmark · This document: https://tttkmbb.com/health/bac-widmark.md · JSON definition: https://tttkmbb.com/health/bac-widmark.json

## Purpose

Estimates blood alcohol concentration from body weight, sex, number of standard drinks and hours since drinking started with the Widmark formula (Widmark 1932), reported in %, g/L and mg/100 mL together with the peak value and the hours until the estimate returns to zero.

**Use when:** You need a rough BAC estimate for a known number of drinks and elapsed time, the peak BAC before elimination, or how long until the estimate reaches zero.

**Do not use when:** You need to decide whether someone can drive or is legally intoxicated: the result is informational only, not medical or legal advice, and real BAC varies widely between people; to count drinks or grams of alcohol first, use standard-drinks.

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `weight_kg` | number | kg | required | Body weight in kilograms. (min 20, max 400) |
| `sex` | enum: male \| female |  | required | Selects the Widmark distribution ratio r: 0.68 for men, 0.55 for women (average body-water fractions). |
| `standard_drinks` | number |  | required | Number of standard drinks consumed since the first drink. (min 0, max 60) |
| `grams_alcohol_per_drink` | number | g | optional, default 14 | Grams of pure ethanol in one standard drink: 14 g in the US (NIAAA), 10 g in Australia and much of Europe, 8 g for a UK unit. (min 1, max 50) |
| `hours_since_first_drink` | number | h | required | Time elapsed since drinking started. (min 0, max 48) |
| `elimination_rate_percent_per_hour` | number | %/h | optional, default 0.015 | BAC eliminated per hour (Widmark β). Typical adults eliminate 0.010–0.020 %/h; 0.015 is the usual average. (min 0.008, max 0.03) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `bac_percent` | number | % | Blood alcohol concentration now, in grams per 100 mL of blood (% w/v), floored at 0. |
| `bac_g_per_l` | number | g/L | Same value in grams per litre (‰), the unit used in most of continental Europe. |
| `bac_mg_per_100ml` | number | mg/100 mL | Same value in milligrams per 100 mL, the unit used in the UK and Ireland. |
| `peak_bac_percent` | number | % | Widmark BAC if all alcohol were absorbed at once, before any elimination. |
| `hours_to_zero` | number | h | Time from now until the estimate reaches 0: bac_percent / elimination rate. |
| `interpretation` | string |  | Typical-effects band for the estimated BAC (< 0.02, 0.02–0.05, 0.05–0.08, ≥ 0.08 %); legal driving limits vary by country. |
| `warning` | string |  | Fixed safety warning returned with every result. |

## Formula

`peak_bac_percent = standard_drinks × grams_alcohol_per_drink / (r × weight_kg × 1000) × 100 with r = 0.68 (male) or 0.55 (female); bac_percent = max(0, peak_bac_percent − elimination_rate_percent_per_hour × hours_since_first_drink); bac_g_per_l = bac_percent × 10; bac_mg_per_100ml = bac_percent × 1000; hours_to_zero = bac_percent / elimination_rate_percent_per_hour`

Widmark's formula assumes instantaneous absorption and constant (zero-order) elimination; food, drinking pace, body composition, medication and genetics change real BAC by ±0.02 % or more. Informational only, not medical or legal advice; never use it to decide whether to drive.

## Data Sources

- Wikipedia – Blood alcohol content (Widmark formula) — https://en.wikipedia.org/wiki/Blood_alcohol_content (reference, retrieved 2026-09-24)
- NIAAA – What Is a Standard Drink? — https://www.niaaa.nih.gov/alcohols-effects-health/overview-alcohol-consumption/what-standard-drink (government, 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/bac-widmark?weight_kg=…&sex=…&standard_drinks=…&hours_since_first_drink=…`
- `POST https://tttkmbb.com/api/v1/calculate/bac-widmark` 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/bac-widmark · OpenAPI operationId `estimate_blood_alcohol_widmark` 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": "bac-widmark", "inputs": {…}}`

## Example

- 80 kg male, 4 US drinks, 2 h: inputs `{"weight_kg":80,"sex":"male","standard_drinks":4,"grams_alcohol_per_drink":14,"hours_since_first_drink":2}` → `{"peak_bac_percent":0.103,"bac_percent":0.073,"bac_g_per_l":0.729,"bac_mg_per_100ml":72.9,"hours_to_zero":4.86}`
- 60 kg female, 2 Australian drinks (10 g), 1 h: inputs `{"weight_kg":60,"sex":"female","standard_drinks":2,"grams_alcohol_per_drink":10,"hours_since_first_drink":1}` → `{"peak_bac_percent":0.061,"bac_percent":0.046,"hours_to_zero":3.04}`

```
GET https://tttkmbb.com/api/v1/calculate/bac-widmark?weight_kg=80&sex=male&standard_drinks=4&grams_alcohol_per_drink=14&hours_since_first_drink=2
```

## Limitations

You need to decide whether someone can drive or is legally intoxicated: the result is informational only, not medical or legal advice, and real BAC varies widely between people; to count drinks or grams of alcohol first, use standard-drinks. Widmark's formula assumes instantaneous absorption and constant (zero-order) elimination; food, drinking pace, body composition, medication and genetics change real BAC by ±0.02 % or more. Informational only, not medical or legal advice; never use it to decide whether to drive. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why does the estimate differ from a breathalyser?**

Widmark uses population-average water fractions and elimination rates and ignores absorption time and food. Individual results commonly deviate by ±0.02 % BAC or more, which is why it must not be used for driving decisions.

**How do I convert between %, g/L and mg/100 mL?**

0.05 % = 0.5 g/L (0.5 ‰) = 50 mg/100 mL. Multiply percent by 10 for g/L and by 1000 for mg/100 mL.

**Which grams-per-drink value should I use?**

14 g for a US standard drink (12 oz 5 % beer, 5 oz 12 % wine, 1.5 oz 40 % spirits), 10 g for Australian, WHO and most European standard drinks, 8 g for a UK unit. Use standard-drinks to convert a specific beverage.

## Related

- [Standard Drinks Calculator](https://tttkmbb.com/health/standard-drinks.md) — Convert a beverage's volume and ABV into standard drinks and grams of alcohol to enter here.
