Calculadora de macros
Reparta un objetivo diario de calorías entre proteínas, carbohidratos y grasas: 2000 kcal con 30/40/30 dan 150 g de proteína, 200 g de carbohidratos y 66,7 g de grasa. Elija sus propios porcentajes, siempre que sumen 100. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Calorías diarias
- 2 000
- Proteína (%)
- 30
- Carbohidratos (%)
- 40
- Grasa (%)
- 30
- Proteína (g)
- 150
Reparte un total diario de calorías en proteínas, carbohidratos y grasas, devolviendo gramos y kcal de cada uno a partir de entradas en porcentaje, usando 4 kcal/g para proteínas y carbohidratos y 9 kcal/g para grasas.
De calorías a gramos en dos pasos
Un plan de macros parte de un número, su objetivo diario de calorías, y de tres porcentajes que indican cuánto procede de proteínas, carbohidratos y grasas. Primero, cada porcentaje se aplica al total: con 2000 kcal y el reparto por defecto de 30, 40 y 30 %, salen 600 kcal de proteína, 800 de carbohidratos y 600 de grasa. Después, la energía se convierte en peso con los factores habituales de 4 kcal por gramo para proteínas y carbohidratos y 9 kcal por gramo para la grasa. El resultado es 150 g de proteína, 200 g de carbohidratos y 66,7 g de grasa.
Errores frecuentes al repartir macros
Dividir todos los porcentajes entre 4 es el error clásico: la grasa aporta más del doble de energía por gramo, así que tratarla como proteína exagera los gramos. Otro error son los porcentajes que no suman exactamente 100; aquí se rechazan en lugar de estirarse en silencio, de modo que una errata no se esconde dentro del plan. Cada porcentaje debe estar entre 0 y 100 y el objetivo de calorías debe ser mayor que cero. Los resultados se redondean a un decimal por defecto, y puede elegir entre cero y dos decimales.
Cómo se calcula el reparto
Con los valores por defecto de 30/40/30 sobre un objetivo de 2000 kcal, esto da 600, 800 y 600 kcal, que se convierten en 150 g de proteínas, 200 g de carbohidratos y 66.7 g de grasas, coincidiendo exactamente con el ejemplo publicado. La respuesta reproduce el total de calorías y los tres porcentajes, de modo que quien llama puede almacenar el plan de macros completo desde una única solicitud sin recalcular nada en el cliente.
Qué puede hacer con ella
Aplicaciones de nutrición y dieta
Convierta el objetivo de calorías de un usuario y su proporción de macros elegida en un plan diario gramo a gramo sin llevar la fórmula al cliente.
Preguntas frecuentes
¿Qué ocurre si solo envío calories?
Usa el reparto por defecto del 30 % de proteínas, el 40 % de carbohidratos y el 30 % de grasas, de modo que un único valor de calories devuelve un desglose completo de macros.
¿Por qué los gramos por cuatro no coinciden exactamente con las kcal?
Los gramos y las kcal se redondean cada uno de forma independiente a partir del valor de energía sin redondear, de modo que sus formas redondeadas pueden diferir ligeramente por diseño.
¿Cómo calculo los gramos de proteína a partir de las calorías?
Multiplique el objetivo de calorías por el porcentaje de proteína y divida entre 4, la energía de cada gramo. Con 2000 kcal y un 30 % de proteína son 600 kcal, es decir, 150 g de proteína al día.
¿Por qué la grasa se divide entre 9 y no entre 4?
Porque cada gramo de grasa aporta 9 kcal, mientras que la proteína y los carbohidratos aportan 4. Por eso 600 kcal de grasa son solo 66,7 g, frente a 150 g para la misma energía en proteína.
¿Qué pasa si mis porcentajes no suman 100?
El reparto se rechaza en lugar de reajustarse en silencio. Una combinación como 30, 40 y 29 falla, así que corrija uno de los porcentajes hasta que los tres sumen exactamente 100 y vuelva a intentarlo.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/macro-calculator \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"calories":2000}'const res = await fetch("https://api.kit.forhosting.com/dev/macro-calculator", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"calories": 2000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/macro-calculator",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"calories": 2000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/macro-calculator", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"calories":2000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"calories":2000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/macro-calculator", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"calories": 2000
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.macro_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Cómo se calcula el reparto
Multiplica calories por cada porcentaje sobre 100 para obtener protein_kcal, carb_kcal y fat_kcal, y luego convierte la energía en masa usando los factores de Atwater: gramos = kcal / 4 para las proteínas, kcal / 4 para los carbohidratos y kcal / 9 para las grasas.
Porcentajes, valores por defecto y la regla de sumar 100
Las tres porciones deben sumar 100 con una tolerancia de 1e-9; si no lo hacen, la llamada falla con el mensaje de que los porcentajes deben sumar 100. Esa tolerancia es deliberadamente estrecha, de modo que 30/40/30 pasa pero 30/40/29 se rechaza en lugar de reescalarse en silencio. calories en sí debe ser un número finito estrictamente mayor que cero. protein_percent es 30 por defecto, carb_percent 40 y fat_percent 30, de modo que pasar solo calories devuelve un reparto equilibrado. Cada porcentaje debe ser un número finito entre 0 y 100 inclusive, comprobado campo a campo, y un valor fuera de rango lanza invalid_input nombrando ese campo.
Redondeo y las seis salidas numéricas
El parámetro opcional decimals tiene un valor por defecto de 1 y debe ser un entero de 0 a 2; cualquier otra cosa lanza invalid_input. Como los gramos y las kcal se redondean por separado, protein_g por 4 no siempre volverá a dar el protein_kcal redondeado; ambas cifras proceden del valor de energía sin redondear. Tras el redondeo, cada campo numérico se vuelve a comprobar por finitud y un resultado no finito lanza invalid_input, de modo que la salida es siempre un objeto JSON limpio y completo con los seis números de macros presentes.
Casos de integración
Herramientas de preparación de comidas y coaching
Genere objetivos de proteínas, carbohidratos y grasas para muchos clientes a la vez mediante la API, cada uno con su propio reparto por porcentaje.
Contenido y calculadoras de fitness
Incruste el widget gratuito para que los visitantes experimenten con proporciones como 40/40/20 y vean actualizarse los gramos de forma determinista.
Preguntas técnicas
¿Qué factores de calorías por gramo se usan?
4 kcal por gramo para proteínas y carbohidratos y 9 kcal por gramo para grasas, la conversión estándar de Atwater aplicada en lib.js.
¿Los porcentajes tienen que sumar 100?
Sí. protein_percent, carb_percent y fat_percent deben sumar 100 con una tolerancia de 1e-9 o la llamada devuelve un error invalid_input.
¿Es gratuito y cuánto cuesta la API?
El widget del navegador es gratuito (tier A) y ejecuta el mismo núcleo; las llamadas a la API se facturan por solicitud correcta desde $0.002.