Zones de fréquence cardiaque
À 30 ans avec un pouls au repos de 60, votre zone d'endurance va de 138 à 151 battements par minute. Vous obtenez les cinq zones de Karvonen, de la récupération à l'effort maximal, calculées sur votre propre réserve cardiaque. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Âge
- 30
- Fréquence cardiaque au repos
- 60
- Fréquence cardiaque maximale
- 190
- Réserve de fréquence cardiaque
- 130
Calcule cinq zones d'entraînement à partir de votre âge et de votre fréquence cardiaque au repos, à l'aide de la méthode de la réserve de fréquence cardiaque de Karvonen, renvoyant les bornes inférieure et supérieure en battements par minute pour la récupération, l'endurance, le tempo, le seuil et l'effort maximal.
Comment la réserve cardiaque façonne vos zones
La réserve cardiaque est votre fréquence maximale moins votre fréquence au repos. Si vous ne saisissez pas de maximum mesuré, il est estimé à 220 moins votre âge : à 30 ans, le maximum est de 190 et, avec un pouls au repos de 60, la réserve est de 130 battements. Chaque limite de zone vaut le pouls au repos plus une part de cette réserve, arrondie au battement entier le plus proche. Voilà pourquoi deux personnes du même âge au pouls de repos différent obtiennent des zones différentes.
Les cinq zones et leur usage
La récupération couvre de 50 à 60 % de la réserve, l'endurance de 60 à 70 %, le tempo de 70 à 80 %, le seuil de 80 à 90 % et l'effort maximal de 90 à 100 %. Pour l'exemple ci-dessus, cela donne 125 à 138, 138 à 151, 151 à 164, 164 à 177 et 177 à 190 battements par minute. Servez-vous de ces limites comme cibles pour vos séances fractionnées et d'endurance, ou réglez-les sur une montre pour qu'elle signale une sortie de plage. Un maximum mesuré en laboratoire ou sur le terrain rend chaque zone plus personnelle que l'estimation par l'âge.
Cas d’usage
Plans d'entraînement
Générez des cibles en bpm personnalisées pour des séances d'intervalles et d'endurance à partir de deux entrées.
Applications de wearables
Définissez des bornes de zone par utilisateur pour qu'une montre puisse signaler quand une séance quitte la bande cible.
Questions fréquentes
Combien de zones sont renvoyées ?
Cinq : récupération, endurance, tempo, seuil et max, chacune avec une paire lo/hi en bpm.
Qu'est-ce que la méthode de Karvonen ?
Elle construit les zones à partir de la réserve cardiaque, l'écart entre votre fréquence maximale et votre fréquence au repos, au lieu d'un pourcentage fixe du maximum. Chaque limite correspond à votre pouls au repos plus un pourcentage de cette réserve.
Puis-je utiliser une fréquence maximale que j'ai mesurée ?
Oui. Par défaut, le maximum est estimé à 220 moins votre âge, mais vous pouvez saisir une valeur mesurée en laboratoire ou lors d'un test de terrain, et toutes les zones sont recalculées.
Pourquoi deux zones voisines partagent-elles le même battement ?
C'est voulu : le plafond d'une zone est le plancher de la suivante, sans trou entre elles. Avec les valeurs de l'exemple, l'endurance s'arrête à 151 et le tempo commence à 151 battements par minute.
Pourquoi mon pouls au repos modifie-t-il les zones ?
Parce que chaque plage s'ajoute à votre pouls au repos. Deux personnes ayant le même maximum mais un pouls au repos différent obtiennent des cibles différentes, ce qu'un simple pourcentage du maximum ignore.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"age": 30,
"resting_hr": 60
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.heart_rate_zones",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
La formule de la réserve de fréquence cardiaque de Karvonen
Le calculateur utilise la méthode de Karvonen, qui construit les zones à partir de la réserve de fréquence cardiaque (HRR) plutôt que d'un pourcentage fixe de la fréquence cardiaque maximale. Il prend age et resting_hr comme entiers requis ; max_hr est facultatif et vaut par défaut 220 moins age. La HRR est max_hr moins resting_hr, et chaque borne de zone est calculée comme resting_hr + intensité × HRR, puis arrondie au battement entier le plus proche. Cinq zones sont renvoyées : z1_recovery (50-60 % de la HRR), z2_endurance (60-70 %), z3_tempo (70-80 %), z4_threshold (80-90 %) et z5_max (90-100 %), chacune sous forme de paire lo/hi en battements par minute. La réponse reprend aussi age, resting_hr, max_hr et hrr. Pour age 30 et resting_hr 60, max_hr vaut 190, la HRR vaut 130, et z2_endurance s'étend de 138 à 151 bpm.
Pourquoi les zones sont personnalisées, et comment elles s'arrondissent
Chaque borne est arrondie à zéro décimale par une règle half-up explicite — sign * Math.floor(abs(x) + 0.5) — de sorte qu'un 137,5 calculé devient 138 plutôt que de s'arrondir vers le bas, et les zones adjacentes partagent leur battement frontière par conception (le hi de z1 égale le lo de z2). Parce que la formule de Karvonen ajoute chaque bande d'intensité par-dessus votre pouls au repos, les zones sont personnalisées : deux athlètes ayant la même max_hr mais des fréquences au repos différentes obtiennent des cibles différentes, ce qu'un simple modèle en pourcentage-du-max manque entièrement. La max_hr facultative vous permet de remplacer l'estimation par l'âge par une valeur mesurée en laboratoire ou sur le terrain, et le paramètre method documente l'algorithme ; il vaut 'karvonen' par défaut.
Validation, plages et erreurs typées
Une entrée de premier niveau non objet est également refusée. Les entrées sont vérifiées par plage avant qu'aucune zone ne soit construite. age doit être un entier de 10 à 100 et resting_hr un entier de 30 à 120 ; toute valeur hors de ces bornes, ou non entière, déclenche une erreur typée invalid_input telle que 'age inválido' ou 'resting_hr inválido'. Lorsque max_hr est fournie, elle doit être un entier strictement supérieur à resting_hr, sinon 'max_hr inválido' est déclenchée — cela empêche une HRR négative ou nulle qui inverserait les zones.
Cas d'intégration
Outils de coaching
Traitez des athlètes par lots via l'API pour construire des graphiques de zones avec des fréquences cardiaques maximales mesurées.
Questions techniques
Quelle méthode utilise-t-il ?
La formule de Karvonen : resting_hr + intensité × (max_hr - resting_hr).
Ai-je besoin de connaître ma fréquence cardiaque maximale ?
Non. max_hr vaut par défaut 220 moins l'âge, mais vous pouvez la remplacer par une valeur mesurée.
Pourquoi la borne de zone dépend-elle de resting_hr ?
Karvonen ajoute chaque bande à votre pouls au repos, de sorte que les zones sont personnalisées, et non un pourcentage fixe du max.
Est-ce gratuit ?
Oui dans le widget de navigateur ; l'API exécute le même cœur à partir de $0.002 par appel.