生活工具 · 健康育儿

心率训练区间

最大心率/燃脂区/有氧区/无氧区

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 71 次使用
最大心率公式 区间法
年龄 age · 必填
静息心率 resting · 选填
bpm
早起平躺静测 1 分钟。填了即启用 Karvonen 储备心率法(更个性化);留空则用 %HRmax 法。
实测当前心率 current · 选填
bpm
填入后梯度条游标定位,判定你正处于哪个训练区。
请输入年龄
就绪 · 年龄即时计算,梯度条游标随实测心率平滑滑动
第一节

关于本工具

About

晨跑时盯着心率表,想确认自己是否真的在燃脂区间——但最大心率该用220减年龄,还是其他公式?这个工具不替用户选公式,而是把常见的几种算法(如Fox、Tanaka、Gellish)并列输出,让用户看到同一心率值在不同理论下的区间归属差异。所有计算在浏览器本地完成,心率数据不会离开设备。

使用场景

跑者调整配速

晨跑 10 公里,第 5 公里心率飙到 175,呼吸急促,不确定该降速还是硬撑。用工具输入年龄 35 和静息心率 58,算出有氧区间为 135-155。发现 175 已进入无氧区,决定降速 20 秒/公里,让心率回落至 145,维持有氧耐力训练效果,避免提前力竭。

健身房减脂计划

体脂率 28%,教练建议每天 40 分钟椭圆机,但不知阻力该设多大。用工具输入年龄 28,算出燃脂心率区间 117-137。在椭圆机上边踩边看心率表,保持 125-130 区间,20 分钟后开始出汗,30 分钟时脂肪供能占比最高。一个月后体脂降到 25%。

骑行爬坡强度控制

周末骑行爬 8 公里连续坡,前 2 公里心率就到 168,担心后半程爆缸。用工具输入年龄 42,算出最大心率 178,有氧区 125-151。当前 168 已接近无氧阈值,决定切小齿比、降低踏频,让心率回落到 145,保证最后 3 公里还有余力冲刺。

游泳间歇训练

25 米池游 10 组 50 米,每组休息 30 秒,但第 5 组后心率恢复不到 120。用工具输入年龄 32,算出有氧上限 154。发现第 5 组结束时心率 160,休息 30 秒只降到 135,说明强度过大。下一组改游 25 米,让心率在 140-150 间波动,完成全部 10 组。

中老年健走安全

父亲 62 岁,每天快走 1 万步,但怕心率过高诱发心脑血管问题。用工具输入年龄 62,算出最大心率 158,安全有氧区 95-126。让他戴心率手环,走时保持在 110-120,既达到锻炼效果,又避免超过 130 的警戒线。三个月后静息心率从 72 降到 65。

对比矩阵

维度本工具运动手表/手环手工计算
计算方式基于经典公式(如 Fox-Haskell / Tanaka)自动计算心率区间品牌自有算法,通常结合心率传感器数据动态调整手动套用公式,需自行查表或计算器
输入要求仅需年龄和静息心率(可选)需佩戴设备并记录心率数据需自行测量年龄、静息心率,并手动代入公式
实时性输入即出结果,无延迟运动时实时显示当前心率区间无实时性,仅能提前计算理论区间
离线可用纯浏览器端计算,无需网络设备离线可用,但数据同步需网络完全离线(纸笔或本地计算器)
设备依赖任何有浏览器的设备(手机/电脑/平板)需特定品牌手表或手环无需额外设备,仅需纸笔
费用免费设备成本数百至数千元免费
隐私数据仅存本地浏览器,不上传服务器数据通常上传至品牌云服务完全本地,无数据外泄
第二节

使用指南

Getting Started

