{"id":124,"date":"2025-09-05T10:33:40","date_gmt":"2025-09-05T14:33:40","guid":{"rendered":"https:\/\/www.vmrfit.com\/?page_id=124"},"modified":"2026-01-20T09:13:29","modified_gmt":"2026-01-20T14:13:29","slug":"macro-calculator","status":"publish","type":"page","link":"https:\/\/www.vmrfit.com\/index.php\/macro-calculator\/","title":{"rendered":"Macro Calculator"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Macro Calculator<\/title>\n  <style>\n    body {\n      font-family: Arial, sans-serif;\n      max-width: 1000px;\n      margin: 30px auto;\n      padding: 20px;\n      background-color: #f9f9f9;\n      border-radius: 10px;\n    }\n    h1 {\n      text-align: center;\n      color: #333;\n    }\n    label {\n      font-weight: bold;\n      display: block;\n      margin-top: 15px;\n    }\n    input, select, button {\n      width: 100%;\n      padding: 10px;\n      margin-top: 5px;\n      box-sizing: border-box;\n    }\n    button {\n      background-color: #007bff;\n      color: white;\n      font-size: 16px;\n      border: none;\n      border-radius: 6px;\n      cursor: pointer;\n    }\n    button:hover {\n      background-color: #0056b3;\n    }\n    .macro-group {\n      display: flex;\n      justify-content: space-between;\n      gap: 10px;\n    }\n    .macro-group > div {\n      flex: 1;\n    }\n    .results {\n      margin-top: 25px;\n      background: white;\n      padding: 20px;\n      border-radius: 6px;\n    }\n    .results p {\n      margin: 6px 0;\n    }\n  <\/style>\n<\/head>\n<body>\n\n<label for=\"unitSystem\">Unit System:<\/label>\n<select id=\"unitSystem\" onchange=\"updateUnits()\">\n  <option value=\"imperial\">Imperial (lbs \/ in)<\/option>\n  <option value=\"metric\">Metric (kg \/ cm)<\/option>\n<\/select>\n\n<label for=\"gender\">Gender:<\/label>\n<select id=\"gender\">\n  <option value=\"male\">Male<\/option>\n  <option value=\"female\">Female<\/option>\n<\/select>\n\n<label for=\"weight\" id=\"weightLabel\">Weight (lbs):<\/label>\n<input type=\"number\" id=\"weight\" placeholder=\"e.g. 170\">\n\n<label for=\"height\" id=\"heightLabel\">Height (in):<\/label>\n<input type=\"number\" id=\"height\" placeholder=\"e.g. 70\">\n\n<label for=\"age\">Age:<\/label>\n<input type=\"number\" id=\"age\" placeholder=\"e.g. 30\">\n\n<label for=\"activity\">Activity Level:<\/label>\n<select id=\"activity\">\n  <option value=\"1.2\">Sedentary<\/option>\n  <option value=\"1.375\">Lightly Active<\/option>\n  <option value=\"1.55\">Moderately Active<\/option>\n  <option value=\"1.725\">Very Active<\/option>\n  <option value=\"1.9\">Super Active<\/option>\n<\/select>\n\n<label for=\"goal\">Goal:<\/label>\n<select id=\"goal\">\n  <option value=\"maintain\">Maintain<\/option>\n  <option value=\"cut\">Cut (-20%)<\/option>\n  <option value=\"bulk\">Bulk (+15%)<\/option>\n<\/select>\n\n<label for=\"macroPreset\">Macro Presets:<\/label>\n<select id=\"macroPreset\" onchange=\"applyPreset()\">\n  <option value=\"\">Custom \/ None<\/option>\n  <option value=\"balanced\">Balanced (30% \/ 25% \/ 45%)<\/option>\n  <option value=\"highProtein\">High Protein (40% \/ 25% \/ 35%)<\/option>\n  <option value=\"keto\">Keto (10% \/ 70% \/ 20%)<\/option>\n  <option value=\"lowFat\">Low Fat (25% \/ 15% \/ 60%)<\/option>\n<\/select>\n\n<div class=\"macro-group\">\n  <div>\n    <label for=\"proteinRatio\">Protein %:<\/label>\n    <input type=\"number\" id=\"proteinRatio\" value=\"30\">\n  <\/div>\n  <div>\n    <label for=\"fatRatio\">Fat %:<\/label>\n    <input type=\"number\" id=\"fatRatio\" value=\"25\">\n  <\/div>\n  <div>\n    <label for=\"carbRatio\">Carb %:<\/label>\n    <input type=\"number\" id=\"carbRatio\" value=\"45\">\n  <\/div>\n<\/div>\n\n<button onclick=\"calculateMacros()\">Calculate Macros<\/button>\n\n<div class=\"results\" id=\"results\" style=\"display:none;\">\n  <h2>Your Daily Macros<\/h2>\n  <p><strong>Total Calories:<\/strong> <span id=\"calories\"><\/span> kcal<\/p>\n  <p><strong>Protein:<\/strong> <span id=\"protein\"><\/span> g<\/p>\n  <p><strong>Fats:<\/strong> <span id=\"fats\"><\/span> g<\/p>\n  <p><strong>Carbohydrates:<\/strong> <span id=\"carbs\"><\/span> g<\/p>\n  <button onclick=\"exportPDF()\">\ud83d\udcc4 Export to PDF<\/button>\n<\/div>\n\n<!-- jsPDF CDN -->\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n\n<script>\nfunction updateUnits() {\n  const system = document.getElementById(\"unitSystem\").value;\n  document.getElementById(\"weightLabel\").textContent = system === \"metric\" ? \"Weight (kg):\" : \"Weight (lbs):\";\n  document.getElementById(\"heightLabel\").textContent = system === \"metric\" ? \"Height (cm):\" : \"Height (in):\";\n}\n\nfunction applyPreset() {\n  const preset = document.getElementById(\"macroPreset\").value;\n  const p = document.getElementById(\"proteinRatio\");\n  const f = document.getElementById(\"fatRatio\");\n  const c = document.getElementById(\"carbRatio\");\n\n  if (preset === \"balanced\") { p.value=30; f.value=25; c.value=45; }\n  if (preset === \"highProtein\") { p.value=40; f.value=25; c.value=35; }\n  if (preset === \"keto\") { p.value=10; f.value=70; c.value=20; }\n  if (preset === \"lowFat\") { p.value=25; f.value=15; c.value=60; }\n}\n\nfunction calculateMacros() {\n  const unitSystem = document.getElementById(\"unitSystem\").value;\n  const gender = document.getElementById(\"gender\").value;\n  let weight = parseFloat(document.getElementById(\"weight\").value);\n  let height = parseFloat(document.getElementById(\"height\").value);\n  const age = parseInt(document.getElementById(\"age\").value);\n  const activity = parseFloat(document.getElementById(\"activity\").value);\n  const goal = document.getElementById(\"goal\").value;\n\n  const proteinPercent = parseFloat(document.getElementById(\"proteinRatio\").value);\n  const fatPercent = parseFloat(document.getElementById(\"fatRatio\").value);\n  const carbPercent = parseFloat(document.getElementById(\"carbRatio\").value);\n\n  if (\n    isNaN(weight) || isNaN(height) || isNaN(age) ||\n    isNaN(proteinPercent) || isNaN(fatPercent) || isNaN(carbPercent)\n  ) { alert(\"Please enter valid values.\"); return; }\n\n  if ((proteinPercent + fatPercent + carbPercent) !== 100) {\n    alert(\"Macro ratios must total 100%.\"); return;\n  }\n\n  if (unitSystem === \"imperial\") {\n    weight *= 0.453592;\n    height *= 2.54;\n  }\n\n  let bmr = gender === \"male\"\n    ? 10 * weight + 6.25 * height - 5 * age + 5\n    : 10 * weight + 6.25 * height - 5 * age - 161;\n\n  let tdee = bmr * activity;\n  if (goal === \"cut\") tdee *= 0.8;\n  if (goal === \"bulk\") tdee *= 1.15;\n\n  const protein = (tdee * (proteinPercent \/ 100)) \/ 4;\n  const fat     = (tdee * (fatPercent \/ 100)) \/ 9;\n  const carbs   = (tdee * (carbPercent \/ 100)) \/ 4;\n\n  document.getElementById(\"calories\").textContent = Math.round(tdee);\n  document.getElementById(\"protein\").textContent  = Math.round(protein);\n  document.getElementById(\"fats\").textContent     = Math.round(fat);\n  document.getElementById(\"carbs\").textContent    = Math.round(carbs);\n  document.getElementById(\"results\").style.display = \"block\";\n}\n\nfunction exportPDF() {\n  const { jsPDF } = window.jspdf;\n  const doc = new jsPDF();\n\n  doc.setFontSize(16);\n  doc.text(\"Macro Calculator Results\", 20, 20);\n  doc.setFontSize(12);\n  doc.text(`Total Calories: ${document.getElementById(\"calories\").textContent} kcal`, 20, 40);\n  doc.text(`Protein: ${document.getElementById(\"protein\").textContent} g`, 20, 50);\n  doc.text(`Fats: ${document.getElementById(\"fats\").textContent} g`, 20, 60);\n  doc.text(`Carbohydrates: ${document.getElementById(\"carbs\").textContent} g`, 20, 70);\n\n  doc.save(\"macro-results.pdf\");\n}\n<\/script>\n\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>Macro Calculator Unit System: Imperial (lbs \/ in)Metric (kg \/ cm) Gender: MaleFemale Weight (lbs): Height (in): Age: Activity Level: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-124","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/pages\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":7,"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/pages\/124\/revisions"}],"predecessor-version":[{"id":267,"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/pages\/124\/revisions\/267"}],"wp:attachment":[{"href":"https:\/\/www.vmrfit.com\/index.php\/wp-json\/wp\/v2\/media?parent=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}