BMR 基础代谢

Mifflin/Harris-Benedict 公式

423 次访问

BMR 基础代谢 + TDEE 每日消耗

性别

年龄

身高 cm

体重 kg

活动水平

· BMR(基础代谢率):维持基本生理活动的最低能量(睡 24 小时所需)

· TDEE(每日总能耗) = BMR × 活动系数

· Mifflin-St Jeor 公式(精度最高,推荐):男 BMR = 10W + 6.25H − 5A + 5;女 BMR = 10W + 6.25H − 5A − 161

· 减脂建议:TDEE − 300~500 kcal(每周减 0.3-0.5 kg);增肌:TDEE + 200~300 kcal

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

🥩

减脂热量设定

减脂人群常困惑:每天吃 1500 大卡还是 1800 大卡?本工具根据 Mifflin 公式算出基础代谢值,再结合活动系数得到维持体重热量。减脂期只需在维持热量基础上减 300-500 大卡,避免过度节食导致代谢损伤,让热量缺口精准可控。

💪

增肌期热量盈余

健身爱好者增肌时盲目多吃,结果脂肪长得比肌肉快。本工具用 Harris-Benedict 公式算出基础代谢,再按训练强度(每周 3-5 次力量训练)乘以 1.55 活动系数,得到增肌维持热量。在此基础增加 200-400 大卡即可干净增肌,避免脏增肌带来的体脂飙升。

👴

老年人营养评估

60 岁以上老人基础代谢率随年龄下降,按年轻人标准算热量容易导致营养不良。本工具在 Mifflin 公式中自动代入年龄因子,更准确估算老年人静息能耗。养老机构或家庭照护者可根据结果调整膳食结构,确保蛋白质和能量摄入达标,预防肌少症。

🏥

术后恢复热量管理

术后卧床病人基础代谢会暂时升高 10-20%,但活动量骤降。本工具能快速算出当前状态下的静息能耗,医生或营养师据此制定肠内营养方案,避免过度喂养加重器官负担或热量不足延缓伤口愈合。

📱

健身应用数据校准

多数健身 App 用默认公式估算热量,但 Mifflin 与 Harris-Benedict 结果可能相差 100-200 大卡。本工具同时输出两种算法结果,用户可对比后选择更符合自身实际的数值,手动填入 App 的「每日目标」设置,让运动消耗和饮食记录更准确。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具竞品 A(MyFitnessPal)传统方法(手工计算)
数据隐私纯浏览器计算,零上传,无记录需注册账号,数据存储于服务器完全离线,无电子记录
处理速度即时(<1秒)需打开 App、登录、导航至工具(约15秒)需查找公式、手动计算(约5分钟)
离线可用完全离线(FE实现)需联网完全离线
公式透明度明确标注 Mifflin / Harris-Benedict 公式算法不公开,可能混合其他模型公式已知,可自行核对
输入复杂度仅身高、体重、年龄、性别需填写更多字段(活动水平、目标等)需自行查找公式并代入
收费免费基础免费,高级功能需订阅免费(仅需纸笔)

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
男 | 25岁 | 175cm | 70kg | 久坐(几乎不运动)Mifflin-St Jeor: 1671 kcal/天 Harris-Benedict: 1725 kcal/天典型常规场景:年轻男性办公室工作者
女 | 30岁 | 165cm | 55kg | 每周运动3-5次Mifflin-St Jeor: 1315 kcal/天 Harris-Benedict: 1365 kcal/天典型常规场景:活跃女性健身爱好者
男 | 18岁 | 190cm | 100kg | 高强度运动Mifflin-St Jeor: 2135 kcal/天 Harris-Benedict: 2230 kcal/天边界 case:高身高、大体重、高活动量
女 | 70岁 | 150cm | 40kg | 卧床Mifflin-St Jeor: 1005 kcal/天 Harris-Benedict: 1035 kcal/天边界 case:高龄、低体重、极低活动量
男 | 0岁 | 50cm | 3kg | 久坐(几乎不运动)Mifflin-St Jeor: 无有效结果(年龄<18岁) Harris-Benedict: 无有效结果(年龄<18岁)边界 case:年龄低于公式适用范围
女 | 25岁 | 165cm | 55kg | (活动量未选)Mifflin-St Jeor: 1315 kcal/天 Harris-Benedict: 1365 kcal/天 提示:未选择活动量,BMR 为基础代谢,非 TDEE易错 case:用户忘记选活动量,结果仅为BMR
男 | 30岁 | 175cm | 70kg | 每周运动3-5次Mifflin-St Jeor: 1690 kcal/天 Harris-Benedict: 1745 kcal/天典型常规场景:中等体型男性规律运动

