Macronutrient Ratio Calculator

ANALife Services AuthorityNational 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

More Calculators

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References