Estimador de amargor IBU da cerveja
Este estimador de IBU calcula as Unidades Internacionais de Amargor aproximadas de uma adição de lúpulo.
Executar grátis
Informe o peso em gramas, o percentual de alfa-ácidos, o tempo de fervura em minutos e o volume final da cerveja em litros. A calculadora aplica a curva de utilização de Tinseth com densidade de referência fixa em 1.050, produzindo um resultado determinístico com exatamente essas quatro entradas. Ela ajuda você a planejar e comparar receitas, mas continua sendo uma estimativa, e não uma medição laboratorial da cerveja pronta.
O que a estimativa de IBU representa
As Unidades Internacionais de Amargor expressam a concentração aproximada de iso-alfa-ácidos amargos na cerveja, convencionalmente tratada como miligramas por litro. O estimador começa pela massa de lúpulo e pelo percentual de alfa-ácidos informado no rótulo, depois prevê quanto desse amargor potencial se torna solúvel durante a fervura. Fervuras mais longas geralmente extraem e isomerizam mais alfa-ácidos, porém o ganho diminui com o tempo em vez de crescer linearmente. O volume final também importa, pois a mesma quantidade extraída resulta em menor concentração em um lote maior. Portanto, o IBU retornado é um cálculo de receita, não uma promessa sobre percepção sensorial. Doçura do malte, química da água, levedura, produtos de lúpulo, perdas na fermentação, envelhecimento e práticas de medição podem alterar tanto o sabor amargo quanto o resultado de laboratório. Use o número como referência consistente para comparar receitas, ajustar adições e verificar se uma troca de ingrediente leva o amargor na direção desejada. Para uma especificação comercial final, confirme o valor em registros de produção ou análise laboratorial apropriada.
Como o cálculo é feito
O cálculo usa o modelo de utilização de Tinseth. Seu fator de tempo segue uma curva de saturação: a utilização aumenta rapidamente no começo da fervura e depois se aproxima de um limite. Cálculos Tinseth clássicos também consideram a densidade do mosto, pois um mosto mais denso tende a reduzir a utilização. Esta capacidade foi criada para aceitar somente as quatro entradas solicitadas; por isso, aplica densidade específica de referência fixa em 1.050 e apresenta essa premissa em todo resultado válido. O método multiplica o peso do lúpulo pelos alfa-ácidos em forma decimal, pela utilização prevista e pela conversão de gramas para miligramas; em seguida, divide pelo volume em litros. O IBU é arredondado para duas casas decimais, e a utilização aparece como percentual para dar transparência. Uma adição com zero minuto é válida e produz zero amargor calculado neste modelo de fervura. Whirlpool, hop stand e dry hopping não são modelados, pois exigem outras informações de temperatura e processo. Se a densidade do seu mosto for muito diferente de 1.050, interprete a estimativa como comparação padronizada, não como previsão totalmente ajustada à sua produção.
Como usar o estimador no desenvolvimento da receita
Para uma adição, informe o peso exato, o teor de alfa-ácidos impresso para aquele lote de lúpulo, o tempo programado de fervura e o volume de cerveja no qual a contribuição será distribuída. O teor de alfa-ácidos varia entre variedades, safras, condições de armazenamento e embalagens; portanto, o rótulo específico do lote é mais útil que a média genérica da variedade. Quando uma receita tiver várias adições, calcule cada uma separadamente e some os valores estimados de IBU. Assim, você preserva a utilização diferente de cada tempo de fervura. Mantenha a definição de volume consistente ao comparar versões, especialmente quando um registro usa volume na panela e outro usa volume envasado. O estimador usa o volume informado sem corrigir evaporação, trub, perdas de transferência ou fermentação. Ele funciona bem para verificações rápidas de formulação, conferência de software cervejeiro, exemplos educativos e fluxos automatizados determinísticos. O uso da API custa US$ 0,002 por solicitação. Entradas ausentes, não numéricas, infinitas ou fora dos limites retornam erro de entrada, em vez de gerar silenciosamente um valor enganoso.
Casos de uso
Planejar uma adição de lúpulo
Estime a contribuição de amargor de uma carga medida de lúpulo antes de finalizar a receita do dia de produção.
Comparar substituições de lúpulo
Veja como outro percentual de alfa-ácidos ou peso de lúpulo altera a estimativa padronizada de IBU.
Auditar cálculos de receitas
Refaça o cálculo das adições com um método transparente e determinístico ao revisar anotações ou resultados de software.
Perguntas frequentes
Qual fórmula o estimador utiliza?
Ele usa a curva de utilização de Tinseth com densidade de referência fixa em 1.050 e converte a contribuição estimada de iso-alfa-ácidos em miligramas por litro.
Por que a densidade original não é uma entrada?
A capacidade foi projetada em torno de quatro entradas e, por isso, padroniza a densidade em 1.050. Isso torna as comparações determinísticas, mas pode diferir de um cálculo ajustado à densidade real.
Posso calcular várias adições de lúpulo?
Sim. Calcule cada adição com seu próprio peso, percentual de alfa-ácidos e tempo de fervura; depois, some as estimativas de IBU retornadas.
A ferramenta estima o amargor do dry hopping?
Não. O modelo de utilização cobre lúpulo fervido. Dry hopping e adições em whirlpool exigem premissas de temperatura, duração e processo fora deste contrato.
O IBU calculado é igual ao amargor percebido?
Não. Doçura, química da água, caráter do lúpulo, fermentação e envelhecimento afetam a percepção; este resultado estima a concentração pelos dados da receita.
Quanto custa uma solicitação API?
Cada solicitação API custa US$ 0,002. O mesmo cálculo determinístico também pode ser executado no navegador.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/cook/beer-ibu-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"hop_weight_g":28,"alpha_acid_percent":5.5,"boil_time_minutes":60,"volume_liters":20}'const res = await fetch("https://api.kit.forhosting.com/cook/beer-ibu-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"hop_weight_g": 28,
"alpha_acid_percent": 5.5,
"boil_time_minutes": 60,
"volume_liters": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/beer-ibu-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"hop_weight_g": 28,
"alpha_acid_percent": 5.5,
"boil_time_minutes": 60,
"volume_liters": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/beer-ibu-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"hop_weight_g":28,"alpha_acid_percent":5.5,"boil_time_minutes":60,"volume_liters":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"hop_weight_g":28,"alpha_acid_percent":5.5,"boil_time_minutes":60,"volume_liters":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/beer-ibu-estimate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"hop_weight_g": 28,
"alpha_acid_percent": 5.5,
"boil_time_minutes": 60,
"volume_liters": 20
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.beer_ibu_estimate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |