Alcohol dilution calculator
To take 500 ml of a 60% spirit down to 40%, add 250 ml of water for 750 ml in total. Enter the volume, the current strength and the target, and the alcohol already in the bottle is kept exactly. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Volume
- 500
- Initial abv
- 60
- Target abv
- 40
- Water volume
- 250
- Final volume
- 750
- Alcohol volume
- 300
- Dilution factor
- 1.5
Home distillers, bartenders, and liqueur makers routinely need to lower the strength of a spirit by adding water: a barrel-strength whiskey at sixty percent ABV bottled at forty, a ninety-six percent neutral spirit cut to drinking strength, or a homemade liqueur brought down to a house recipe. This alcohol dilution calculator takes the current volume of the spirit, its initial alcohol by volume, and the target ABV, then returns the water volume to add so that ethanol is conserved under the mixing identity volume times initial ABV equals final volume times target ABV. Water to add is therefore volume times (initial ABV divided by target ABV minus one), in the same unit you used for the spirit.
What the mixing formula means and how water volume is found
Alcohol by volume, written ABV, is the percentage of a liquid's volume that is ethanol at a stated temperature, so a spirit marked forty percent ABV is forty parts ethanol in one hundred parts of liquid. When you dilute that spirit with water and with nothing else, the quantity of ethanol does not change: five hundred millilitres of a sixty percent whiskey contain three hundred millilitres of pure alcohol, and those three hundred millilitres remain after you add water.
Distillers call this the Pearson square when they proof a barrel down to a label strength; bartenders use the same identity when they cut a high-proof bottle for service. The model treats the two volumes as additive. In a laboratory flask, mixing ethanol and water produces a small contraction, so the measured mixture occupies slightly less space than the arithmetic sum; professional bottling lines apply OIML or Gay-Lussac density tables for that correction.
For kitchen, cocktail, and home-distilling work the additive identity is the expected answer, and this calculator reports that exact figure without temperature or density tables. Target ABV must be strictly positive and must not exceed initial ABV: a zero target would demand infinite water, and a higher target would require removing water or adding alcohol, operations this tool does not perform.
What you can do with it
Proofing down barrel-strength whiskey
Enter cask volume and barrel ABV with the label target to get the water to add before bottling, in the same unit as the spirit volume.
Bar programs standardizing bottle strength
Hotel and cocktail bars that buy overproof stock can compute the water to add so every well bottle sits at the same service ABV.
FAQ
Does the calculator account for ethanol-water volume contraction?
No. Results use the additive Pearson mixing identity (ethanol volume conserved). Laboratory mixing shows a small contraction; OIML tables cover that.
How much water do I add to bring 500 ml of 60% spirit down to 40%?
Add 250 ml. The 500 ml contain 300 ml of pure alcohol, and those 300 ml make up 40% of 750 ml, so the finished mixture holds 750 ml in total.
Which unit should I use for the volume?
Any unit, as long as you keep it: millilitres give the water in millilitres, litres give litres and fluid ounces give fluid ounces. The calculation is the same whatever measure you pick.
Why can't the target strength be zero?
Because reaching zero alcohol by adding water would take an endless amount of water. The target has to be above zero for the calculation to make sense.
Can I use it to make a spirit stronger?
No. Water can only lower the strength, so a target above the starting ABV is rejected instead of showing a negative amount of water. Raising strength would mean removing water or adding alcohol, which this tool does not do.
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/alcohol-dilution \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"volume":500,"initial_abv":60,"target_abv":40}'const res = await fetch("https://api.kit.forhosting.com/cook/alcohol-dilution", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"volume": 500,
"initial_abv": 60,
"target_abv": 40
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/alcohol-dilution",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"volume": 500,
"initial_abv": 60,
"target_abv": 40
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/alcohol-dilution", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"volume":500,"initial_abv":60,"target_abv":40}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"volume":500,"initial_abv":60,"target_abv":40}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/alcohol-dilution", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"volume": 500,
"initial_abv": 60,
"target_abv": 40
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.alcohol_dilution",
"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
If the target ABV exceeds the initial ABV, the task fails with invalid_input instead of inventing a negative water volume, because adding water cannot raise strength.
What the mixing formula means and how water volume is found
The mixing identity that encodes that conservation is volume times initial_abv equals final_volume times target_abv. Solving for the unknown water, with final_volume equal to volume plus water_volume, yields water_volume equals volume times (initial_abv divided by target_abv minus one), or equivalently volume times (initial_abv minus target_abv) divided by target_abv. The dilution_factor is initial_abv divided by target_abv, and alcohol_volume is volume times initial_abv divided by one hundred. The identity is unit-agnostic: millilitres of spirit produce millilitres of water, litres produce litres, and fluid ounces produce fluid ounces, provided you keep one unit for volume and water_volume.
Input contract, response shape, and error behaviour
Numbers are rounded to six decimal places so goldens stay byte-stable across runtimes. Pin those deterministic products in tests so bottling sheets, CMS blocks, and browser widgets stay aligned across releases. POST a JSON body with three required finite numbers. volume is the current volume of the spirit in any consistent unit and must be strictly positive; aliases include spirit_volume, spirit, vol, amount, litres, and liters. initial_abv is the current alcohol by volume as a percentage strictly greater than zero and at most one hundred; aliases include abv, from_abv, start_abv, current_abv, and alcohol_percent. target_abv is the desired alcohol by volume, strictly greater than zero, at most one hundred, and not greater than initial_abv; aliases include to_abv, desired_abv, final_abv, and target. Each field may arrive as a JSON number or as a numeric string. Missing fields, empty strings, non-numeric text, non-positive volume, an ABV of zero or below, an ABV above one hundred, and a target_abv that exceeds the initial ABV fail with invalid_input naming the field and are not billed. On success the body echoes volume, initial_abv, and target_abv; reports water_volume as the water to add in the same unit as volume; reports final_volume as their sum; reports alcohol_volume as the conserved ethanol volume computed as volume times initial_abv divided by one hundred; reports dilution_factor as initial_abv divided by target_abv; and includes formula and method strings for display. Worked example: volume five hundred, initial_abv sixty, target_abv forty yields water_volume two hundred fifty, final_volume seven hundred fifty, alcohol_volume three hundred, and dilution_factor one point five. Worked example: volume one, initial_abv ninety-five, target_abv forty yields water_volume one point three seven five. When initial_abv equals target_abv the water to add is zero and the call still succeeds, because no dilution is required.
Where an alcohol dilution calculator earns its keep
Home-distilling logs and barrel-strength bottling sheets need a single source of truth when a cask is proofed down to a label ABV, so every batch card quotes the same water addition instead of a forum guess that drifts from lot to lot. Liqueur, amaro, and cordial makers who macerate at high strength and then dilute to a house recipe can call the same identity from a CMS block or a bottling tablet and print the figure next to the lot number. Teaching kitchens and bartending schools can let students check Pearson-square homework against a deterministic oracle that rejects an upward target instead of returning a negative water volume. Failed validation does not consume balance. Cocktail programs and hotel bars that buy high-proof spirits for cost and then cut them for service can attach a water_volume to each SKU without opening a spreadsheet on the pass. Inventory tools that already store bottle volume and ABV can send those two numbers plus a target_abv and store water_volume beside the purchase record. Document that results are additive-volume estimates, keep the same unit on volume and water_volume in product copy, and you get reproducible dilution math for distillers, bartenders, CMS blocks, and edge workers without hosting your own proofing spreadsheet.
Integration use cases
Cutting high-proof neutral spirit for liqueurs
Dilute 95 percent ABV spirit to a house maceration or bottling strength and record water_volume next to each lot.
Technical questions
How do I calculate how much water to add to dilute a spirit?
Send finite numbers volume (positive), initial_abv (greater than 0 and at most 100), and target_abv (greater than 0, at most 100, and not above initial_abv). The API returns water_volume = volume × (initial_abv / target_abv − 1) in the same unit as volume.
What happens if the target ABV is higher than the initial ABV?
The task fails with invalid_input. Adding water can only dilute; a target that exceeds the initial ABV would require removing water or adding alcohol, which this calculator does not do, and the call is not billed.
What units should I use for volume?
Any consistent volume unit. Millilitres of spirit produce millilitres of water; litres produce litres; fluid ounces produce fluid ounces. water_volume and final_volume use the same unit as volume.
What does the alcohol dilution calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.