常见错误对照7 个常踩的坑 · 错误 → 修复

1. 把运动消耗当基础代谢用

错误
每天跑步 5 公里,BMR 应该按 2000 kcal 算
修复
BMR 是静息状态下维持生命的最低热量,不包含任何活动消耗。跑步消耗需额外用 MET 公式计算

BMR 是「躺着不动」的能耗,运动消耗(如跑步、走路)是活动代谢(PAL),两者相加才是总热量需求 TDEE

2. 用 Mifflin 公式算儿童或老人

错误
给 8 岁儿童输入 Mifflin-St Jeor 公式
修复
儿童(<18 岁)用 Schofield 公式或 WHO 年龄分层公式;老人(>70 岁)用 Harris-Benedict 修正版

Mifflin 公式验证人群为 19-78 岁健康成人,极端年龄组误差可达 ±25%,不推荐用于临床营养评估

3. 体重单位填错(公斤 vs 磅)

错误
体重输入 154(以为是公斤,实际是磅)
修复
确认单位:中国/欧洲用公斤(kg),美国/英国用磅(lb)。1 lb = 0.4536 kg,154 lb ≈ 70 kg

Harris-Benedict 原始公式使用磅(lb)和英寸(in),Mifflin 使用公斤(kg)和厘米(cm)。混用单位会导致结果偏差 2 倍以上

4. 把 BMR 当减肥目标热量

错误
想减肥,直接每天只吃 BMR 算出来的 1400 kcal
修复
减肥热量 = BMR × 活动系数(1.2-1.9)- 300-500 kcal 缺口。BMR 是底线,长期低于 BMR 会触发代谢适应

BMR 是生存所需最低热量,长期低于 BMR 会导致肌肉流失、基础代谢率下降(代谢适应),反而不利于减脂

5. 忽略体脂率对 BMR 的影响

错误
两个 70kg 男性,一个体脂 15%,一个 30%,BMR 一样
修复
肌肉组织代谢率是脂肪的 3 倍。体脂率差异 15% 时,实际 BMR 可相差 200-300 kcal/天。Katch-McArdle 公式需要体脂率输入

Mifflin 和 Harris-Benedict 公式只考虑年龄/身高/体重/性别,不区分肌肉 vs 脂肪。体脂率异常者(健美/肥胖)误差大

6. 生病或禁食时测 BMR

错误
发烧 38.5°C 时测 BMR,结果 1800 kcal
修复
体温每升高 1°C,BMR 增加约 13%。禁食 48 小时以上 BMR 下降 15-20%。应在正常体温、正常饮食后 12 小时测量

BMR 测量标准条件:空腹 12 小时、静卧 30 分钟、室温 20-25°C、无发热/应激。工具公式假设健康状态

7. 用 BMR 公式算孕妇或哺乳期

错误
怀孕 6 个月,直接用 Mifflin 公式算 BMR
修复
孕期 BMR 增加 15-25%(孕晚期最高),哺乳期增加 20-25%。需额外加 300-500 kcal/天,或使用孕期专用公式

胎儿生长、胎盘、子宫增大、乳腺发育均增加代谢需求。Mifflin 公式未考虑妊娠相关代谢变化,直接使用会低估 15-25%

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

BMR = 10 × 体重(kg) + 6.25 × 身高(cm) - 5 × 年龄(岁) + S

变量说明

  • BMR — 基础代谢率(kcal/天)
  • 体重 — 体重(千克)
  • 身高 — 身高(厘米)
  • 年龄 — 年龄(周岁)
  • S — 性别常数:男性+5,女性-161

示例

30 岁女性,身高 165 cm,体重 60 kg。BMR = 10×60 + 6.25×165 - 5×30 - 161 = 600 + 1031.25 - 150 - 161 = 1320.25 ≈ 1320 kcal/天。即该女性在完全静息状态下每天至少消耗 1320 千卡热量。

适用范围

基于 Mifflin-St Jeor 公式(1990 年《美国临床营养学杂志》),适用于 19-78 岁非肥胖成年人(BMI 18.5-30)。对极度肥胖(BMI>40)或肌肉量异常者误差可达 ±200 kcal/天,建议改用 Harris-Benedict 公式或间接测热法。

