{"id":2406,"date":"2026-02-11T00:03:12","date_gmt":"2026-02-10T22:03:12","guid":{"rendered":"https:\/\/bio-me.bio\/?page_id=2406"},"modified":"2026-02-17T20:56:29","modified_gmt":"2026-02-17T18:56:29","slug":"macro-split-calculator","status":"publish","type":"page","link":"https:\/\/bio-me.bio\/?page_id=2406","title":{"rendered":"Macro Split Calculator"},"content":{"rendered":"\n<div class=\"eco-tool wp-block-group\" id=\"eco-tool-macro-4d7a1\">\n  <div class=\"eco-tool__header\">\n    <h2 class=\"eco-tool__title\">Macro Split Calculator<\/h2>\n    <p class=\"eco-tool__lead\">\n      Calculate daily protein, fat, and carbs from calories and a chosen macro percentage split.\n    <\/p>\n  <\/div>\n\n  <form class=\"eco-tool__form\" id=\"eco-macro-form-4d7a1\" novalidate>\n    <div class=\"eco-tool__grid3\">\n      <!-- Calories -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-macro-cal-4d7a1\">\n          Daily calories<br>(kcal)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-macro-cal-4d7a1\" type=\"number\" min=\"0\" step=\"1\" placeholder=\"e.g., 2000\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Total calories per day.<\/div>\n      <\/div>\n\n      <!-- Preset -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-macro-preset-4d7a1\">\n          Preset<br>split\n        <\/label>\n        <select class=\"eco-tool__input\" id=\"eco-macro-preset-4d7a1\">\n          <option value=\"custom\" selected>Custom<\/option>\n          <option value=\"30,30,40\">Balanced (30\/30\/40)<\/option>\n          <option value=\"25,30,45\">Higher carbs (25\/30\/45)<\/option>\n          <option value=\"35,30,35\">Higher protein (35\/30\/35)<\/option>\n          <option value=\"40,40,20\">Low carb (40\/40\/20)<\/option>\n          <option value=\"25,50,25\">Higher fat (25\/50\/25)<\/option>\n        <\/select>\n        <div class=\"eco-tool__hint\">Format: Protein \/ Fat \/ Carbs.<\/div>\n      <\/div>\n\n      <!-- Formula -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\">Rules<\/label>\n        <div class=\"eco-tool__noteBox\">\n          Protein = 4 kcal\/g<br>\n          Carbs = 4 kcal\/g<br>\n          Fat = 9 kcal\/g\n        <\/div>\n        <div class=\"eco-tool__hint\">We convert % \u2192 calories \u2192 grams.<\/div>\n      <\/div>\n\n      <!-- Protein % -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-macro-p-4d7a1\">\n          Protein<br>(%)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-macro-p-4d7a1\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"30\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Percent of total calories.<\/div>\n      <\/div>\n\n      <!-- Fat % -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-macro-f-4d7a1\">\n          Fat<br>(%)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-macro-f-4d7a1\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"30\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Percent of total calories.<\/div>\n      <\/div>\n\n      <!-- Carbs % -->\n      <div class=\"eco-tool__field\">\n        <label class=\"eco-tool__label\" for=\"eco-macro-c-4d7a1\">\n          Carbs<br>(%)\n        <\/label>\n        <input class=\"eco-tool__input\" id=\"eco-macro-c-4d7a1\" type=\"number\" min=\"0\" max=\"100\" step=\"1\" value=\"40\" inputmode=\"numeric\" \/>\n        <div class=\"eco-tool__hint\">Percent of total calories.<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__actions\">\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn\" id=\"eco-macro-calc-4d7a1\">Calculate<\/button>\n      <button type=\"button\" class=\"wp-element-button eco-tool__btn eco-tool__btn--ghost\" id=\"eco-macro-reset-4d7a1\">Reset<\/button>\n      <div class=\"eco-tool__error\" id=\"eco-macro-error-4d7a1\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <div class=\"eco-tool__result\" id=\"eco-macro-result-4d7a1\" hidden>\n    <h3 class=\"eco-tool__subtitle\">Macro targets<\/h3>\n\n    <div class=\"eco-tool__cards\">\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Protein<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-macro-outp-4d7a1\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-macro-outp2-4d7a1\">\u2014<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Fat<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-macro-outf-4d7a1\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-macro-outf2-4d7a1\">\u2014<\/div>\n      <\/div>\n\n      <div class=\"eco-tool__card\">\n        <div class=\"eco-tool__metric-label\">Carbs<\/div>\n        <div class=\"eco-tool__metric-value\" id=\"eco-macro-outc-4d7a1\">\u2014<\/div>\n        <div class=\"eco-tool__metric-sub\" id=\"eco-macro-outc2-4d7a1\">\u2014<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"eco-tool__card eco-tool__card--wide\">\n      <div class=\"eco-tool__metric-label\">Check<\/div>\n      <div class=\"eco-tool__metric-sub\" id=\"eco-macro-check-4d7a1\">\u2014<\/div>\n    <\/div>\n\n    <p class=\"eco-tool__note\">\n      This calculator only converts a percentage split into grams. It does not give diet or medical advice.\n    <\/p>\n  <\/div>\n<\/div>\n\n<style>\n.eco-tool{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:16px}\n.eco-tool__grid3{display:grid;grid-template-columns:1fr;gap:16px}\n@media (min-width:860px){.eco-tool__grid3{grid-template-columns:1fr 1fr 1fr}}\n.eco-tool__field{display:flex;flex-direction:column;gap:6px}\n.eco-tool__label{font-weight:600}\n.eco-tool__input{height:44px;padding:0 12px;border:1px solid rgba(0,0,0,.2);border-radius:10px;background:#fff;font:inherit;box-sizing:border-box}\n.eco-tool select.eco-tool__input{appearance:none;padding-right:40px}\n.eco-tool__hint{font-size:.92em;opacity:.78;min-height:38px}\n.eco-tool__noteBox{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px;background:rgba(0,0,0,.02);min-height:44px}\n\n.eco-tool__actions{display:flex;gap:10px;margin-top:16px;align-items:center;flex-wrap:wrap}\n.eco-tool__btn{padding:10px 22px}\n.eco-tool__btn--ghost{background:transparent!important;border:1px solid rgba(0,0,0,.2)!important}\n.eco-tool__btn--ghost:hover,.eco-tool__btn--ghost:focus{background:rgba(0,0,0,.06)!important;border-color:rgba(0,0,0,.35)!important}\n.eco-tool__error{font-weight:600;min-height:1.2em;flex:1 1 240px}\n\n.eco-tool__result{margin-top:16px}\n.eco-tool__subtitle{margin:0 0 10px}\n.eco-tool__cards{display:grid;gap:10px;grid-template-columns:1fr}\n@media (min-width:860px){.eco-tool__cards{grid-template-columns:1fr 1fr 1fr}}\n.eco-tool__card{border:1px solid rgba(0,0,0,.12);border-radius:12px;padding:12px}\n.eco-tool__card--wide{margin-top:10px}\n.eco-tool__metric-label{opacity:.85;font-weight:600}\n.eco-tool__metric-value{font-size:1.6em;font-weight:800;margin-top:6px;line-height:1.1}\n.eco-tool__metric-sub{opacity:.85;margin-top:6px}\n.eco-tool__note{margin-top:10px;opacity:.9}\n<\/style>\n\n<script>\n(function(){\n  const S=\"4d7a1\";\n  const el=(id)=>document.getElementById(id+\"-\"+S);\n\n  const calEl=el(\"eco-macro-cal\");\n  const presetEl=el(\"eco-macro-preset\");\n  const pEl=el(\"eco-macro-p\");\n  const fEl=el(\"eco-macro-f\");\n  const cEl=el(\"eco-macro-c\");\n\n  const calcBtn=el(\"eco-macro-calc\");\n  const resetBtn=el(\"eco-macro-reset\");\n  const errEl=el(\"eco-macro-error\");\n\n  const resEl=el(\"eco-macro-result\");\n  const outP=el(\"eco-macro-outp\");\n  const outF=el(\"eco-macro-outf\");\n  const outC=el(\"eco-macro-outc\");\n  const outP2=el(\"eco-macro-outp2\");\n  const outF2=el(\"eco-macro-outf2\");\n  const outC2=el(\"eco-macro-outc2\");\n  const checkEl=el(\"eco-macro-check\");\n\n  function setError(msg){ errEl.textContent = msg || \"\"; }\n  function fmt(n,d){ return Number(n).toLocaleString(undefined,{maximumFractionDigits:d}); }\n\n  function applyPreset(){\n    const v = presetEl.value;\n    if(v === \"custom\") return;\n    const parts = v.split(\",\").map(x=>Number(x));\n    if(parts.length===3 && parts.every(x=>Number.isFinite(x))){\n      pEl.value = parts[0];\n      fEl.value = parts[1];\n      cEl.value = parts[2];\n    }\n    resEl.hidden = true;\n    setError(\"\");\n  }\n\n  function calculate(){\n    setError(\"\");\n\n    const calories = Number(calEl.value);\n    const P = Number(pEl.value);\n    const F = Number(fEl.value);\n    const C = Number(cEl.value);\n\n    if(!Number.isFinite(calories) || calories <= 0){\n      setError(\"Enter valid daily calories (kcal).\");\n      resEl.hidden = true;\n      return;\n    }\n    if(![P,F,C].every(x=>Number.isFinite(x) && x >= 0 && x <= 100)){\n      setError(\"Macro percentages must be between 0 and 100.\");\n      resEl.hidden = true;\n      return;\n    }\n\n    const sum = P + F + C;\n    if(sum !== 100){\n      setError(`Percentages must add up to 100%. Current total: ${fmt(sum,0)}%.`);\n      resEl.hidden = true;\n      return;\n    }\n\n    const calP = calories * (P\/100);\n    const calF = calories * (F\/100);\n    const calC = calories * (C\/100);\n\n    const gP = calP \/ 4;\n    const gF = calF \/ 9;\n    const gC = calC \/ 4;\n\n    outP.textContent = `${fmt(gP,0)} g`;\n    outF.textContent = `${fmt(gF,0)} g`;\n    outC.textContent = `${fmt(gC,0)} g`;\n\n    outP2.textContent = `${fmt(calP,0)} kcal (${fmt(P,0)}%)`;\n    outF2.textContent = `${fmt(calF,0)} kcal (${fmt(F,0)}%)`;\n    outC2.textContent = `${fmt(calC,0)} kcal (${fmt(C,0)}%)`;\n\n    const back = (gP*4) + (gF*9) + (gC*4);\n    checkEl.textContent = `Recomputed calories: ${fmt(back,0)} kcal (from grams).`;\n\n    resEl.hidden = false;\n  }\n\n  function reset(){\n    calEl.value = \"\";\n    presetEl.value = \"30,30,40\";\n    pEl.value = 30;\n    fEl.value = 30;\n    cEl.value = 40;\n    setError(\"\");\n    resEl.hidden = true;\n  }\n\n  presetEl.addEventListener(\"change\", applyPreset);\n  calcBtn.addEventListener(\"click\", calculate);\n  resetBtn.addEventListener(\"click\", reset);\n\n  \/\/ init\n  presetEl.value = \"30,30,40\";\n  applyPreset();\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Macro Split Calculator Calculate daily protein, fat, and carbs from calories and a chosen macro percentage split. Daily calories(kcal) Total calories per day. Presetsplit CustomBalanced (30\/30\/40)Higher carbs (25\/30\/45)Higher protein (35\/30\/35)Low&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2457,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_sitemap_exclude":false,"_sitemap_priority":"","_sitemap_frequency":"","footnotes":""},"_links":{"self":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2406"}],"collection":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2406"}],"version-history":[{"count":1,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2406\/revisions"}],"predecessor-version":[{"id":2407,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2406\/revisions\/2407"}],"up":[{"embeddable":true,"href":"https:\/\/bio-me.bio\/index.php?rest_route=\/wp\/v2\/pages\/2457"}],"wp:attachment":[{"href":"https:\/\/bio-me.bio\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2406"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}