Macronutrient Ratio Calculator
ANA›Life Services Authority›National Calculator Authority›Macronutrient Ratio Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Macronutrient Ratio Calculator
Calculate how many grams of protein, carbohydrates, and fat you need based on your total daily calorie intake and dietary goal.
Total Daily Calories (kcal)
Dietary Goal
Balanced (30% P / 40% C / 30% F) Low Carb (30% P / 20% C / 50% F) High Protein (40% P / 35% C / 25% F) Ketogenic (25% P / 5% C / 70% F) Endurance / High Carb (20% P / 55% C / 25% F) Custom
Protein (%)
Carbohydrates (%)
Fat (%)
⚠ Percentages must sum to exactly 100%.
Calculate
### Your Daily Macronutrient Targets
Macronutrient % of Calories Calories (kcal) Grams (g)
🥩 Protein — — —
🍞 Carbohydrates — — —
🥑 Fat — — —
Total — — —
(function() { const GOALS = { balanced: { p: 30, c: 40, f: 30 }, low_carb: { p: 30, c: 20, f: 50 }, high_protein: { p: 40, c: 35, f: 25 }, keto: { p: 25, c: 5, f: 70 }, endurance: { p: 20, c: 55, f: 25 }, custom: null };
// Calories per gram for each macronutrient (Atwater factors) const KCAL_PER_G = { p: 4, c: 4, f: 9 };
document.getElementById('mac-goal').addEventListener('change', function() { const show = this.value === 'custom'; document.getElementById('mac-custom-fields').style.display = show ? 'block' : 'none'; document.getElementById('mac-pct-warning').style.display = 'none'; });
window.macCalc = function() { const errEl = document.getElementById('mac-error'); const resEl = document.getElementById('mac-result'); errEl.style.display = 'none'; resEl.style.display = 'none';
const calories = parseFloat(document.getElementById('mac-calories').value); const goal = document.getElementById('mac-goal').value;
// Validate calories if (isNaN(calories) || calories 10000) { errEl.textContent = '⚠ Please enter a valid calorie value between 500 and 10,000 kcal.'; errEl.style.display = 'block'; return; }
let pPct, cPct, fPct;
if (goal === 'custom') { pPct = parseFloat(document.getElementById('mac-protein-pct').value); cPct = parseFloat(document.getElementById('mac-carb-pct').value); fPct = parseFloat(document.getElementById('mac-fat-pct').value);
if (isNaN(pPct) || isNaN(cPct) || isNaN(fPct) || pPct 100 || cPct > 100 || fPct > 100) { errEl.textContent = '⚠ Each percentage must be between 0 and 100.'; errEl.style.display = 'block'; document.getElementById('mac-pct-warning').style.display = 'none'; return; }
const sum = pPct + cPct + fPct; if (Math.abs(sum - 100) > 0.01) { document.getElementById('mac-pct-warning').style.display = 'block'; errEl.textContent = '⚠ Custom percentages must sum to exactly 100%. Current sum: ' + sum.toFixed(1) + '%.'; errEl.style.display = 'block'; return; } document.getElementById('mac-pct-warning').style.display = 'none';
} else { const ratios = GOALS[goal]; pPct = ratios.p; cPct = ratios.c; fPct = ratios.f; }
// Core formula: // Macronutrient kcal = Total Calories × (Percentage / 100) // Macronutrient grams = Macronutrient kcal / Atwater factor // Protein & Carbs: 4 kcal/g // Fat: 9 kcal/g
const pKcal = calories * (pPct / 100); const cKcal = calories * (cPct / 100); const fKcal = calories * (fPct / 100);
const pG = pKcal / KCAL_PER_G.p; const cG = cKcal / KCAL_PER_G.c; const fG = fKcal / KCAL_PER_G.f;
const totalKcal = pKcal + cKcal + fKcal; const totalG = pG + cG + fG; const totalPct = pPct + cPct + fPct;
// Populate table document.getElementById('mac-p-pct').textContent = pPct.toFixed(1) + '%'; document.getElementById('mac-p-kcal').textContent = pKcal.toFixed(0) + ' kcal'; document.getElementById('mac-p-g').textContent = pG.toFixed(1) + ' g';
document.getElementById('mac-c-pct').textContent = cPct.toFixed(1) + '%'; document.getElementById('mac-c-kcal').textContent = cKcal.toFixed(0) + ' kcal'; document.getElementById('mac-c-g').textContent = cG.toFixed(1) + ' g';
document.getElementById('mac-f-pct').textContent = fPct.toFixed(1) + '%'; document.getElementById('mac-f-kcal').textContent = fKcal.toFixed(0) + ' kcal'; document.getElementById('mac-f-g').textContent = fG.toFixed(1) + ' g';
document.getElementById('mac-total-pct').textContent = totalPct.toFixed(1) + '%'; document.getElementById('mac-total-kcal').textContent = totalKcal.toFixed(0) + ' kcal'; document.getElementById('mac-total-g').textContent = totalG.toFixed(1) + ' g';
const goalLabels = { balanced: 'Balanced', low_carb: 'Low Carb', high_protein: 'High Protein', keto: 'Ketogenic', endurance: 'Endurance / High Carb', custom: 'Custom' };
document.getElementById('mac-summary').textContent = 'For a ' + goalLabels[goal] + ' diet at ' + calories.toFixed(0) + ' kcal/day: aim for ' + pG.toFixed(1) + ' g protein, ' + cG.toFixed(1) + ' g carbohydrates, and ' + fG.toFixed(1) + ' g fat per day.';
resEl.style.display = 'block'; }; })();
#### Formula
Step 1 — Macronutrient Calories: Protein kcal = Total Calories × (Protein% ÷ 100) Carb kcal = Total Calories × (Carb% ÷ 100) Fat kcal = Total Calories × (Fat% ÷ 100)
Step 2 — Macronutrient Grams (Atwater factors): Protein grams = Protein kcal ÷ 4 (4 kcal per gram) Carb grams = Carb kcal ÷ 4 (4 kcal per gram) Fat grams = Fat kcal ÷ 9 (9 kcal per gram)
Example (2,000 kcal, Balanced 30/40/30): Protein: 2000 × 0.30 = 600 kcal → 600 ÷ 4 = 150 g Carbs: 2000 × 0.40 = 800 kcal → 800 ÷ 4 = 200 g Fat: 2000 × 0.30 = 600 kcal → 600 ÷ 9 = 66.7 g
#### Assumptions & References
- Uses the Atwater general factors: protein = 4 kcal/g, carbohydrates = 4 kcal/g, fat = 9 kcal/g (Atwater & Bryant, 1900; FDA 21 CFR §101.9).
- Preset ratios are based on common dietary guidelines: Balanced aligns with USDA Dietary Guidelines (2020–2025) AMDR ranges (protein 10–35%, carbs 45–65%, fat 20–35%); Ketogenic follows clinical ketogenic diet protocols (≤10% carbs).
- Reference: Institute of Medicine. Dietary Reference Intakes for Energy, Carbohydrate, Fiber, Fat, Fatty Acids, Cholesterol, Protein, and Amino Acids. National Academies Press, 2005.
More Calculators
- Pest Prevention Savings Calculator
- Water Heater Size Calculator
- Water Usage & Cost Calculator
- Pool Volume Calculator
- Pool Chemical Dosing Calculator
- Pool Pump Sizing Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...