原理图

输入数据性别 / 年龄 / 身高 / 体重浏览器内计算Mifflin / Harris-Benedict公式并行计算展示结果BMR 值(kcal/天)两公式对比输入边界校验年龄 18-100 / 身高 100-250cm公式选择逻辑性别分支 → 对应系数结果解释维持体重每日所需热量所有数据仅在浏览器内存中处理,不发送到服务器
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import math

def bmr_mifflin(gender, weight_kg, height_cm, age_years):
    """Mifflin-St Jeor 公式"""
    if gender == 'male':
        return 10 * weight_kg + 6.25 * height_cm - 5 * age_years + 5
    elif gender == 'female':
        return 10 * weight_kg + 6.25 * height_cm - 5 * age_years - 161
    else:
        raise ValueError("gender must be 'male' or 'female'")

def bmr_harris_benedict(gender, weight_kg, height_cm, age_years):
    """Harris-Benedict 原始公式(1919)"""
    if gender == 'male':
        return 66.4730 + 13.7516 * weight_kg + 5.0033 * height_cm - 6.7550 * age_years
    elif gender == 'female':
        return 655.0955 + 9.5634 * weight_kg + 1.8496 * height_cm - 4.6756 * age_years
    else:
        raise ValueError("gender must be 'male' or 'female'")

# 示例:30岁男性,70kg,175cm
print("Mifflin:", round(bmr_mifflin('male', 70, 175, 30), 1))  # 1662.5
print("Harris-Benedict:", round(bmr_harris_benedict('male', 70, 175, 30), 1))  # 1720.1
package main

import (
	"fmt"
	"math"
)

func bmrMifflin(gender string, weightKg, heightCm, ageYears float64) (float64, error) {
	switch gender {
	case "male":
		return 10*weightKg + 6.25*heightCm - 5*ageYears + 5, nil
	case "female":
		return 10*weightKg + 6.25*heightCm - 5*ageYears - 161, nil
	default:
		return 0, fmt.Errorf("gender must be 'male' or 'female'")
	}
}

func bmrHarrisBenedict(gender string, weightKg, heightCm, ageYears float64) (float64, error) {
	switch gender {
	case "male":
		return 66.4730 + 13.7516*weightKg + 5.0033*heightCm - 6.7550*ageYears, nil
	case "female":
		return 655.0955 + 9.5634*weightKg + 1.8496*heightCm - 4.6756*ageYears, nil
	default:
		return 0, fmt.Errorf("gender must be 'male' or 'female'")
	}
}

func main() {
	mifflin, _ := bmrMifflin("male", 70, 175, 30)
	hb, _ := bmrHarrisBenedict("male", 70, 175, 30)
	fmt.Printf("Mifflin: %.1f\n", math.Round(mifflin*10)/10)        // 1662.5
	fmt.Printf("Harris-Benedict: %.1f\n", math.Round(hb*10)/10)    // 1720.1
}
function bmrMifflin(gender, weightKg, heightCm, ageYears) {
  if (gender === 'male') {
    return 10 * weightKg + 6.25 * heightCm - 5 * ageYears + 5;
  } else if (gender === 'female') {
    return 10 * weightKg + 6.25 * heightCm - 5 * ageYears - 161;
  } else {
    throw new Error("gender must be 'male' or 'female'");
  }
}

function bmrHarrisBenedict(gender, weightKg, heightCm, ageYears) {
  if (gender === 'male') {
    return 66.4730 + 13.7516 * weightKg + 5.0033 * heightCm - 6.7550 * ageYears;
  } else if (gender === 'female') {
    return 655.0955 + 9.5634 * weightKg + 1.8496 * heightCm - 4.6756 * ageYears;
  } else {
    throw new Error("gender must be 'male' or 'female'");
  }
}

// 示例:30岁男性,70kg,175cm
console.log('Mifflin:', Math.round(bmrMifflin('male', 70, 175, 30) * 10) / 10);  // 1662.5
console.log('Harris-Benedict:', Math.round(bmrHarrisBenedict('male', 70, 175, 30) * 10) / 10);  // 1720.1

常见问题

7 个高频疑问

