EU 营养成分声明检查器

原样粘贴食品标签上的营养成分声明。工具会依据 Annex XIV 换算因子重算能量、给出每个标示值依法应落入的舍入分档,并为每一行测算官方抽检时能够认可的公差范围。

🔒 你的配方与检测数据不会离开浏览器 —— 全程本地计算。

原样粘贴整段声明 —— 行的先后顺序也会被核对。在数值后加上 "(lab 8.34)" 可测试实测值是否在公差范围内。

这些数字从哪里来

两份文件,且它们的法律效力完全不同。第 (EU) 1169/2011 号法规是强制性法律:它规定了声明必须包含的七大基本项目、各行的排列顺序、每 100 g 的基准,以及计算能量所用的换算因子。而舍入分档与公差区间则来自欧盟委员会与各成员国于 2012 年 12 月达成的指南文件,该文件在首页即声明自身不具备正式法律地位。本工具严格区分二者:源自法规条文的判定为 error,源自指南建议的判定为 warning,每条判定均明示其依据。

kcal 不是 kJ 除以 4.184

Annex XIV 给出了两列独立的换算因子。碳水化合物是 17 kJ/g 且 4 kcal/g —— 比值为 4.25;脂肪是 37 和 9 —— 比值为 4.111。因此标签上的能量数值是两笔独立的算式,拿其中一个换算另一个几乎总会差一到两千卡。这正是能量行最常见的错误,因为这个捷径看起来太像寻常的单位换算了。

Annex XIV 能量换算因子
组分kJ/gkcal/g
碳水化合物 (排除多元醇) 17 4
多元醇 10 2.4
蛋白质 17 4
脂肪 37 9
长链中链脂肪酸甘油三酯 (Salatrims) 25 6
酒精 (乙醇) 29 7
有机酸 13 3
膳食纤维 8 2
赤藓糖醇 0 0

这里的「碳水化合物」含义不同

法规 Annex I 将碳水化合物定义为包含多元醇,而膳食纤维则单独定义 —— 因此膳食纤维不属于碳水化合物数值的一部分,它有自己独立的 8 kJ/g 换算行。美国法规恰恰相反。直接照搬美国标签而不做调整,会导致碳水化合物与能量两行同时出错。

官方抽检实际比对的是什么

官方抽检并非直接拿化验室测得的结果与印出的数字对照。指南的做法是:先把印出的数字还原为所有能舍入到该数字的取值区间,在两端加上该营养素在该档位下的公差带,然后再将公差带两端按舍入规则向外延展。标示 8.5 g 糖,抽检接受的范围实际上是 6.5 到 11 g。每行右侧展示的正是这套三步算式的成果,展开即可查看推导过程。

本工具不做的事

需要参考摄入量(NRV)与显著含量判定的维生素和矿物质;食品补充剂以及带有营养/健康声称的营养素公差(这两类都需要先判定产品是否作出了声称);以及除英文以外的其他语种声明。此外,工具仅核验声明在数学与逻辑上的自洽性,无法知晓数值是否如实反映了包装内的实物商品。

本工具执行的全部检查(共 13 条规则)

EUN-001 缺少强制标示行

第 30(1) 条规定了营养成分声明必须包含的内容:能量、脂肪、饱和脂肪、碳水化合物、糖、蛋白质和盐。这七项必须同时标示 —— 停在蛋白质之后,或者因含量为零而略去饱和脂肪,均属于未完整标示。

修复: 补充缺失的行。即使某项营养成分含量为零,仍须声明为「0 g」或采用可忽略含量的法定措辞。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-002 出现了营养声明不许包含的行

声明的内容是一个封闭清单:七项强制项目,加上单不饱和脂肪、多不饱和脂肪、多元醇、淀粉、膳食纤维以及达到显著含量的维生素或矿物质。反式脂肪、胆固醇、Omega-3 以及单独成行的钠均在清单之外。这是将美国 Nutrition Facts 面板直接移植到欧盟包装时最常见的违规,因为美国法规强制要求这些行。

修复: 删除该行。钠须折算为食盐声明;反式脂肪与胆固醇在欧盟声明中完全没有位置。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-003 能量未同时给出 kJ 与 kcal

能量值必须同时标明千焦(kJ)与千卡(kcal),且按此先后顺序排列。无论单一单位看起来多么明确,仅给出一个单位均不符合法规要求。

修复: 两者同时印出,kJ 在前:「能量 1435 kJ / 343 kcal」。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-004 标示的能量值与 Annex XIV 换算因子不符

能量值必须采用 Annex XIV 规定的换算因子乘以实际存在的各营养素含量计算得出。两项关键定义决定了计算结果且均与美国不同:碳水化合物包含多元醇(因此仅非多元醇部分按 17 kJ/g 计),且膳食纤维不属于碳水化合物(它有自己单独的 8 kJ/g 行)。无法由标示宏量营养素在自身舍入误差内重现的能量数值,通常指向这两处差异之一。