使用步骤

  1. 1在「年龄」输入框填写周岁数字(18-80),下方「最大心率」栏同步显示 220-年龄 的估算值
  2. 2在「静息心率」输入框填写晨起静卧时测得的心率(40-100),右侧「储备心率」区域自动更新差值
  3. 3点选目标区间标签(燃脂区/有氧区/无氧区),下方心率区间条即时着色并标注上下限数值
  4. 4拖动区间条上的滑块微调上下限百分比,右侧「训练建议」框同步刷新对应强度描述与运动类型

输入输出示例

输入输出说明
年龄 30 岁,静息心率 65 bpm,最大心率算法选「220-年龄」最大心率:190 bpm 燃脂区(60%-70%):114-133 bpm 有氧区(70%-80%):133-152 bpm 无氧区(80%-90%):152-171 bpm 极限区(90%-100%):171-190 bpm常规:最常用的 220-年龄 公式,30 岁是典型健身人群年龄,展示完整五区输出
年龄 40 岁,静息心率 72 bpm,最大心率算法选「Karvonen 储备心率法」最大心率:180 bpm 储备心率:108 bpm 燃脂区(60%-70%):137-148 bpm 有氧区(70%-80%):148-158 bpm 无氧区(80%-90%):158-169 bpm 极限区(90%-100%):169-180 bpm常规:Karvonen 法需静息心率,输出多一行「储备心率」,40 岁+静息偏高是常见真实场景
年龄 18 岁,静息心率 55 bpm,最大心率算法选「Gellish 公式」最大心率:206.9 - (0.67 × 18) = 194.8 bpm 燃脂区(60%-70%):117-136 bpm 有氧区(70%-80%):136-156 bpm 无氧区(80%-90%):156-175 bpm 极限区(90%-100%):175-195 bpm边界:Gellish 公式对年轻人群更准确(比 220-年龄 低约 5 bpm),且输出带公式计算过程
年龄 80 岁,静息心率 60 bpm,最大心率算法选「220-年龄」最大心率:140 bpm 燃脂区(60%-70%):84-98 bpm 有氧区(70%-80%):98-112 bpm 无氧区(80%-90%):112-126 bpm 极限区(90%-100%):126-140 bpm边界:高龄用户(80 岁)最大心率仅 140,无氧区下限 112 bpm 已接近静息心率 2 倍,运动强度需谨慎
年龄 25 岁,静息心率 38 bpm,最大心率算法选「Karvonen 储备心率法」最大心率:195 bpm 储备心率:157 bpm 燃脂区(60%-70%):132-148 bpm 有氧区(70%-80%):148-164 bpm 无氧区(80%-90%):164-179 bpm 极限区(90%-100%):179-195 bpm边界:静息心率 38 bpm(运动员典型值),储备心率高达 157 bpm,各区间 bpm 跨度大,体现 Karvonen 法对低静息人群的敏感性
年龄 35 岁,静息心率 100 bpm,最大心率算法选「Karvonen 储备心率法」最大心率:185 bpm 储备心率:85 bpm 燃脂区(60%-70%):151-160 bpm 有氧区(70%-80%):160-168 bpm 无氧区(80%-90%):168-177 bpm 极限区(90%-100%):177-185 bpm易错:静息心率 100 bpm(心动过速边缘),导致储备心率仅 85 bpm,各区间 bpm 范围极窄(如燃脂区仅 9 bpm 宽),用户易误以为工具出错
年龄 0 岁,静息心率 120 bpm,最大心率算法选「220-年龄」最大心率:220 bpm 燃脂区(60%-70%):132-154 bpm 有氧区(70%-80%):154-176 bpm 无氧区(80%-90%):176-198 bpm 极限区(90%-100%):198-220 bpm易错:年龄输入 0(新生儿),220-年龄 给出最大心率 220 bpm,但新生儿实际最大心率约 200 bpm,工具未对年龄做下限校验,输出偏高

常见错误对照

1.用错最大心率公式,导致区间整体偏移

✗ 错误直接用「220 - 年龄」算出的最大心率代入区间计算
✓ 修复如果实测最大心率(如场地测试或功率计数据)与公式差异超过 5 bpm,应优先使用实测值