为什么我用不同的 BMR 公式算出来的结果不一样?该信哪个?
Mifflin-St Jeor 和 Harris-Benedict 是两套不同年代的回归公式。Harris-Benedict 原始版(1919)基于白人男性样本,现代人肥胖率更高会导致其高估约 5-10%。Mifflin-St Jeor(1990)样本更贴近当代人群,被美国膳食协会推荐为日常使用首选。本工具同时给出两个结果供参考:日常减肥/增肌建议以 Mifflin 为准,非常瘦或肌肉量极大的人群 Harris-Benedict 可能更接近实测。没有“绝对正确”,两者都是统计估算,与间接测热法的个体误差可达 ±200 kcal/天。
我输入了身高体重,但算出来的基础代谢比我用体脂秤测的低很多,哪个准?
家用体脂秤的 BMR 是生物电阻抗法估算的,受水分、进食、运动影响波动很大(同一台机器早晚测能差 200 kcal)。本工具仅用身高/体重/年龄/性别做统计回归,不测量身体成分。如果体脂秤结果显著高于公式值(>300 kcal),常见原因是:体脂秤未校准、测量时身体脱水、或算法偏向肌肉量高的人群。真正准确的方法是医院用间接测热法,其余所有工具(包括本工具和体脂秤)都只是估算,相差 200 kcal 以内属正常范围。
这个工具需要联网才能用吗?数据会传到服务器吗?
不需要联网。所有计算代码(Mifflin 和 Harris-Benedict 公式)都在浏览器本地 JavaScript 中执行,输入的身高/体重/年龄/性别不会通过网络发送到任何服务器。可以断开 Wi-Fi 再刷新页面测试,工具仍然能正常计算。如果担心隐私,清空浏览器缓存或使用无痕模式即可,计算过程不留痕迹。
我每天吃够基础代谢的量,为什么体重还在涨?
基础代谢(BMR)是身体静息状态下维持生命的最低热量,不包括日常活动、走路、消化食物、运动消耗。实际每日总消耗(TDEE)通常是 BMR × 1.2(久坐)到 × 1.9(重体力)。只吃 BMR 的量理论上会瘦,但很多人低估了零食饮料、烹饪用油、酱料的热量。另外,长期吃低于 BMR 的热量会触发代谢适应,身体主动降低消耗。建议:用本工具算出 BMR 后,乘 1.2-1.4(轻度活动)作为每日热量目标,再用食物秤精确记录 1-2 周,出现减重趋势才是热量缺口。
为什么我输入年龄 18 岁和 80 岁,基础代谢只差几十卡?
Mifflin 和 Harris-Benedict 公式中年龄的权重系数较小。具体来说,Mifflin 公式每增加 1 岁,男性 BMR 减少约 5 kcal/天,女性减少约 4 kcal/天。18 岁到 80 岁相差 62 年,男性最多差 310 kcal/天。如果感觉差异不大,可能是身高体重差异抵消了年龄影响——比如 80 岁老人身高 175 cm/体重 70 kg,与 18 岁 165 cm/55 kg 的年轻人相比,身高体重的正向贡献可能抵消年龄负向贡献。另外,公式未考虑肌肉流失(少肌症),实际高龄者代谢可能比公式估算更低。
为什么我输入身高 200 cm 或体重 30 kg 也能算出结果?这种极端值有意义吗?
本工具对输入值没有硬性拦截(身高 50-250 cm,体重 10-300 kg 均可计算),但极端值的计算结果仅供参考。Mifflin 和 Harris-Benedict 公式的原始回归样本范围:身高约 150-200 cm,体重约 45-150 kg,年龄 18-80 岁。超出此范围的数值属于外推,误差会显著增大。例如身高 200 cm、体重 30 kg 的 BMI 仅 7.5,严重营养不良,公式估算的 BMR 已无临床意义。建议:身高 150-200 cm、体重 40-150 kg 范围内使用结果较可靠。
这个工具能代替医院的代谢率检测吗?我想知道自己准确的代谢值。
不能。本工具是统计公式估算,误差 ±200-300 kcal/天属正常范围。医院的间接测热法(代谢车)通过测量 15-30 分钟静息耗氧量和二氧化碳产生量来计算,是临床金标准,误差仅 ±5%。公式估算仅适用于普通健康人群做热量参考,不适用于:严重代谢疾病(甲亢/甲减)、极端肥胖/消瘦、运动员(肌肉量异常高)、术后恢复期患者。如需精确代谢数据,建议去三甲医院营养科或呼吸科做间接测热检查,费用约 200-500 元,耗时约 30 分钟。
选择 打开 +新窗口 esc关闭