修复: 重新计算:(碳水化合物 − 多元醇) × 17 + 多元醇 × 10 + 蛋白质 × 17 + 脂肪 × 37 + 膳食纤维 × 8 kJ,存在酒精或有机酸时再加上对应部分。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-005 kcal 疑似由 kJ 直接折算而非独立计算

Annex XIV 将 kJ 与 kcal 作为两列独立的换算因子给出,二者之间的比值因营养素而异 —— 碳水化合物与蛋白质为 4.25,脂肪为 4.111。因此直接将 kJ 数值除以 4.184,往往会与依法计算的千卡值差出一到两千卡。这正是能量行最常出错的地方,因为这一捷径看起来太像常规的单位换算了。

修复: 依据 Annex XIV 的 kcal 列独立计算千卡数值,不要从 kJ 结果直接折算。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-006 声明未以每 100 g 或每 100 ml 为基准

强制性声明必须以每 100 g 或每 100 ml 为基准。每份含量的列可以作为补充列并排展示,但绝不能取代 100 g 基准 —— 后者正是货架上两款产品能够横向对比的基础。

修复: 补充每 100 g(或每 100 ml)列;如果需要,可将每份含量作为第二列保留。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-007 各行的排列顺序不符合 Annex XV 规定

Annex XV 固定了各行的顺序:能量、脂肪及其子项、碳水化合物及其子项、膳食纤维、蛋白质、盐。将膳食纤维排在蛋白质之后,或者把盐插在中间,哪怕每个数值都正确,也属于偏离法定格式。

修复: 重新排列各行顺序以符合 Annex XV。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-008 在法定要求标示盐的位置标示了钠

欧盟营养声明要求标示盐而非钠,且 Annex I 将其定义为算术等价物:盐 = 钠 × 2.5。直接保留美国标签钠行的包装,会使消费者读到的数值偏低 2.5 倍。

修复: 将钠的数值乘以 2.5,并将计算结果声明为盐。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-009 子项含量超过了其所属的父项

饱和脂肪、单不饱和脂肪与多不饱和脂肪是脂肪的组分;糖、多元醇和淀粉是碳水化合物的组分,且因糖按定义排除多元醇,三者彼此叠加。任何子项超过其所属父项 —— 或宏量营养素总和超过每 100 g 包含 100 g —— 在算术上均不可能成立。

修复: 核对各组分的化验数据与计算逻辑。

EUR-Lex 上的第 1169/2011 号法规 ↗

EUN-010 印出的数值具有舍入指南不认可的精度

欧委会指南按含量档位规定小数位数,而非由制造者随意选择:10 g 及以上按整数标示,10 g 以下保留 1 位小数;盐和钠在 1 g 以下保留 2 位小数。「12.4 g 碳水化合物」或「8.25 g 脂肪」在指南中没有对应的档位,意味着它是用电子表格默认设置舍入出来的。

修复: 按照本工具针对该营养素在该含量级别下给出的档位进行舍入。

欧委会公差指南(2012 年 12 月)↗

EUN-011 含量处于可忽略档位并有专门的法定措辞

在低于特定阈值时,指南允许标示「0 g」或「小于 x g」来代替具体数字,且各营养素的阈值不同:脂肪、碳水化合物、糖、蛋白质、膳食纤维、多元醇和淀粉为 0.5 g;饱和脂肪及其他脂肪酸为 0.1 g;钠为 0.005 g;盐为 0.0125 g —— 其法定标示为「<0.01 g」,阈值与字样故意不对称。

修复: 可以使用指南认可的可忽略含量措辞或直接标示「0 g」。

欧委会公差指南(2012 年 12 月)↗

EUN-012 实测值超出了对应标示值的公差范围

官方抽检不会直接拿实验室化验结果与印出的数字对照。他们会先把印出的数字还原为所有能舍入到该数字的可能范围,加上该营养素在该档位下的公差带,再将公差带两端按舍入规则向外延展 —— 因此标示 8.5 g 糖,抽检接受的实际范围是 6.5 到 11 g。超出这套推导区间正是抽检官员采取行动的依据。

修复: 依据实测值重新申报标示值,或者检查抽检样本是否能代表该产品在整个保质期内的真实表现。

欧委会公差指南(2012 年 12 月)↗

EUN-013 盐与钠的数值无法对应

当两个数字同时出现时,它们必须是同一种物理含量的两种表达方式:盐 = 钠 × 2.5。若不符合该比例,说明两者是在不同样品上测得的,或者采用了错误的折算因子。

修复: 核对盐与钠的化验数据,按 2.5 的法定比例折算。

EUR-Lex 上的第 1169/2011 号法规 ↗

关于这些规则。 每一条都有编号、严重级别和通俗解释。每个来源链接都已登记在案,并对线上页面实际复验过,而不是凭印象写上去的. 规则如何编写、测试与保持更新 →