「220 - 年龄」是群体统计值,个体误差可达 ±10-20 bpm。用错公式会使所有心率区间整体偏移,导致燃脂区/无氧区实际强度偏离目标。

2.把「燃脂区」当作减脂唯一区间,忽略总消耗

✗ 错误只在燃脂区(最大心率 60%-70%)慢跑,认为更高心率会消耗肌肉
✓ 修复在燃脂区训练 30 分钟后,再安排 10 分钟间歇冲刺进入无氧区(80%-90%),提高后燃效应

燃脂区脂肪供能比例高,但总热量消耗低。高强度区间虽然脂肪比例下降,但总热量和 EPOC(运动后过量氧耗)更高,长期减脂效果更好。

3.用「220 - 年龄」公式时忽略静息心率影响

✗ 错误直接按 220 - 年龄 = 最大心率,然后计算各区间百分比
✓ 修复使用 Karvonen 公式:目标心率 = (最大心率 - 静息心率) × 强度百分比 + 静息心率

静息心率反映基础心血管能力。忽略静息心率时,相同百分比强度下,静息心率低的人实际运动强度被低估,导致训练效果偏差。

4.把「有氧区」和「无氧区」的乳酸阈值混淆

✗ 错误认为有氧区(70%-80% 最大心率)训练能提高乳酸阈值
✓ 修复乳酸阈值训练应安排在无氧区下限(80%-85% 最大心率),而非有氧区

有氧区主要提升线粒体密度和脂肪氧化能力,对乳酸清除帮助有限。真正提高乳酸阈值需要接近或超过阈值的强度(通常为 80%-90% 最大心率)。

5.忽略年龄对心率区间边界的非线性影响

✗ 错误20 岁和 60 岁的人用同一套百分比区间(如 60%-70% 都是燃脂区)
✓ 修复60 岁跑者使用「208 - 0.7 × 年龄」公式(Tanaka 公式)计算最大心率,再套用区间

年龄越大,最大心率下降速度越快,且个体差异增大。220 - 年龄对老年人低估程度更严重,改用 Tanaka 公式(208 - 0.7×年龄)误差更小。

6.用「心率区间」代替主观疲劳感受,忽略环境因素

✗ 错误高温天跑步时,心率 160 bpm 仍按无氧区计划完成 5 组间歇
✓ 修复高温天将目标心率下调 5-10 bpm,或改用 RPE(主观疲劳评分)判断强度

心率受温度、脱水、咖啡因等影响波动可达 10-20 bpm。单纯依赖心率区间可能误判实际疲劳程度,导致过度训练或中暑风险。

7.把「最大心率百分比」等同于「储备心率百分比」

✗ 错误认为 70% 最大心率 = 70% 储备心率,直接互换使用
✓ 修复明确区分:70% 最大心率 = 0.7 × (220 - 年龄);70% 储备心率 = 0.7 × (最大心率 - 静息心率) + 静息心率

两者计算方式不同,结果可差 10-20 bpm。储备心率法更精准,但需测量静息心率;最大心率法更简便但误差大。工具默认用哪种需确认。

第三节

工作原理

How It Works

核心公式

HR_target = (MHR - RHR) × intensity + RHR

变量说明

  • HR_target目标心率,单位 bpm
  • MHR最大心率,单位 bpm
  • RHR静息心率,单位 bpm
  • intensity训练强度,如 0.6 表示 60%

示例

30 岁跑者,MHR=190 bpm,RHR=55 bpm,燃脂区强度 60%–70%:取 65% 代入,HR_target = (190-55)×0.65+55 = 135×0.65+55 = 87.75+55 = 142.75 bpm,约 143 bpm。

输入 年龄 / 静息心率 计算最大心率 220 − 年龄 划分心率区间 50%–100% 阈值 区间 燃脂区 50%–70% 有氧区 70%–80% 无氧区 80%–90% 极限区 90%–100%
用户输入 本地处理 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

