NOCAP

Calorie Calculator

Your Personal Calorie Targets

Your meal plan
—

Get the Plan

Weight Loss Target

0

For steady, sustainable weight loss

Maintenance Level

0

To maintain current weight

Weight Gain Target

0

For muscle gain with training

/* Edit these links to point at each plan (or leave them all pointing at the same page). */ var PLAN_LINKS = { 1200: "#", 1500: "#", 1800: "#", 2100: "#", 2400: "#" }; function matchPlan(target) { if (target < 1350) return 1200; if (target < 1650) return 1500; if (target < 1950) return 1800; if (target < 2250) return 2100; return 2400; } function calculateTDEE() { const age = parseFloat(document.getElementById('age').value); const gender = document.getElementById('gender').value; const weightLbs = parseFloat(document.getElementById('weight').value); const feet = parseFloat(document.getElementById('feet').value); const inches = parseFloat(document.getElementById('inches').value); const activity = parseFloat(document.getElementById('activity').value); if (!age || !weightLbs || !feet) { alert('Please fill in all required fields'); return; } const weight = weightLbs * 0.453592; const height = ((feet * 12) + (inches || 0)) * 2.54; let bmr; if (gender === 'male') { bmr = (10 * weight) + (6.25 * height) - (5 * age) + 5; } else { bmr = (10 * weight) + (6.25 * height) - (5 * age) - 161; } const maintenance = Math.round(bmr * activity); /* Floor the deficit target at 1200 so the calculator never sends anyone below the lowest plan. */ const weightLoss = Math.max(Math.round(maintenance - 500), 1200); const weightGain = Math.round(maintenance + 500); document.getElementById('weight-loss').textContent = weightLoss + ' calories'; document.getElementById('maintenance').textContent = maintenance + ' calories'; document.getElementById('weight-gain').textContent = weightGain + ' calories'; /* Match them to the closest meal plan */ const plan = matchPlan(weightLoss); const diff = weightLoss - plan; document.getElementById('plan-name').textContent = 'The ' + plan.toLocaleString() + '-Calorie Plan'; document.getElementById('plan-why').textContent = 'Your weight loss target is ' + weightLoss.toLocaleString() + ' calories a day, so the ' + plan.toLocaleString() + '-calorie plan is your closest match. Use it exactly as written — the portions are already built to hit that number.'; let note = ''; if (plan === 2400 && diff > 150) { note = "You're above the highest plan. Follow the 2,400-calorie plan and add one extra snack from the swap list on days you're training hard."; } else if (diff >= 100) { note = "You're running a little above this plan, which just means a slightly bigger deficit. Add a piece of fruit or an extra serving of protein if you're hungry."; } else if (diff <= -100) { note = "You're running a little under this plan. Trim one snack or go lighter on the added fats and you're right on target."; } document.getElementById('plan-note').textContent = note; const cta = document.getElementById('plan-cta'); cta.textContent = 'Get the ' + plan.toLocaleString() + '-Calorie Plan'; cta.href = PLAN_LINKS[plan] || '#'; document.getElementById('result').style.display = 'block'; }

Watch the prep

These are the exact meals in the plan. Cook them once, eat all week, and portion in cups — no food scale.

Breakfast2 min

The Greek Yogurt Bowl

Two minutes, same bowl every morning. Use the yogurt, fruit, and granola amounts your tier calls for above.

Lunch & Dinner10 min

The 20-Minute Protein Bowl Prep

Ground turkey and chicken blend, rice, and vegetables. One cook session covers both meals for the week.

(function(){ var blocks = document.querySelectorAll(".video-block"); if (!blocks.length) return; var portal = document.createElement("div"); portal.id = "fsPortal"; document.body.appendChild(portal); var mark = document.createElement("div"); var current = null; function fsEl(){ return document.fullscreenElement || document.webkitFullscreenElement; } function label(block, on){ var b = block.querySelector(".fs-btn"); if (b) b.textContent = on ? "\u2715 Exit fullscreen" : "\u26F6 Fullscreen"; } function enter(block){ if (current) return; current = block; block.parentNode.insertBefore(mark, block); portal.appendChild(block); portal.classList.add("on"); document.documentElement.style.overflow = "hidden"; var req = portal.requestFullscreen || portal.webkitRequestFullscreen; if (req) { try { var p = req.call(portal); if (p && p.catch) p.catch(function(){}); } catch (e) {} } label(block, true); } function exit(){ if (!current) return; var block = current; current = null; if (fsEl()) { try { (document.exitFullscreen || document.webkitExitFullscreen).call(document); } catch (e) {} } portal.classList.remove("on"); if (mark.parentNode) { mark.parentNode.insertBefore(block, mark); mark.parentNode.removeChild(mark); } document.documentElement.style.overflow = ""; label(block, false); } Array.prototype.forEach.call(blocks, function(block){ var btn = block.querySelector(".fs-btn"); if (btn) btn.addEventListener("click", function(){ current ? exit() : enter(block); }); }); function onFsChange(){ if (!fsEl() && current) exit(); } document.addEventListener("fullscreenchange", onFsChange); document.addEventListener("webkitfullscreenchange", onFsChange); document.addEventListener("keydown", function(e){ if (e.key === "Escape" && current) exit(); }); })();