Female Widmark BAC calculator
Estimate a woman's blood alcohol level with the Widmark formula: 3 standard drinks at 65 kg after 2 hours give about 0.0875%. It uses the female ratio of 0.55 and 14 g of alcohol per drink, and is never a basis for deciding to drive. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Number of drinks
- 3
- Weight (kg)
- 65
- Hours
- 2
- Bac percent
- 0.0875
- Alcohol grams
- 42
- Distribution ratio
- 0.55
- Elimination rate per hour
- 0.015
This female Widmark BAC calculator estimates blood alcohol concentration from the number of standard drinks consumed, body weight in kilograms, and hours elapsed since drinking began. It uses a fixed female alcohol distribution ratio, a standard amount of alcohol per drink, and a typical hourly elimination rate. The calculation is deterministic, so identical inputs always produce identical results. It is intended for education and comparison only. Individual alcohol absorption and elimination vary, so never use this estimate to decide whether driving or another safety-sensitive activity is acceptable.
How the female Widmark estimate is calculated
The calculator first converts the entered drink count into grams of pure alcohol. Each standard drink is treated as 14 grams, so three drinks represent 42 grams of alcohol. It then applies the female Widmark distribution ratio of 0.55 and divides the alcohol amount by body weight in kilograms multiplied by ten.
That produces an estimated BAC percentage before elapsed-time elimination. Finally, the calculator subtracts 0.015 percentage points for every hour entered and prevents the result from falling below zero. In compact form, the calculation is drinks multiplied by 14, divided by 0.55 multiplied by weight in kilograms multiplied by 10, minus 0.015 multiplied by hours.
The returned BAC percentage is rounded to four decimal places for a stable, readable result. The response also includes the assumed alcohol grams, distribution ratio, elimination rate, method name, and a safety disclaimer, making the assumptions visible instead of hiding them behind a single number. No clock, random value, external data source, or network request affects the answer.
Entering drinks, weight, and elapsed hours correctly
The drinks field accepts zero or a positive value, including a decimal when a serving represents part of a standard drink. Weight must be supplied in kilograms and must be greater than zero. Hours means the elapsed time since drinking began and must be zero or greater.
A quoted value such as "65" is text, not a number, and is rejected deliberately; this prevents quiet conversions that could conceal malformed data. Remember that a standard drink is a measure of pure alcohol rather than a universal glass size. A large pour, strong beer, or cocktail may contain more than one standard drink, while a smaller serving may contain less.
Convert what was consumed into standard-drink equivalents before entering the value. If body weight is known only in pounds, convert it to kilograms first by dividing pounds by approximately 2.20462. Use the same interpretation consistently when comparing scenarios.
Understanding limitations and using the result safely
Widmark calculations describe a simplified population model, not a direct measurement of alcohol in an individual person's blood. The fixed female ratio is an assumption used for this female-specific estimate; actual body-water distribution differs among people and is not determined perfectly by sex. Food intake, drinking pace, beverage strength, medications, health conditions, age, hormonal factors, absorption delay, and individual metabolism can all make real BAC higher or lower than the calculated figure.
The model also subtracts alcohol continuously from the start time, although absorption and elimination do not occur as perfectly uniform processes. Consequently, a low estimate is not proof of sobriety, legal compliance, coordination, or fitness to drive. Only an appropriate calibrated test administered and interpreted correctly can measure BAC, and local legal limits do not establish that a person is safe.
The safest choice after drinking is to avoid driving, operating machinery, swimming alone, or performing other safety-sensitive tasks. Use this tool to study how the Widmark assumptions respond to changed inputs, to explain the arithmetic, or to compare hypothetical cases.
What you can do with it
Explore hypothetical BAC scenarios
Compare how drink count, body weight, and elapsed time affect a female Widmark estimate under fixed assumptions.
Teach the Widmark formula
Demonstrate the conversion from standard drinks to alcohol grams and the effect of distribution and elimination constants.
FAQ
What female distribution ratio does the calculator use?
It uses a fixed Widmark distribution ratio of 0.55 and reports that assumption in every successful result.
How much alcohol is counted in one drink?
One standard drink is assumed to contain 14 grams of pure alcohol. Convert unusual serving sizes into standard-drink equivalents before calculation.
What elimination rate is applied?
The estimate subtracts 0.015 BAC percentage points per elapsed hour and clamps the final value at zero.
Why did a numeric-looking string return an error?
Text such as "2" is rejected to avoid silently interpreting malformed input.
Can this result tell me whether I am safe to drive?
No. It is an educational estimate, not a measurement or safety determination. After drinking, do not rely on the result to drive or perform another safety-sensitive activity.
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/bac-widmark-female \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"drinks":3,"weight_kg":65,"hours":2}'const res = await fetch("https://api.kit.forhosting.com/health/bac-widmark-female", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"drinks": 3,
"weight_kg": 65,
"hours": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/bac-widmark-female",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"drinks": 3,
"weight_kg": 65,
"hours": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/bac-widmark-female", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"drinks":3,"weight_kg":65,"hours":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"drinks":3,"weight_kg":65,"hours":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/bac-widmark-female", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"drinks": 3,
"weight_kg": 65,
"hours": 2
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.bac_widmark_female",
"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
Entering drinks, weight, and elapsed hours correctly
Provide all three required fields as JSON numbers. Missing fields, NaN-like values, infinity, negative drink counts, nonpositive weight, and negative time also return an invalid_input error.
Understanding limitations and using the result safely
API calculations are available from $0.002, and failed validation does not produce a misleading estimate.
Integration use cases
Validate deterministic app calculations
Use a stable JSON input and output contract when testing an educational calculator or research prototype.