Cocktail ABV calculator
50 ml of a 40% spirit, 25 ml of a 20% liqueur and 75 ml of mixer make a 150 ml drink holding 25 ml of pure alcohol, one sixth of its volume. Enter each ingredient's volume and strength and get the drink's real ABV. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
This cocktail ABV calculator finds the alcohol percentage of a mixed drink from the volume and strength of every ingredient. Add spirits, liqueurs, wine, beer, juice, syrup, soda, or water as separate components, using milliliters for volume and percent ABV for strength. Nonalcoholic mixers use zero percent. The result reports total drink volume, milliliters of pure alcohol, weighted ABV, and the number of components. It uses deterministic arithmetic and rejects missing, nonnumeric, negative, or impossible values instead of producing a misleading estimate.
How mixed-drink ABV is calculated
Alcohol by volume describes the share of a beverage's total liquid volume that is pure ethanol, expressed as a percentage. A mixed drink therefore cannot be calculated by simply averaging the percentages printed on its bottles: component volumes must provide the weights. For each ingredient, this calculator multiplies its volume in milliliters by its ABV percentage divided by one hundred.
Fifty milliliters of a spirit at forty percent ABV contributes twenty milliliters of pure alcohol, while twenty-five milliliters of a liqueur at twenty percent contributes five. Juice, syrup, soda, and water at zero percent add volume but no alcohol. The tool sums every component's pure-alcohol contribution, sums every component volume, divides the first total by the second, and multiplies by one hundred.
In the example above, adding seventy-five milliliters of nonalcoholic mixer produces one hundred fifty milliliters total with twenty-five milliliters of pure alcohol, or 16.666667 percent ABV after stable rounding. This volume-weighted method works for a two-part highball, a multi-spirit tiki recipe, a punch batch, or a diluted bottled cocktail. It assumes the entered liquid volumes are additive.
Real mixtures can undergo tiny volume contraction, but ordinary recipe measurements rarely justify modeling that laboratory-level effect.
Choosing component volumes and strengths
Enter every liquid that contributes meaningful volume to the finished drink. Use the actual poured volume in milliliters, not a bottle size, serving count, mass, or proof value. If a recipe is written in ounces, convert each measure to milliliters consistently before calling the calculator.
Read ABV from the product label whenever possible because brands and regional bottlings vary: gin may be thirty-seven and a half, forty, forty-three, or more percent; vermouth and liqueurs also differ substantially. Convert US proof to ABV by dividing proof by two before entry. Treat fruit juice, simple syrup, tonic, soda, and still water as zero percent unless the product itself contains alcohol.
Ice requires care. Do not enter the dry ice-cube volume. If you know how much meltwater entered the served drink, add that measured water as a zero-percent component; otherwise the result describes the recipe before ice dilution.
For batched drinks, either enter full batch volumes or divide every component by the same serving count. Both approaches produce the same ABV because the ratio is unchanged. The calculator accepts from one through one hundred components, volumes greater than zero up to one million milliliters each, and strengths from zero through one hundred percent inclusive.
These bounds catch common mistakes such as negative pours, percentage fractions entered as forty rather than 0.40 confusion, or an impossible 110 percent label.
Interpreting and using the result
The number is a recipe estimate, not a laboratory measurement and not a safe-drinking recommendation. It does not account for unmeasured ice melt, liquid left in a shaker, evaporation during heating or flaming, ingredient measurement error, or density-driven volume contraction. It also does not calculate standard drinks, blood alcohol concentration, calories, or intoxication.
Use it to compare recipe formulations, document menus, check bottled-cocktail targets, or scale batches while retaining the same strength. A proportionally scaled recipe keeps its ABV; adding a zero-percent mixer lowers it, while adding a stronger alcoholic component generally raises it. For programmatic use, submit the components array and consume the four numeric result fields.
What you can do with it
Design and compare cocktail recipes
Bartenders can compare variations that change spirit, liqueur, and mixer proportions while seeing the finished drink's volume-weighted strength.
Scale a batch consistently
Hosts and beverage teams can verify that a full punch or bottled-cocktail batch preserves the intended ABV when every ingredient is scaled proportionally.
Validate recipe software
Developers can generate deterministic ABV results and explicit invalid-input failures for menu, inventory, costing, and recipe-management tests.
FAQ
What formula does the cocktail ABV calculator use?
It sums volume multiplied by ABV divided by 100 for every component, divides that pure-alcohol total by total drink volume, and multiplies by 100.
Should mixers be included?
Yes. Include juice, syrup, soda, tonic, or water at 0 percent ABV because they increase total volume and lower the finished drink's percentage.
How do I enter proof instead of ABV?
Convert US proof to ABV first by dividing it by two. For example, 80 proof is 40 percent ABV, so enter 40.
Does the calculation include ice dilution?
Only when you add the measured meltwater as a zero-percent component. Do not enter the original volume of solid ice cubes.
Is the result a laboratory measurement or drinking-safety limit?
No. It is a deterministic recipe estimate based on entered volumes and label strengths. It does not measure a drink, calculate blood alcohol concentration, or determine safe consumption.
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/cook/cocktail-abv \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"components":[{"volume_ml":50,"abv_percent":40},{"volume_ml":25,"abv_percent":20},{"volume_ml":75,"abv_percent":0}]}'const res = await fetch("https://api.kit.forhosting.com/cook/cocktail-abv", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"components": [
{
"volume_ml": 50,
"abv_percent": 40
},
{
"volume_ml": 25,
"abv_percent": 20
},
{
"volume_ml": 75,
"abv_percent": 0
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/cocktail-abv",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"components": [
{
"volume_ml": 50,
"abv_percent": 40
},
{
"volume_ml": 25,
"abv_percent": 20
},
{
"volume_ml": 75,
"abv_percent": 0
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/cocktail-abv", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"components":[{"volume_ml":50,"abv_percent":40},{"volume_ml":25,"abv_percent":20},{"volume_ml":75,"abv_percent":0}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"components":[{"volume_ml":50,"abv_percent":40},{"volume_ml":25,"abv_percent":20},{"volume_ml":75,"abv_percent":0}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/cocktail-abv", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"components": [
{
"volume_ml": 50,
"abv_percent": 40
},
{
"volume_ml": 25,
"abv_percent": 20
},
{
"volume_ml": 75,
"abv_percent": 0
}
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.cocktail_abv",
"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
Interpreting and using the result
The returned `abv_percent` is the estimated strength of the combined liquid represented by your inputs. `total_volume_ml` is the sum of all entered volumes, and `pure_alcohol_ml` is the corresponding ethanol volume before any physiological or legal interpretation. `component_count` helps applications confirm that the expected number of recipe lines was processed. A successful API request costs $0.002; the browser calculation is free. Invalid structures and out-of-range values return `invalid_input`, allowing recipe systems to stop visibly instead of storing a plausible-looking but incorrect percentage.