Zonas de frequência cardíaca
Com 30 anos e pulso em repouso de 60, sua zona de resistência vai de 138 a 151 batimentos por minuto. Você recebe as cinco zonas de Karvonen, da recuperação ao esforço máximo, calculadas com a sua própria reserva cardíaca. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Idade
- 30
- Frequência cardíaca em repouso
- 60
- Frequência cardíaca máxima
- 190
- Reserva de frequência cardíaca
- 130
Calcula cinco zonas de treino a partir da sua idade e frequência cardíaca em repouso usando o método da reserva de frequência cardíaca de Karvonen, devolvendo os limites inferior e superior em batimentos por minuto para recuperação, resistência, tempo, limiar e esforço máximo.
Como a reserva cardíaca define suas zonas
A reserva cardíaca é a sua frequência máxima menos a frequência em repouso. Se você não informar uma máxima medida, ela é estimada como 220 menos a sua idade: com 30 anos a máxima é 190 e, com pulso em repouso de 60, a reserva é de 130 batimentos. Cada limite de zona é o pulso em repouso mais uma parte dessa reserva, arredondado para o batimento inteiro mais próximo. Por isso duas pessoas da mesma idade com pulsos em repouso diferentes recebem zonas diferentes.
As cinco zonas e como usá-las
A recuperação cobre de 50 a 60% da reserva, a resistência de 60 a 70%, o tempo de 70 a 80%, o limiar de 80 a 90% e o esforço máximo de 90 a 100%. No exemplo acima isso dá 125 a 138, 138 a 151, 151 a 164, 164 a 177 e 177 a 190 batimentos por minuto. Use os limites como alvos em treinos intervalados e de resistência, ou configure-os no relógio para ele avisar quando você sair da faixa. Uma máxima medida em laboratório ou em campo deixa cada zona mais pessoal que a estimativa pela idade.
Casos de uso
Planos de treino
Gere alvos personalizados de bpm para treinos intervalados e de resistência a partir de duas entradas.
Apps de wearables
Defina limites de zona por usuário para que um relógio possa sinalizar quando uma sessão sai da faixa-alvo.
Perguntas frequentes
Quantas zonas são devolvidas?
Cinco: recuperação, resistência, tempo, limiar e máximo, cada uma com um par de bpm lo/hi.
O que é o método de Karvonen?
Ele monta as zonas a partir da reserva cardíaca, a diferença entre a sua frequência máxima e a de repouso, em vez de usar uma porcentagem fixa da máxima. Cada limite é o seu pulso em repouso mais uma porcentagem dessa reserva.
Posso usar uma frequência máxima que eu medi?
Sim. Por padrão a máxima é estimada como 220 menos a sua idade, mas você pode informar um valor medido em laboratório ou em teste de campo, e todas as zonas são recalculadas com ele.
Por que duas zonas vizinhas dividem o mesmo batimento?
É proposital: o teto de uma zona é o piso da seguinte, então não sobram buracos entre elas. Com os valores do exemplo, a resistência termina em 151 e o tempo começa em 151 batimentos por minuto.
Por que o pulso em repouso muda as zonas?
Porque cada faixa é somada ao seu pulso em repouso. Duas pessoas com a mesma máxima, mas pulsos em repouso diferentes, recebem alvos diferentes, algo que uma simples porcentagem da máxima ignora.
Ferramentas relacionadas
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/dev/heart-rate-zones \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"age":30,"resting_hr":60}'const res = await fetch("https://api.kit.forhosting.com/dev/heart-rate-zones", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"age": 30,
"resting_hr": 60
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/heart-rate-zones",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"age": 30,
"resting_hr": 60
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/heart-rate-zones", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"age":30,"resting_hr":60}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"age":30,"resting_hr":60}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/heart-rate-zones", 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
{
"age": 30,
"resting_hr": 60
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heart_rate_zones",
"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. |
Notas técnicas
A fórmula da reserva de frequência cardíaca de Karvonen
A calculadora usa o método de Karvonen, que constrói as zonas a partir da reserva de frequência cardíaca (HRR), e não de uma porcentagem fixa da frequência cardíaca máxima. Ela recebe age e resting_hr como inteiros obrigatórios; max_hr é opcional e assume 220 menos a idade por padrão. A HRR é max_hr menos resting_hr, e cada limite de zona é calculado como resting_hr + intensity × HRR, e então arredondado para o batimento inteiro mais próximo. Cinco zonas são devolvidas: z1_recovery (50-60% da HRR), z2_endurance (60-70%), z3_tempo (70-80%), z4_threshold (80-90%) e z5_max (90-100%), cada uma como um par lo/hi em batimentos por minuto. A resposta também repete age, resting_hr, max_hr e hrr. Para idade 30 e resting_hr 60, max_hr é 190, a HRR é 130, e z2_endurance vai de 138 a 151 bpm.
Por que as zonas são personalizadas e como elas arredondam
Cada limite é arredondado para zero casas decimais com uma regra half-up explícita — sign * Math.floor(abs(x) + 0.5) — então um valor calculado de 137.5 vira 138 em vez de arredondar para baixo, e zonas adjacentes compartilham o batimento de fronteira por design (o hi da z1 é igual ao lo da z2). Como a fórmula de Karvonen soma cada faixa de intensidade sobre o seu pulso em repouso, as zonas são personalizadas: dois atletas com a mesma max_hr, mas diferentes frequências de repouso, obtêm alvos diferentes, algo que um modelo de simples porcentagem-do-máximo ignora por completo. O max_hr opcional permite sobrescrever a estimativa por idade com um valor medido em laboratório ou em campo, e o parâmetro method documenta o algoritmo; ele assume 'karvonen' por padrão.
Validação, faixas e erros tipados
Uma entrada de nível superior não objeto também é recusada. As entradas têm sua faixa verificada antes de qualquer zona ser construída. age deve ser um inteiro de 10 a 100 e resting_hr um inteiro de 30 a 120; qualquer coisa fora desses limites, ou não inteira, lança um erro invalid_input tipado como 'age inválido' ou 'resting_hr inválido'. Quando max_hr é fornecido, ele deve ser um inteiro estritamente maior que resting_hr, caso contrário 'max_hr inválido' é levantado — isso evita uma HRR negativa ou zero que inverteria as zonas.
Casos de integração
Ferramentas de coaching
Processe atletas em lote pela API para montar gráficos de zonas com frequências cardíacas máximas medidas.
Perguntas técnicas
Qual método ela usa?
A fórmula de Karvonen: resting_hr + intensity × (max_hr - resting_hr).
Preciso saber minha frequência cardíaca máxima?
Não. max_hr assume 220 menos a idade por padrão, mas você pode sobrescrevê-la com um valor medido.
Por que o limite da zona depende de resting_hr?
Karvonen soma cada faixa sobre o seu pulso em repouso, então as zonas são personalizadas, e não uma porcentagem fixa do máximo.
É gratuito?
Sim, no widget do navegador; a API roda o mesmo núcleo a partir de US$ 0,002 por chamada.