Why this approach
Most macro calculators on the internet ask for a goal and return three numbers. The user has no idea where the protein number came from, why the fat number isn’t lower, or what would happen if they swapped 30g of carbs for 15g of fat. Hidden assumptions, opaque output.
This calculator does the opposite. Protein and fat are anchored to body weight using ratios from peer-reviewed research, the user picks the ratio, and carbs fill what’s left. Three formulas, all visible.
Formula, no abstraction
protein_g = body_weight_kg × protein_ratio
fat_g = body_weight_kg × fat_ratio
protein_kcal = protein_g × 4
fat_kcal = fat_g × 9
carb_kcal = (TDEE × goal_multiplier) − protein_kcal − fat_kcal
carb_g = carb_kcal / 4
Goal multipliers: 0.8 for cut (−20%), 1.0 for maintain, 1.10 for surplus (+10%).
Reasonable ranges per macro
Protein: 1.6 to 2.2 g/kg body weight
Morton 2018 meta-analysis (n=49 studies, 1863 participants) settled the protein-for-muscle question: gains plateau around 1.6 g/kg, with no further benefit detected up to 2.2 g/kg, and small further benefit beyond. For a typical resistance-training population, 1.8 g/kg is the defensible default. Cuts may benefit from the upper end (2.0-2.4 g/kg) to preserve lean mass under caloric deficit.
Fat: 0.6 to 1.0 g/kg body weight
Helms 2014 contest preparation review identified 0.5 g/kg as the practical floor below which sex hormones suppress noticeably in lean populations. The recommended range for general physique work is 0.7-1.0 g/kg, allowing both fat-soluble vitamin absorption and hormonal stability. Athletes training for endurance can go higher (up to 1.5 g/kg) if they prefer fat over carbs as fuel.
Carbs: whatever’s left
Carbohydrate need is mostly a function of training volume, not body composition. A high-volume resistance lifter or an endurance athlete benefits from carbs in the 4-7 g/kg range. A sedentary adult on a fat-loss phase can run lower (3-4 g/kg). The body-weight-anchored approach puts carbs in residual position because that matches their role: training fuel that scales with workload.
Worked example
A 75 kg lifter at TDEE 2,800 kcal, in a moderate cut (−20%), choosing 2.0 g/kg protein and 0.8 g/kg fat:
Cut calories = 2,800 × 0.80 = 2,240 kcal
Protein = 75 × 2.0 = 150 g = 600 kcal (27% of total)
Fat = 75 × 0.8 = 60 g = 540 kcal (24% of total)
Carbs = 2,240 − 600 − 540 = 1,100 kcal = 275 g (49% of total)
The split lands at roughly 27/24/49, protein/fat/carbs. That’s a typical “training-supportive cut” macro distribution. It preserves muscle (high protein), keeps hormones in range (sufficient fat), and leaves enough carbs for hard sessions in the gym (moderate-to-high carb).
If the lifter pushes fat up to 1.0 g/kg:
Fat = 75 × 1.0 = 75 g = 675 kcal (30% of total)
Carbs = 2,240 − 600 − 675 = 965 kcal = 241 g (43% of total)
The protein-fat anchors don’t change. Carbs absorb the difference. Same approach scales to a surplus phase: bump TDEE multiplier to 1.10, the residual goes into carbs.
What this calculator doesn’t do
It doesn’t:
- Distribute macros across meals (that’s a separate logging exercise, Coach Sheet has a Nutrition tab for it, but most coaches use MyFitnessPal alongside)
- Time carbs around training (research shows that matters less than total daily intake)
- Adjust for body composition (a lean athlete may use higher protein to lean mass; very obese populations may use leaner-mass-based protein instead of body-weight-based)
- Recommend specific foods (those decisions belong to the client and a registered dietitian if pathology is involved)
Where it fits in a coaching workflow
A typical onboarding produces three numbers in 30 seconds: TDEE from the TDEE calculator, goal weight trajectory from the energy balance projection, and macro split from this calculator. The client gets one note: “aim for 150g protein, 60g fat, 275g carbs daily, this should land you at about 0.5 kg/week loss”. Adjust monthly based on the weight trend, not weekly. This is the simplest viable working approach for most coaching cases that aren’t contest prep.
Sources
- [1]
- [2]
- [3]
- [4]