Calcolatore macronutrienti
Divida un obiettivo calorico giornaliero tra proteine, carboidrati e grassi: 2000 kcal con 30/40/30 danno 150 g di proteine, 200 g di carboidrati e 66,7 g di grassi. Scelga le sue percentuali, purché la somma faccia 100. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Calorie giornaliere
- 2000
- Proteine (%)
- 30
- Carboidrati (%)
- 40
- Grassi (%)
- 30
- Proteine (g)
- 150
Ripartisce un totale calorico giornaliero in proteine, carboidrati e grassi, restituendo grammi e kcal di ciascuno a partire da input percentuali, usando 4 kcal/g per proteine e carboidrati e 9 kcal/g per i grassi.
Dalle calorie ai grammi in due passaggi
Un piano di macro parte da un solo numero, il suo obiettivo calorico giornaliero, e da tre quote che indicano quanto arriva da proteine, carboidrati e grassi. Prima ogni quota viene applicata al totale: con 2000 kcal e la ripartizione predefinita di 30, 40 e 30%, si ottengono 600 kcal di proteine, 800 di carboidrati e 600 di grassi. Poi l'energia diventa peso con i fattori consueti di 4 kcal per grammo per proteine e carboidrati e 9 kcal per grammo per i grassi. Il risultato è 150 g di proteine, 200 g di carboidrati e 66,7 g di grassi.
Gli errori più comuni nel dividere i macro
Dividere tutte le quote per 4 è l'errore classico: i grassi forniscono più del doppio dell'energia per grammo, quindi trattarli come proteine gonfia i grammi. Un altro errore sono le percentuali che non sommano esattamente 100; qui vengono rifiutate invece di essere allungate in silenzio, così un refuso non si nasconde nel piano. Ogni quota deve stare tra 0 e 100 e l'obiettivo calorico deve essere maggiore di zero. I risultati sono arrotondati a un decimale per impostazione predefinita, e lei può sceglierne da zero a due.
Come viene calcolata la ripartizione
Con i valori predefiniti di 30/40/30 su un obiettivo di 2000 kcal questo produce 600, 800 e 600 kcal, che diventano 150 g di proteine, 200 g di carboidrati e 66.7 g di grassi, corrispondenti esattamente all'esempio pubblicato. La risposta riporta il totale calorico e le tre percentuali, così che un chiamante possa memorizzare l'intero piano dei macronutrienti da un'unica richiesta senza ricalcolare nulla lato client.
Casi d'uso
App di nutrizione e dieta
Trasformi l'obiettivo calorico di un utente e il rapporto di macronutrienti scelto in un piano giornaliero grammo per grammo senza portare la formula nel client.
Domande frequenti
Cosa succede se invio solo calories?
Usa la ripartizione predefinita del 30% di proteine, 40% di carboidrati e 30% di grassi, quindi un singolo valore calories restituisce una suddivisione completa dei macronutrienti.
Perché i grammi per quattro non corrispondono esattamente alle kcal?
Grammi e kcal vengono arrotondati ciascuno in modo indipendente dal valore di energia non arrotondato, quindi le loro forme arrotondate possono differire leggermente, per scelta progettuale.
Come si calcolano i grammi di proteine dalle calorie?
Moltiplichi l'obiettivo calorico per la quota di proteine e divida per 4, l'energia di ogni grammo. Con 2000 kcal e il 30% di proteine si ottengono 600 kcal, cioè 150 g di proteine al giorno.
Perché i grassi si dividono per 9 e non per 4?
Perché ogni grammo di grassi fornisce 9 kcal, mentre proteine e carboidrati ne forniscono 4. Per questo 600 kcal di grassi sono solo 66,7 g, contro 150 g per la stessa energia da proteine.
Cosa succede se le percentuali non fanno 100?
La ripartizione viene rifiutata invece di essere riadattata in silenzio. Una combinazione come 30, 40 e 29 non passa, quindi corregga una delle quote finché le tre non sommano esattamente 100 e riprovi.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"calories": 2000
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.macro_calculator",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Come viene calcolata la ripartizione
Moltiplica calories per ogni percentuale su 100 per ottenere protein_kcal, carb_kcal e fat_kcal, poi converte l'energia in massa usando i fattori di Atwater: grammi = kcal / 4 per le proteine, kcal / 4 per i carboidrati e kcal / 9 per i grassi.
Percentuali, valori predefiniti e la regola della somma a 100
Le tre quote devono sommare a 100 entro una tolleranza di 1e-9; in caso contrario, la chiamata fallisce con il messaggio secondo cui le percentuali devono sommare a 100. Quella tolleranza è deliberatamente stretta, così 30/40/30 passa ma 30/40/29 viene respinto anziché riscalato in silenzio. calories stesso deve essere un numero finito strettamente maggiore di zero. protein_percent vale 30 per impostazione predefinita, carb_percent 40 e fat_percent 30, quindi passando solo calories si ottiene una ripartizione equilibrata. Ogni percentuale deve essere un numero finito tra 0 e 100 inclusi, controllato campo per campo, e un valore fuori intervallo solleva invalid_input che nomina quel campo.
Arrotondamento e i sei output numerici
Il parametro facoltativo decimals vale 1 per impostazione predefinita e deve essere un intero da 0 a 2; qualsiasi altro valore solleva invalid_input. Poiché grammi e kcal vengono arrotondati separatamente, protein_g per 4 non ricaverà sempre il protein_kcal arrotondato; entrambe le cifre derivano dal valore di energia non arrotondato. Dopo l'arrotondamento, ogni campo numerico viene ricontrollato per la finitezza e un risultato non finito solleva invalid_input, così che l'output sia sempre un oggetto JSON pulito e completamente valorizzato con tutti e sei i numeri dei macronutrienti presenti.
Casi di integrazione
Strumenti di meal-prep e coaching
Generi obiettivi di proteine, carboidrati e grassi per molti clienti in una sola volta tramite l'API, ciascuno con la propria ripartizione percentuale.
Contenuti e calcolatori per il fitness
Incorpori il widget gratuito così che i visitatori possano sperimentare con rapporti come 40/40/20 e vedere i grammi aggiornarsi in modo deterministico.
Domande tecniche
Quali fattori di caloria per grammo vengono usati?
4 kcal per grammo per proteine e carboidrati e 9 kcal per grammo per i grassi, la conversione standard di Atwater applicata in lib.js.
Le percentuali devono sommare a 100?
Sì. protein_percent, carb_percent e fat_percent devono sommare a 100 entro 1e-9, altrimenti la chiamata restituisce un errore invalid_input.
È gratuito e quanto costa l'API?
Il widget del browser è gratuito (tier A) ed esegue lo stesso motore; le chiamate API vengono fatturate per ogni richiesta riuscita a partire da $0.002.