def heart_rate_zones(age: int, resting_hr: int = 60) -> dict: """计算心率训练区间(Karvonen 公式)""" max_hr = 220 - age # 最大心率(标准估算) hr_reserve = max_hr - resting_hr # 储备心率 zones = { 'max_hr': max_hr, 'fat_burn': (int(resting_hr + hr_reserve * 0.5), int(resting_hr + hr_reserve * 0.6)), 'aerobic': (int(resting_hr + hr_reserve * 0.6), int(resting_hr + hr_reserve * 0.7)), 'anaerobic': (int(resting_hr + hr_reserve * 0.8), int(resting_hr + hr_reserve * 0.9)) } return zones # 示例:30 岁,静息心率 65 zones = heart_rate_zones(30, 65) print(zones) # 输出:{'max_hr': 190, 'fat_burn': (127, 140), 'aerobic': (140, 152), 'anaerobic': (165, 177)}
function heartRateZones(age, restingHR = 60) { const maxHR = 220 - age; const reserve = maxHR - restingHR; return { maxHR, fatBurn: [Math.round(restingHR + reserve * 0.5), Math.round(restingHR + reserve * 0.6)], aerobic: [Math.round(restingHR + reserve * 0.6), Math.round(restingHR + reserve * 0.7)], anaerobic: [Math.round(restingHR + reserve * 0.8), Math.round(restingHR + reserve * 0.9)] }; } console.log(heartRateZones(30, 65)); // { maxHR: 190, fatBurn: [127, 140], aerobic: [140, 152], anaerobic: [165, 177] }
package main import "fmt" type Zones struct { MaxHR int FatBurn [2]int Aerobic [2]int Anaerobic [2]int } func heartRateZones(age, restingHR int) Zones { maxHR := 220 - age reserve := maxHR - restingHR return Zones{ MaxHR: maxHR, FatBurn: [2]int{restingHR + reserve*50/100, restingHR + reserve*60/100}, Aerobic: [2]int{restingHR + reserve*60/100, restingHR + reserve*70/100}, Anaerobic: [2]int{restingHR + reserve*80/100, restingHR + reserve*90/100}, } } func main() { z := heartRateZones(30, 65) fmt.Printf("%+v\n", z) // {MaxHR:190 FatBurn:[127 140] Aerobic:[140 152] Anaerobic:[165 177]} }
interface HeartRateZones { maxHR: number; fatBurn: [number, number]; aerobic: [number, number]; anaerobic: [number, number]; } function heartRateZones(age: number, restingHR: number = 60): HeartRateZones { const maxHR = 220 - age; const reserve = maxHR - restingHR; return { maxHR, fatBurn: [Math.round(restingHR + reserve * 0.5), Math.round(restingHR + reserve * 0.6)], aerobic: [Math.round(restingHR + reserve * 0.6), Math.round(restingHR + reserve * 0.7)], anaerobic: [Math.round(restingHR + reserve * 0.8), Math.round(restingHR + reserve * 0.9)] }; } console.log(heartRateZones(30, 65)); // { maxHR: 190, fatBurn: [127, 140], aerobic: [140, 152], anaerobic: [165, 177] }
fn heart_rate_zones(age: u32, resting_hr: u32) -> (u32, (u32, u32), (u32, u32), (u32, u32)) { let max_hr = 220 - age; let reserve = max_hr - resting_hr; ( max_hr, (resting_hr + reserve * 50 / 100, resting_hr + reserve * 60 / 100), (resting_hr + reserve * 60 / 100, resting_hr + reserve * 70 / 100), (resting_hr + reserve * 80 / 100, resting_hr + reserve * 90 / 100), ) } fn main() { let (max, fat, aero, ana) = heart_rate_zones(30, 65); println!("max: {}, fat: {:?}, aerobic: {:?}, anaerobic: {:?}", max, fat, aero, ana); // max: 190, fat: (127, 140), aerobic: (140, 152), anaerobic: (165, 177) }
第五节

常见问题

Q & A
我按最大心率220减年龄算出来的区间,跟我用运动手表测的完全对不上,哪个准?

220减年龄是人群均值公式,个体差异很大(正负10-15次/分钟)。运动手表的光学心率在剧烈运动时本身也有延迟和误差。本工具同时提供四种常用公式(Fox、Tanaka、Gellish、Nes),建议先选一个跟自己年龄和运动习惯最接近的公式算出理论区间,再结合运动手表在中等强度运动时的心率值做校准——比如慢跑时手表显示140,看落在哪个区,再微调最大心率值直到区间吻合。

燃脂区到底是不是心率越低越燃脂?网上说法打架,这个工具怎么算的?

不是越低越好。燃脂区本质是脂肪供能比例最高的心率范围,通常在最大心率的60%-70%之间(本工具默认用Karvonen法计算)。低于这个区间(如散步),总热量消耗太小;高于这个区间(如冲刺跑),身体转向糖原供能,脂肪供能比例反而下降。本工具输出的燃脂区是理论最优区间,实际运动中保持在该区间中段(约65%强度)燃脂效率最高,但总消耗量还要看运动时长。

为什么我用不同公式算出来的有氧区差那么多,该信哪个?

各公式的建模人群不同:Fox(220-年龄)适合久坐人群;Tanaka(208-0.7×年龄)对中老年人更准;Gellish(207-0.7×年龄)覆盖18-81岁;Nes(211-0.64×年龄)基于挪威健康人群。如果你平时有规律运动,优先试Tanaka或Nes;如果长期不运动,先看Fox。本工具把四个结果都显示出来,你可以按自己运动经验选最接近体感的那个作为训练参考。

输入年龄和静息心率后,出来的区间数字是百分比还是具体心率值?

两个都有。结果区第一行是目标心率区间(具体每分钟心跳数,如120-150次/分),第二行是对应的强度百分比(如最大心率的65%-80%)。实际训练时看心率值更方便,不需要每次换算。注意:静息心率只影响Karvonen公式的结果,如果没填,工具只用最大心率公式计算。

这个工具完全在浏览器里算,我的年龄和心率数据会上传到服务器吗?

不会。本工具是纯前端实现(FE),所有计算都在本地浏览器JavaScript中完成,不向任何服务器发送数据。刷新或关闭页面后输入值即消失。如果对隐私有更高要求,可以在浏览器无痕模式下使用,确保本地历史记录也不留下痕迹。

我心脏有早搏,用这个工具算出来的区间还能照着练吗?

不能直接照用。所有心率区间公式都基于健康人群的窦性心律,早搏会导致实际心率读数偏低或偏高(脉搏计数不准)。建议先做运动负荷心电图(运动平板)评估,由医生或康复师在监测下确定安全心率上限。本工具的结果只适合作为无心血管疾病的普通运动者的参考起点,不作为医疗建议。

跑步机显示的心率和这个工具算的区间对不上,该调哪个?

跑步机握把心率传感器通常不准(尤其在出汗或握力不均匀时),误差可达20次/分钟。建议先确认跑步机心率数值是否稳定:手扶握把时保持轻握,等待10秒读数稳定后再对比。如果跑步机显示值稳定但仍与本工具计算结果偏差大,优先相信本工具的理论区间(前提是年龄输入正确),用胸带心率带或手环做交叉验证更可靠。

无氧区心率冲到180以上,但感觉还能说话,是不是工具算错了?

不一定错。无氧区是理论阈值(通常为最大心率的80%-90%),但个体实际无氧阈(血乳酸急剧升高的拐点)受训练水平影响很大。经常做间歇训练的跑者,无氧阈可能上移到90%最大心率以上,此时180确实还能说话。本工具按通用公式输出,如果你感觉明显轻松,可以尝试在工具里手动调高最大心率值(比如加5-10),让区间更贴合你的实际能力。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