Calculadora de Calorías de Recetas — Macros de tu Comida Casera

🍳 Calculadora de Calorías de Recetas — Calcula los Macros de Cualquier Comida Casera

Usa esta calculadora de calorías de recetas gratuita para contar al instante las calorías, proteínas, carbohidratos y grasas de cualquier plato casero. Solo agrega tus ingredientes, define tus porciones y obtén un desglose nutricional completo — sin necesidad de apps. Nunca fue tan fácil llevar el registro de las calorías de comidas caseras: busca entre más de 150 ingredientes, visualiza los totales de macros en tiempo real y guarda tus recetas favoritas para la próxima vez.

🥗 Agregar Ingredientes
Escribe para buscar ingredientes arriba y luego haz clic en un resultado para seleccionarlo.

📊 Lista de Ingredientes
🥘 ¡Agrega tu primer ingrediente arriba para comenzar!
Mi Receta
Receta completa
Calorías
Proteínas
Carbohidratos
Grasas
Distribución de macros (por calorías)
Proteínas 0% Carbohidratos 0% Grasas 0%
Preguntas Frecuentes
Para calcular las calorías de una receta casera, agrega cada ingrediente con su peso o volumen exacto en esta calculadora de calorías de recetas. La herramienta convierte cada cantidad a gramos, consulta la densidad calórica por cada 100 g y suma todo automáticamente. Para obtener el resultado más preciso, pesa los ingredientes sólidos en una báscula de cocina en lugar de usar medidas de volumen como tazas. Una vez que hayas agregado todos los ingredientes, divide por el número de porciones para obtener las calorías por porción de tu comida casera.
Esta calculadora de nutrición de recetas usa los valores nutricionales promedio del USDA para cada ingrediente, por lo que los resultados son una estimación cercana — generalmente dentro del 5–10% de los valores medidos en laboratorio. La precisión depende principalmente de qué tan exactamente midas las cantidades. Pesar en gramos da los resultados más ajustados. Factores como el método de cocción (hervir puede lixiviar minerales, asar concentra las calorías) y la marca del ingrediente pueden introducir pequeñas variaciones, pero para el seguimiento diario de comidas y el conteo de macros, esta herramienta es más que suficiente.
Para contar los macros de una comida para meal prep, construye tu receta completa en este contador de calorías para meal prep y luego define el "número de porciones" según la cantidad de recipientes en los que vas a dividir la preparación. La herramienta muestra al instante las calorías, proteínas, carbohidratos y grasas por porción. Guarda la receta en tu navegador para poder cargarla la próxima semana sin tener que volver a ingresar todo. Para macros consistentes, pesa tu preparación completa antes de dividirla y divide por el peso total por recipiente.
Las calorías de la comida casera difieren de las estimaciones de restaurantes porque los restaurantes suelen usar grasas de cocción con mayor contenido graso, porciones más grandes y salsas de la casa cuya composición exacta se desconoce. Un "bowl de pollo con arroz" de restaurante puede incluir 3–4 cucharadas de aceite para cocinar en wok y una salsa azucarada que agrega más de 200 calorías ocultas en comparación con la versión casera. Usar una calculadora de calorías para cocinar tus propias comidas te da control total: sabes exactamente qué ingredientes entran, lo que facilita mucho alcanzar un objetivo de macros o un déficit calórico.
Una calculadora de calorías para cocinar te ayuda a perder peso al hacer visible el coste calórico de cada ingrediente antes de comer. La investigación demuestra de forma consistente que las personas que registran las calorías de sus comidas caseras pierden significativamente más peso que quienes estiman. Con esta herramienta puedes experimentar — cambiar mantequilla por spray de aceite de oliva, reducir la pasta y agregar más verduras — y ver al instante cómo cada cambio afecta el total de calorías y la proporción de macros. Combínala con nuestra Calculadora de Ingesta de Calorías para establecer tu objetivo diario y saber exactamente dónde encaja tu comida.
` ).join(''); resultsEl._matches = matches; activeIdx = -1; resultsEl.classList.add('rcc-open'); } function closeResults() { resultsEl.classList.remove('rcc-open'); resultsEl.innerHTML = ''; activeIdx = -1; } searchEl.addEventListener('input', () => { selectedIngredient = null; renderSearch(searchEl.value); }); searchEl.addEventListener('keydown', e => { const items = resultsEl.querySelectorAll('.rcc-search-item'); if (!items.length) return; if (e.key === 'ArrowDown') { e.preventDefault(); activeIdx = Math.min(activeIdx+1, items.length-1); highlightItem(items); } else if (e.key === 'ArrowUp') { e.preventDefault(); activeIdx = Math.max(activeIdx-1, 0); highlightItem(items); } else if (e.key === 'Enter' && activeIdx >= 0) { e.preventDefault(); items[activeIdx].click(); } else if (e.key === 'Escape') closeResults(); }); function highlightItem(items) { items.forEach((it, i) => it.classList.toggle('rcc-active', i === activeIdx)); if (activeIdx >= 0) items[activeIdx].scrollIntoView({block:'nearest'}); } resultsEl.addEventListener('mousedown', e => { const item = e.target.closest('.rcc-search-item'); if (!item) return; const matches = resultsEl._matches; const idx = parseInt(item.dataset.idx); selectedIngredient = matches[idx]; searchEl.value = selectedIngredient.name; closeResults(); }); document.addEventListener('click', e => { if (!e.target.closest('.rcc-search-wrap')) closeResults(); }); /* ===================== ADD INGREDIENT ===================== */ addBtn.addEventListener('click', addIngredient); function addIngredient() { if (!selectedIngredient) { // try exact match const q = searchEl.value.trim().toLowerCase(); const exact = DB.find(d => d.name.toLowerCase() === q); if (exact) selectedIngredient = exact; else { showToast('Por favor selecciona un ingrediente de la lista 🔍'); searchEl.focus(); return; } } const qty = parseFloat(qtyEl.value); if (!qty || qty <= 0) { showToast('Ingresa una cantidad válida'); qtyEl.focus(); return; } const unit = unitEl.value; const grams = toGrams(qty, unit, selectedIngredient); const factor = grams / 100; ingredients.push({ id: nextId++, ingredient: selectedIngredient, qty, unit, grams, cal: selectedIngredient.cal * factor, pro: selectedIngredient.pro * factor, carb: selectedIngredient.carb * factor, fat: selectedIngredient.fat * factor }); searchEl.value = ''; selectedIngredient = null; qtyEl.value = 100; render(); } /* ===================== REMOVE ===================== */ listEl.addEventListener('click', e => { const btn = e.target.closest('.rcc-ing-remove'); if (!btn) return; const id = parseInt(btn.dataset.id); ingredients = ingredients.filter(i => i.id !== id); render(); }); /* ===================== RENDER ===================== */ function render() { const servings = Math.max(1, parseInt(servingsEl.value) || 1); const totals = ingredients.reduce((acc, i) => { acc.cal += i.cal; acc.pro += i.pro; acc.carb += i.carb; acc.fat += i.fat; return acc; }, {cal:0, pro:0, carb:0, fat:0}); // list if (ingredients.length === 0) { listEl.innerHTML = ''; listEl.appendChild(emptyEl); emptyEl.style.display = ''; pillsEl.style.display = 'none'; resultsDiv.classList.remove('rcc-visible'); return; } emptyEl.style.display = 'none'; listEl.innerHTML = ingredients.map(i => `
${i.ingredient.name} ${i.qty} ${i.unit} ${Math.round(i.cal)} kcal
`).join(''); // pills pillsEl.style.display = 'flex'; document.getElementById('rcc-total-cal').textContent = Math.round(totals.cal); document.getElementById('rcc-total-pro').textContent = Math.round(totals.pro)+'g'; document.getElementById('rcc-total-carb').textContent = Math.round(totals.carb)+'g'; document.getElementById('rcc-total-fat').textContent = Math.round(totals.fat)+'g'; // results card resultsDiv.classList.add('rcc-visible'); const name = recipeNameEl.value.trim() || 'Mi Receta'; document.getElementById('rcc-res-name').textContent = '🍳 ' + name; document.getElementById('rcc-res-sub').textContent = `Receta completa • ${ingredients.length} ingrediente${ingredients.length!==1?'s':''}`; document.getElementById('rcc-res-cal').textContent = Math.round(totals.cal) + ' kcal'; document.getElementById('rcc-res-pro').textContent = Math.round(totals.pro) + 'g'; document.getElementById('rcc-res-carb').textContent = Math.round(totals.carb) + 'g'; document.getElementById('rcc-res-fat').textContent = Math.round(totals.fat) + 'g'; // per serving const snote = document.getElementById('rcc-serving-note'); if (servings > 1) { snote.style.display = ''; snote.innerHTML = `Por porción (÷${servings}): ${Math.round(totals.cal/servings)} kcal | Proteínas: ${Math.round(totals.pro/servings)}g | Carbohidratos: ${Math.round(totals.carb/servings)}g | Grasas: ${Math.round(totals.fat/servings)}g`; } else { snote.style.display = 'none'; } // macro bar const calFromPro = totals.pro * 4; const calFromCarb = totals.carb * 4; const calFromFat = totals.fat * 9; const calTotal = calFromPro + calFromCarb + calFromFat || 1; const pPct = Math.round(calFromPro / calTotal * 100); const cPct = Math.round(calFromCarb / calTotal * 100); const fPct = 100 - pPct - cPct; document.getElementById('rcc-bar-p').style.width = pPct + '%'; document.getElementById('rcc-bar-c').style.width = cPct + '%'; document.getElementById('rcc-bar-f').style.width = Math.max(0,fPct) + '%'; document.getElementById('rcc-bar-p-pct').textContent = pPct + '%'; document.getElementById('rcc-bar-c-pct').textContent = cPct + '%'; document.getElementById('rcc-bar-f-pct').textContent = Math.max(0,fPct) + '%'; } recipeNameEl.addEventListener('input', render); servingsEl.addEventListener('input', render); /* ===================== SAVE / CLEAR ===================== */ document.getElementById('rcc-save-btn').addEventListener('click', () => { if (!ingredients.length) { showToast('¡Agrega algunos ingredientes primero! 🥘'); return; } const name = recipeNameEl.value.trim() || 'Mi Receta'; const totals = calcTotals(); const saved = getSaved(); saved.unshift({ id: Date.now(), name, cal: Math.round(totals.cal), pro: Math.round(totals.pro), carb: Math.round(totals.carb), fat: Math.round(totals.fat), date: new Date().toLocaleDateString(), ingredients: ingredients.map(i=>({name:i.ingredient.name,qty:i.qty,unit:i.unit})) }); localStorage.setItem('rcc_saved', JSON.stringify(saved)); showToast('💾 ¡Receta guardada!'); renderSaved(); }); document.getElementById('rcc-clear-btn').addEventListener('click', () => { if (!confirm('¿Limpiar todos los ingredientes?')) return; ingredients = []; recipeNameEl.value = ''; render(); renderSaved(); }); /* ===================== SHARE ===================== */ document.getElementById('rcc-share-btn').addEventListener('click', () => { const totals = calcTotals(); const name = recipeNameEl.value.trim() || 'mi receta'; const text = `¡Calculé que mi receta tiene ${Math.round(totals.cal)} calorías con la Calculadora de FindHealthTips.com! 🍳 👉 https://findhealthtips.com/es/recipe-calorie-calculator/`; if (navigator.clipboard) navigator.clipboard.writeText(text); window.open('https://twitter.com/intent/tweet?text=' + encodeURIComponent(text), '_blank'); showToast('🐦 ¡Abriendo Twitter y copiando al portapapeles!'); }); /* ===================== SAVED RECIPES ===================== */ function getSaved() { try { return JSON.parse(localStorage.getItem('rcc_saved')) || []; } catch { return []; } } function renderSaved() { const saved = getSaved(); if (!saved.length) { savedSection.style.display = 'none'; return; } savedSection.style.display = ''; savedListEl.innerHTML = saved.map(s => `
🍳 ${s.name}
${s.cal} kcal · P: ${s.pro}g C: ${s.carb}g G: ${s.fat}g · Guardada ${s.date}
`).join(''); } savedListEl.addEventListener('click', e => { const loadBtn = e.target.closest('.rcc-saved-load'); const delBtn = e.target.closest('.rcc-saved-del'); if (loadBtn) { const id = parseInt(loadBtn.dataset.id); const saved = getSaved(); const rec = saved.find(s => s.id === id); if (!rec) return; ingredients = []; nextId = 1; rec.ingredients.forEach(ri => { const ing = DB.find(d => d.name === ri.name); if (!ing) return; const grams = toGrams(ri.qty, ri.unit, ing); const f = grams/100; ingredients.push({id:nextId++, ingredient:ing, qty:ri.qty, unit:ri.unit, grams, cal:ing.cal*f, pro:ing.pro*f, carb:ing.carb*f, fat:ing.fat*f}); }); recipeNameEl.value = rec.name; render(); showToast('📂 ¡Receta cargada!'); } if (delBtn) { const id = parseInt(delBtn.dataset.id); const saved = getSaved().filter(s => s.id !== id); localStorage.setItem('rcc_saved', JSON.stringify(saved)); renderSaved(); } }); /* ===================== HELPERS ===================== */ function calcTotals() { return ingredients.reduce((acc, i) => { acc.cal+=i.cal; acc.pro+=i.pro; acc.carb+=i.carb; acc.fat+=i.fat; return acc; }, {cal:0,pro:0,carb:0,fat:0}); } let toastTimer; function showToast(msg) { toastEl.textContent = msg; toastEl.style.display = 'block'; clearTimeout(toastTimer); toastTimer = setTimeout(() => { toastEl.style.display = 'none'; }, 2800); } /* ===================== FAQ ===================== */ document.querySelectorAll('.rcc-faq-q').forEach(btn => { btn.addEventListener('click', () => { const key = btn.dataset.faq; const answer = document.querySelector(`.rcc-faq-a[data-faq="${key}"]`); const isOpen = btn.classList.contains('rcc-open'); // close all document.querySelectorAll('.rcc-faq-q').forEach(b => b.classList.remove('rcc-open')); document.querySelectorAll('.rcc-faq-a').forEach(a => a.classList.remove('rcc-open')); if (!isOpen) { btn.classList.add('rcc-open'); answer.classList.add('rcc-open'); } }); }); /* ===================== INIT ===================== */ renderSaved(); render(); })(); function rccSocialShare(platform) { var text = (typeof rccShareText !== "undefined" && rccShareText) ? rccShareText : document.title + " — " + window.location.href; var url = encodeURIComponent(window.location.href); var enc = encodeURIComponent(text); var links = { wa: "https://wa.me/?text=" + enc, fb: "https://www.facebook.com/sharer/sharer.php?u=" + url, tw: "https://twitter.com/intent/tweet?text=" + enc, li: "https://www.linkedin.com/shareArticle?mini=true&url=" + url + "&title=" + encodeURIComponent(document.title) }; if (platform === "copy") { var btn = document.getElementById("rcc-copy-btn"); if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(text).then(function(){ if(btn){ btn.textContent = "✅ ¡Copiado!"; btn.classList.add("rcc-sbtn-copied"); setTimeout(function(){ btn.textContent = "📋 Copiar"; btn.classList.remove("rcc-sbtn-copied"); }, 2000); } }); } else { var ta = document.createElement("textarea"); ta.value = text; ta.style.cssText = "position:fixed;opacity:0"; document.body.appendChild(ta); ta.select(); document.execCommand("copy"); document.body.removeChild(ta); if(btn){ btn.textContent = "✅ ¡Copiado!"; btn.classList.add("rcc-sbtn-copied"); setTimeout(function(){ btn.textContent = "📋 Copiar"; btn.classList.remove("rcc-sbtn-copied"); }, 2000); } } return; } if (links[platform]) window.open(links[platform], "_blank", "width=600,height=450,noopener"); } window.rccSocialShare = rccSocialShare;