{"id":42388,"date":"2025-09-17T17:44:20","date_gmt":"2025-09-17T08:44:20","guid":{"rendered":"https:\/\/first-reach.org\/?page_id=42388"},"modified":"2026-03-26T13:03:23","modified_gmt":"2026-03-26T06:03:23","slug":"nrc-2006-me-calculator","status":"publish","type":"page","link":"https:\/\/first-reach.org\/en\/tools\/nrc-2006-me-calculator\/","title":{"rendered":"NRC 2006\uff08CF\uff09ME Calculation"},"content":{"rendered":"\n<p class=\"is-style-paragraph__lines-left\" style=\"font-size:20px\"><strong>Overview<\/strong><\/p>\n\n\n\n<p>In Nutrient Requirements of Dogs and Cats (2006), the U.S. National Research Council (NRC) proposes a four-step method to estimate metabolizable energy (ME) with greater accuracy than the Modified Atwater approach. This method adjusts predicted digestibility based on crude fiber content and applies species-specific corrections for urinary energy losses, which differ between dogs and cats.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n  <style>\n    :root{ --nrc-border:#e5e7eb; --nrc-accent:#0ea5e9; }\n    .nrc-wrap{max-width:820px;margin:24px auto;padding:0 8px;color:inherit;}\n    .nrc-card{border:1px solid var(--nrc-border);border-radius:16px;padding:16px;background:#fff;margin-bottom:16px}\n    .nrc-title{font-weight:700;font-size:1.375rem;margin:0 0 4px;color:inherit}\n\n    \/* Input form *\/\n    .nrc-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}\n    @media(max-width:640px){ .nrc-row{grid-template-columns:1fr} }\n    .nrc-input{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:1rem;color:inherit;background:#fff;box-shadow:none;outline:none;}\n    .nrc-input:focus{border-color:#9ca3af;box-shadow:0 0 0 3px rgba(156,163,175,.2);}    \n    .nrc-label{font-size:.9rem;color:inherit;opacity:.75;display:block;margin:6px 0 4px}\n\n    \/* Species toggle *\/\n    .nrc-seg{display:flex;gap:8px;margin:6px 0 10px}\n    .nrc-seg button{flex:1;padding:10px 12px;border:1px solid var(--nrc-border);border-radius:999px;background:#fff;color:inherit;font-weight:700;font-size:1rem;line-height:1.2;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;text-shadow:none}\n    .nrc-seg button[aria-pressed=\"true\"]{border-color:var(--nrc-accent);box-shadow:0 0 0 3px rgba(14,165,233,.15)}\n\n    \/* KPI and table *\/\n    .nrc-kpi{font-size:2.1rem;font-weight:800;letter-spacing:.2px;margin:2px 0 8px;font-variant-numeric:tabular-nums;color:inherit}\n    .nrc-kpi-sub{font-size:.85rem;opacity:.7;color:inherit}\n    .nrc-table{display:grid;grid-template-columns:1fr auto;gap:6px;border-top:1px dashed var(--nrc-border);padding-top:10px;margin-top:10px}\n    .nrc-table .lbl{font-size:.95rem;color:inherit;opacity:.75}\n    .nrc-table .val{font-size:1rem;font-weight:600;text-align:right;font-variant-numeric:tabular-nums;color:inherit}\n\n    \/* Notes *\/\n    .nrc-note{margin-top:6px;font-size:.80rem;line-height:1.5;color:inherit;opacity:.75;background:transparent;border-left:none;padding:2px 0;font-style:italic}\n    .nrc-warn{color:#b91c1c;font-size:.95rem;margin-top:6px}\n  <\/style>\n\n  <div class=\"nrc-wrap\" id=\"nrc-2006-app\" data-version=\"1.1.1\">\n    <h2 class=\"nrc-title\">NRC 2006 (CF) ME Calculator<\/h2>\n\n    <div class=\"nrc-card\">\n      <div class=\"nrc-label\">Species<\/div>\n      <div class=\"nrc-seg\" role=\"tablist\" aria-label=\"species\">\n        <button id=\"seg-dog\" type=\"button\" role=\"tab\" aria-selected=\"true\" aria-pressed=\"true\">Dog<\/button>\n        <button id=\"seg-cat\" type=\"button\" role=\"tab\" aria-selected=\"false\" aria-pressed=\"false\">Cat<\/button>\n      <\/div>\n\n      <div class=\"nrc-row\">\n        <div>\n          <label class=\"nrc-label\" for=\"cp\">Crude protein (CP) %<\/label>\n          <input type=\"number\" id=\"cp\" class=\"nrc-input\" value=\"0\" step=\"0.01\" min=\"0\" max=\"100\" \/>\n        <\/div>\n        <div>\n          <label class=\"nrc-label\" for=\"fat\">Crude fat %<\/label>\n          <input type=\"number\" id=\"fat\" class=\"nrc-input\" value=\"0\" step=\"0.01\" min=\"0\" max=\"100\" \/>\n        <\/div>\n      <\/div>\n      <div class=\"nrc-row\">\n        <div>\n          <label class=\"nrc-label\" for=\"cf\">Crude fiber (CF) %<\/label>\n          <input type=\"number\" id=\"cf\" class=\"nrc-input\" value=\"0\" step=\"0.01\" min=\"0\" max=\"100\" \/>\n        <\/div>\n        <div>\n          <label class=\"nrc-label\" for=\"ash\">Ash %<\/label>\n          <input type=\"number\" id=\"ash\" class=\"nrc-input\" value=\"0\" step=\"0.01\" min=\"0\" max=\"100\" \/>\n        <\/div>\n      <\/div>\n      <div class=\"nrc-row\">\n        <div>\n          <label class=\"nrc-label\" for=\"moisture\">Moisture %<\/label>\n          <input type=\"number\" id=\"moisture\" class=\"nrc-input\" value=\"0\" step=\"0.01\" min=\"0\" max=\"100\" \/>\n        <\/div>\n        <div>\n          <label class=\"nrc-label\">Carbohydrate (NFE) %<\/label>\n          <input type=\"text\" id=\"nfe\" class=\"nrc-input\" value=\"100.00\" readonly \/>\n        <\/div>\n      <\/div>\n      <div id=\"sumWarning\" class=\"nrc-warn\" style=\"display:none\">Total exceeds 100%. Please review your inputs.<\/div>\n      <div class=\"nrc-note\">NFE = 100 \u2212 (CP + Fat + CF + Ash + Moisture).<br>Calculations are performed on a dry matter (DM) basis internally.<\/div>\n    <\/div>\n\n    <div class=\"nrc-card\">\n      <div class=\"nrc-kpi\" id=\"kcalKg\">- kcal\/kg<\/div>\n      <div class=\"nrc-kpi-sub\" id=\"kpiSub\">NRC 2006 (CF) \/ Dog (as\u2011fed)<\/div>\n\n      <div class=\"nrc-table\" style=\"margin-top:12px\">\n        <div class=\"lbl\">Dry matter (DM%)<\/div><div class=\"val\" id=\"dmPct\">-<\/div>\n        <div class=\"lbl\">ME (kcal\/kg DM)<\/div><div class=\"val\" id=\"meDm\">-<\/div>\n      <\/div>\n      <div class=\"nrc-table\">\n        <div class=\"lbl\">GE (kcal\/100g DM)<\/div><div class=\"val\" id=\"ge\">-<\/div>\n        <div class=\"lbl\">Digestibility (%)<\/div><div class=\"val\" id=\"dig\">-<\/div>\n        <div class=\"lbl\">DE (kcal\/100g DM)<\/div><div class=\"val\" id=\"de\">-<\/div>\n        <div class=\"lbl\">ME (kcal\/100g DM)<\/div><div class=\"val\" id=\"me100\">-<\/div>\n      <\/div>\n      <div class=\"nrc-table\">\n        <div class=\"lbl\">CP_DM\uff08%\uff09<\/div><div class=\"val\" id=\"cpDm\">-<\/div>\n        <div class=\"lbl\">Fat_DM\uff08%\uff09<\/div><div class=\"val\" id=\"fatDm\">-<\/div>\n        <div class=\"lbl\">CF_DM\uff08%\uff09<\/div><div class=\"val\" id=\"cfDm\">-<\/div>\n        <div class=\"lbl\">NFE_DM\uff08%\uff09<\/div><div class=\"val\" id=\"nfeDm\">-<\/div>\n      <\/div>\n\n      <div class=\"nrc-note\">Digestibility: Dog = 91.2 \u2212 1.43\u00d7CF_DM; Cat = 87.9 \u2212 0.88\u00d7CF_DM.<br>Urinary loss correction: Dog = 1.04\u00d7CP_DM; Cat = 0.77\u00d7CP_DM.<\/div>\n    <\/div>\n  <\/div>\n\n  <script>\n  (function(){\n    const $ = (id) => document.getElementById(id);\n    const fmt = (n, d=0) => (isFinite(n)? n.toLocaleString(undefined,{minimumFractionDigits:d,maximumFractionDigits:d}) : '-');\n    const clamp = (n,min,max)=>Math.max(min,Math.min(max,n));\n\n    const els = {\n      segDog: document.getElementById('seg-dog'),\n      segCat: document.getElementById('seg-cat'),\n      moisture: $('moisture'), cp: $('cp'), fat: $('fat'), cf: $('cf'), ash: $('ash'), nfe: $('nfe'),\n      sumWarn: $('sumWarning'),\n      kcalKg: $('kcalKg'), kpiSub: $('kpiSub'), dmPct: $('dmPct'), meDm: $('meDm'), ge: $('ge'), dig: $('dig'), de: $('de'), me100: $('me100'),\n      cpDm: $('cpDm'), fatDm: $('fatDm'), cfDm: $('cfDm'), nfeDm: $('nfeDm')\n    };\n\n    let species = 'dog';\n\n    function pickSpecies(newSp){\n      species = newSp;\n      const dogOn = species==='dog';\n      els.segDog.setAttribute('aria-pressed', dogOn);\n      els.segDog.setAttribute('aria-selected', dogOn);\n      els.segCat.setAttribute('aria-pressed', !dogOn);\n      els.segCat.setAttribute('aria-selected', !dogOn);\n      recalc();\n    }\n\n    els.segDog.addEventListener('click', ()=>pickSpecies('dog'));\n    els.segCat.addEventListener('click', ()=>pickSpecies('cat'));\n\n    function num(el){\n      const raw = (el.value||'').toString();\n      const cleaned = raw.replace(\/[\"']\/g, ''); \/\/ Remove unnecessary quotes\n      if (cleaned !== raw) el.value = cleaned;   \/\/ Update the field immediately\n      const v = parseFloat(cleaned);\n      return Number.isFinite(v) ? v : 0;\n    }\n\n    function recalc(){\n      const m = clamp(num(els.moisture),0,100); \/\/ as-fed\n      const cp = clamp(num(els.cp),0,100);\n      const fat = clamp(num(els.fat),0,100);\n      const cf = clamp(num(els.cf),0,100);\n      const ash = clamp(num(els.ash),0,100);\n\n      const sumAF = m + cp + fat + cf + ash;\n      const nfeAF = 100 - sumAF;\n      els.nfe.value = isFinite(nfeAF)? nfeAF.toFixed(2) : '';\n      els.sumWarn.style.display = sumAF>100.0001? 'block':'none';\n\n      const dmPct = clamp(100 - m, 0, 100);\n      const toDM = (x) => (dmPct>0? (x\/dmPct)*100 : 0);\n      const CP_DM = toDM(cp);\n      const FAT_DM = toDM(fat);\n      const CF_DM = toDM(cf);\n      const NFE_DM = toDM(nfeAF);\n\n      const GE = 5.7*CP_DM + 9.4*FAT_DM + 4.1*(NFE_DM + CF_DM); \/\/ kcal\/100g DM\n      const dig = clamp(species==='dog' ? 91.2 - 1.43*CF_DM : 87.9 - 0.88*CF_DM, 0, 100);\n      const DE = GE * (dig\/100);\n      const ME100 = DE - (species==='dog' ? 1.04*CP_DM : 0.77*CP_DM); \/\/ kcal\/100g DM\n\n      const ME_DM_kg = ME100 * 10; \/\/ kcal\/kg DM\n      const ME_AF_kg = (ME100 * 10) * (dmPct\/100); \/\/ kcal\/kg as-fed\n\n      els.kcalKg.textContent = isFinite(ME_AF_kg)? fmt(ME_AF_kg,0) + ' kcal\/kg' : '- kcal\/kg';\n      els.kpiSub.textContent = `NRC 2006\uff08CF\uff09 \/ ${species==='dog'?'Dog':'Cat'}\uff08as\u2011fed\uff09`;\n\n      els.dmPct.textContent = fmt(dmPct,2) + ' %';\n      els.meDm.textContent = isFinite(ME_DM_kg)? fmt(ME_DM_kg,0) : '-';\n      els.ge.textContent = isFinite(GE)? fmt(GE,1) : '-';\n      els.dig.textContent = isFinite(dig)? fmt(dig,1) + ' %' : '-';\n      els.de.textContent = isFinite(DE)? fmt(DE,1) : '-';\n      els.me100.textContent = isFinite(ME100)? fmt(ME100,1) : '-';\n\n      els.cpDm.textContent = isFinite(CP_DM)? fmt(CP_DM,2) + ' %' : '-';\n      els.fatDm.textContent = isFinite(FAT_DM)? fmt(FAT_DM,2) + ' %' : '-';\n      els.cfDm.textContent = isFinite(CF_DM)? fmt(CF_DM,2) + ' %' : '-';\n      els.nfeDm.textContent = isFinite(NFE_DM)? fmt(NFE_DM,2) + ' %' : '-';\n    }\n\n    ['change','keyup','input'].forEach(ev=>{\n      ['moisture','cp','fat','cf','ash'].forEach(id=>{\n        document.getElementById(id).addEventListener(ev, recalc);\n      });\n    });\n\n    \/\/ Initial state (all zeros \u2192 NFE=100.00; calculations update immediately)\n    recalc();\n  })();\n  <\/script>\n  \n\n\n\n<div class=\"epb-linkcard is-style-epb-radius__0 is-style-epb-hover__floating wp-block-emanon-premium-blocks-linkcard epb-margin-top__default epb-margin-top__default-sp epb-margin-top__default-tablet\" style=\"--epb-linkcard-arrow-size:16px\"><div class=\"epb-linkcard_label icon-edit\" data-fontweight=\"normal\" style=\"font-size:12px;letter-spacing:0.15em\">Related article<\/div><a class=\"epb-linkcard_link\" href=\"https:\/\/first-reach.org\/en\/contents\/petfood-calorie-me-calculation\/\" target=\"_blank\" rel=\"noopener noreferrer\"><div class=\"epb-linkcard_inner epb-arrow-effect-right is-style-epb-arrow__01\" style=\"padding-top:16px;padding-bottom:16px;padding-left:24px;border-style:solid;border-top-width:2px;border-bottom-width:2px;border-left-width:2px;border-right-width:2px;border-color:#e5e7e8\"><div class=\"epb-linkcard_heading\"><div class=\"epb-linkcard_title\" data-fontweight=\"normal\" style=\"--epb-title-font-sp:16px;--epb-title-font-tablet:16px;--epb-title-font-pc:16px;letter-spacing:0.04em;color:#333333\">Calorie calculation formulas for pet food and a practical understanding and application of ME<\/div><\/div><\/div><\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Overview In Nutrient Requirements of Dogs and Cats (2006), the U.S. National Research Council (NRC) proposes a four-step method to estimate metabolizable energy (ME) with greater accuracy than the Modified Atwater approach. This method adjusts predicted digestibility based on crude fiber content and applies species-specific corrections for urinary energy losses, which differ between dogs and [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":42424,"parent":42472,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-42388","page","type-page","status-publish","has-post-thumbnail","hentry"],"_links":{"self":[{"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/pages\/42388","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/comments?post=42388"}],"version-history":[{"count":5,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/pages\/42388\/revisions"}],"predecessor-version":[{"id":48355,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/pages\/42388\/revisions\/48355"}],"up":[{"embeddable":true,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/pages\/42472"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/media\/42424"}],"wp:attachment":[{"href":"https:\/\/first-reach.org\/en\/wp-json\/wp\/v2\/media?parent=42388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}