Pet food portion calculator
The pet food daily portion calculator estimates how much a healthy adult dog or cat may need each day based on body weight, species, and activity level.
Run — free
It first estimates daily energy needs, then converts those calories into grams and cups using a clearly stated reference food density. Because real foods differ in calories per gram and cup, the result is a practical starting point rather than a prescription. Compare it with the package feeding chart, monitor body condition, and ask a veterinarian about growing, pregnant, nursing, elderly, underweight, overweight, or medically managed pets.
Choose the weight and activity category carefully
Enter the pet's current body weight in kilograms, not an old weight from a previous appointment and not an ideal weight unless a veterinarian has specifically asked you to feed toward that target. Select dog or cat because the calculator applies different adult maintenance factors and reference food densities to each species. Activity level is intentionally presented as three broad categories. Low suits a sedentary adult, an indoor pet with little play, or an animal whose daily movement is limited. Normal suits a typical healthy adult with regular walks or play. High suits an adult that consistently performs substantially more exercise, work, or vigorous play. Choose the category that reflects an ordinary week rather than one unusually active day. These descriptions cannot capture neuter status, climate, breed, age, temperament, or individual metabolism, so observe the pet after using the estimate. If ribs become harder to feel, waist definition changes, or weight trends unexpectedly, reassess the portion instead of assuming that the selected activity label must remain correct. A kitchen scale provides a more repeatable input and serving method than visual guesses.
Understand the energy and portion calculation
The calculation begins with a common resting energy requirement equation: seventy multiplied by body weight in kilograms raised to the three-quarter power. This produces an estimated number of kilocalories needed at rest. The calculator then applies a species-specific activity factor. Dogs use factors of 1.2 for low, 1.6 for normal, and 2.0 for high activity. Cats use 1.0, 1.2, and 1.4 respectively. To express the result as food, the tool uses reference dry-food densities of 3.6 kilocalories per gram and 100 grams per cup for dogs, or 4.0 kilocalories per gram and 110 grams per cup for cats. Those reference figures make the conversion transparent and reproducible, but they are not claims about every product. Wet food, air-dried food, prescription diets, and calorie-dense kibble can differ greatly. For a more accurate real-world serving, keep the recommended daily energy and divide it by the kilocalories per gram stated by the manufacturer. If the label gives kilocalories per cup, divide daily energy by that number to obtain cups directly.
Use the estimate as a monitored starting point
Treat the returned grams and cups as a starting daily total, then divide that total among the meals the pet normally receives. Include training treats, chews, table food, toppers, and calories used to give medication; otherwise the measured bowl portion may look correct while total intake remains too high. Measuring in grams is usually more consistent because cup shape, kibble size, settling, and scooping technique introduce variation. Review the pet's weight and body condition regularly under similar conditions. Small portion adjustments may be appropriate when a stable adult consistently gains or loses weight, but sudden change, appetite loss, excessive hunger, vomiting, diarrhea, or altered thirst deserves veterinary attention rather than repeated calculator adjustments. Puppies, kittens, pregnant or nursing animals, working athletes, and pets receiving therapeutic diets have needs outside this adult-maintenance model. A veterinarian can set an appropriate target for those cases and for intentional weight loss or gain. The API costs $0.002 per request, making it easy to document repeat estimates, but automation does not replace observation, package-specific calorie data, or professional guidance.
What you can do with it
Set a new pet's starting portion
Estimate an initial daily amount for a healthy adult dog or cat while transitioning to a measured feeding routine.
Compare activity scenarios
See how low, normal, and high activity assumptions change the daily calorie target and reference portion.
Convert calorie needs into servings
Use the returned energy target with a food label's calorie density to calculate a product-specific gram or cup amount.
FAQ
What does the calculator cost?
The API price is $0.002 per request, and the calculator can also run free in the browser.
Why might the package feeding chart show a different amount?
Foods have different calorie densities, and manufacturers may use different maintenance assumptions. Use the product's calorie information and the pet's observed body condition to refine the estimate.
Are grams or cups more accurate?
Grams measured on a kitchen scale are generally more repeatable. Cups vary with kibble shape, settling, scoop size, and measuring technique.
Does the result include treats?
The result is a total daily energy estimate. Treats, chews, toppers, table food, and food used for medication should fit within that total unless a veterinarian advises otherwise.
Can I use this for a puppy or kitten?
No. Growing animals need life-stage-specific feeding guidance. Use an appropriate growth chart and consult a veterinarian.
When should I ask a veterinarian before changing food portions?
Seek professional guidance for pregnancy, nursing, growth, intentional weight change, illness, prescription diets, unexplained weight change, or significant appetite and digestive symptoms.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/life/pet-food-portion \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight_kg":18,"species":"dog","activity_level":"normal"}'const res = await fetch("https://api.kit.forhosting.com/life/pet-food-portion", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight_kg": 18,
"species": "dog",
"activity_level": "normal"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/life/pet-food-portion",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight_kg": 18,
"species": "dog",
"activity_level": "normal"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/life/pet-food-portion", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight_kg":18,"species":"dog","activity_level":"normal"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight_kg":18,"species":"dog","activity_level":"normal"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/life/pet-food-portion", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"weight_kg": 18,
"species": "dog",
"activity_level": "normal"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "life.pet_food_portion",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |