Coffee-to-water brew ratio calculator
A dependable brew begins with a repeatable coffee-to-water ratio. This calculator accepts a ratio such as 1:16 and either the water amount you plan to use or the coffee grounds already measured.
Run — free
It immediately computes the missing amount in the same unit. Use it for pour-over, batch brewing, French press, or recipe scaling without reaching for a separate formula. The calculation is deterministic, transparent, and available through the API for $0.002 per request.
Read the ratio as coffee compared with water
A brew ratio written as 1:16 means one equal part of coffee grounds for every sixteen equal parts of water. The two sides are proportions, so they work with grams, ounces, or another consistent unit. If you enter 480 grams of water at 1:16, the calculator divides 480 by sixteen and multiplies by one, producing 30 grams of grounds. Ratios do not prescribe a brewing device or guarantee a particular taste; they provide a controlled starting point that you can reproduce. A smaller water-side number, such as 1:14, uses more coffee for the same water amount and is commonly described as stronger. A larger number, such as 1:18, uses less coffee and is commonly described as lighter. Always keep both quantities in the same unit when treating the ratio by mass. The unit field labels the answer but does not convert between units. This explicit behavior prevents an accidental mixture of grams and ounces from looking like a valid recipe.
Calculate in either direction
Choose the direction that matches what is fixed in your brewing plan. When you know how much water your brewer or kettle can hold, provide water_amount and leave grounds_amount out. The calculator multiplies the water quantity by the coffee side of the ratio, then divides by the water side. When you have already weighed the beans or need to use the end of a bag, provide grounds_amount instead and leave water_amount out. The reverse calculation multiplies grounds by the water side and divides by the coffee side. Exactly one amount is required because two supplied amounts could conflict with the requested ratio, while no amount leaves the recipe without a scale. Returned fields show both ratio parts, both final amounts, the shared unit, and which value was calculated. Results are rounded only at ten decimal places to suppress insignificant floating-point artifacts while retaining ample precision for practical brewing and recipe automation. Your scale can then determine the sensible physical rounding.
Adjust a recipe while keeping it repeatable
Start with the ratio recommended for your coffee or brewing method, calculate the required pair of amounts, and record the ratio alongside grind size, water temperature, contact time, and tasting notes. If a cup tastes weaker or stronger than you prefer, change one variable deliberately. Adjusting from 1:16 to 1:15 increases grounds relative to water, while moving to 1:17 decreases them. The calculator helps isolate that change because it produces the corresponding amount without altering anything else in your recipe. It is also useful for scaling: enter a larger water amount for a group batch or a smaller grounds amount for a single serving, and the same proportional relationship remains intact. Coffee absorbs and retains some water during brewing, so the beverage yield in the cup will be lower than the starting water amount; this tool calculates recipe inputs, not final drink volume. For API workflows, each request costs $0.002, making it straightforward to embed consistent recipe calculations in a brewing log, café worksheet, or connected scale application.
What you can do with it
Plan a brewer-sized batch
Enter the brewer's water capacity and a target ratio to find the grounds needed for the full batch.
Use a measured dose
Enter the coffee already weighed to calculate the matching water amount without changing the intended strength.
Scale a saved recipe
Keep the original ratio while increasing or decreasing a recipe for a different serving count.
FAQ
What does a 1:16 coffee ratio mean?
It means one part coffee grounds for every sixteen parts water, measured with the same unit.
Can I calculate water from coffee grounds?
Yes. Provide grounds_amount and omit water_amount; the response returns the matching water amount.
Can I calculate grounds from a water amount?
Yes. Provide water_amount and omit grounds_amount; the response returns the required grounds.
Does the calculator convert grams to ounces?
No. The unit is a label, and both amounts must use the same unit. Convert measurements before calculating if necessary.
What happens if a ratio is zero or negative?
The request is rejected as invalid because both sides of the coffee-to-water ratio must be positive.
What does the API request cost?
Each API request costs $0.002. The browser calculator can run locally for free.
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/coffee-ratio-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ratio":"1:16","water_amount":500}'const res = await fetch("https://api.kit.forhosting.com/cook/coffee-ratio-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ratio": "1:16",
"water_amount": 500
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/coffee-ratio-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ratio": "1:16",
"water_amount": 500
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/coffee-ratio-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ratio":"1:16","water_amount":500}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ratio":"1:16","water_amount":500}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/coffee-ratio-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ratio": "1:16",
"water_amount": 500
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.coffee_ratio_calculate",
"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. |