Sous-vide chicken time by thickness calculator
This sous-vide chicken time calculator turns the measured thickness of the thickest piece into a consistent heating-time estimate.
Run — free
Enter millimetres and the calculator selects the next suitable band in a fixed lookup table, returning both minutes and decimal hours. It is designed for repeatable planning rather than live temperature sensing or food-safety certification. The estimate covers heating time only, so any recipe-specific pasteurization hold, finishing step, handling guidance, and temperature choice must be considered separately.
Measure the thickest part before choosing a time
Place the uncooked chicken on a clean surface and measure the thickest part of the piece you plan to bag. Use the largest measurement when a bag contains several pieces, because the thickest piece controls the heating estimate. Measure the actual vertical thickness rather than length, width, or total weight. If a breast tapers sharply, check more than one point and submit the largest value in millimetres. Pieces folded over one another behave like a thicker piece, so arrange them in a single layer before measuring and sealing. The calculator accepts any finite number greater than zero. A value such as 32 millimetres is assigned to the table band ending at 40 millimetres, which deliberately avoids understating the tabulated estimate. For a measurement exactly on a boundary, such as 40 millimetres, the matching 40-millimetre row is used. Consistent measuring is more useful than false precision, so rounding upward to the next whole millimetre is a practical choice when your ruler is difficult to read.
Understand the fixed-table result
The calculation is a ceiling lookup, not a physical simulation and not interpolation between two rows. The fixed bands end at 10, 20, 30, 40, 50, 60, 70, 80, and 90 millimetres, followed by one final band for larger positive measurements. Each band has a predetermined heating time. The algorithm scans the rows from smallest to largest and chooses the first maximum that is equal to or greater than the submitted thickness. It returns the original thickness, the selected table maximum, the time in minutes, the same time converted to decimal hours, and a method label. For the open-ended final band, the table-maximum field is omitted because no finite upper boundary exists. Since the table is fixed, identical inputs always produce identical outputs on the website and through the API. The result does not change with date, location, appliance brand, bath temperature, starting temperature, chicken cut, bone content, or bag arrangement; users must account for those factors outside this deliberately narrow estimator.
Use heating time as one part of a safe process
Treat the returned number as a planning estimate for heating, not as a declaration that poultry is pasteurized or safe to eat. Sous-vide safety depends on the relationship among core temperature, hold time, initial temperature, preparation, storage, and the needs of the people being served. Choose a bath temperature and any additional pasteurization hold from a trusted food-safety authority or a validated recipe, then add that hold when the chosen process requires it. Keep raw poultry separate from ready-to-eat food, wash hands and tools after contact, use intact food-safe bags, and avoid leaving chicken in uncontrolled temperature ranges. Bone-in pieces, rolled meat, stacked portions, frozen chicken, unusually large pieces, and equipment with poor circulation can require a different validated method. After cooking, serve promptly or chill according to authoritative guidance before refrigeration. The calculator intentionally does not ask for bath temperature because its contract is a simple thickness-to-table lookup. That simplicity makes automation predictable, but it also means the output should never replace a thermometer, a validated pasteurization schedule, or local public-health advice.
What you can do with it
Plan dinner preparation
Convert the thickest chicken measurement into a repeatable table-based heating estimate before setting the meal schedule.
Standardize kitchen worksheets
Use the same ceiling lookup across prep sheets so staff do not choose different time bands for identical thicknesses.
Automate recipe planning
Call the API to attach a deterministic heating-time estimate to portion records while keeping safety holds in a separate validated workflow.
FAQ
What does the calculator cost?
It runs free in the browser on this page, and an API request costs $0.002.
Does the result include pasteurization hold time?
No. It estimates heating time from a fixed thickness table only. Add any required hold time from a trusted, validated source.
Which thickness should I enter?
Enter the thickest part of the thickest chicken piece in the bag, measured in millimetres after arranging pieces in one layer.
What happens between table boundaries?
The calculator rounds up by selecting the first table band whose maximum is at least the submitted thickness. It does not interpolate.
Can I enter zero or a negative number?
No. Thickness must be a finite number greater than zero; zero, negative, missing, and non-numeric values return an invalid-input error.
Does bath temperature change the estimate?
This narrow calculator does not model bath temperature. Use its table result only within a recipe or process validated for your selected temperature.
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/cook/sousvide-chicken-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"thickness_mm":32}'const res = await fetch("https://api.kit.forhosting.com/cook/sousvide-chicken-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"thickness_mm": 32
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/sousvide-chicken-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"thickness_mm": 32
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/sousvide-chicken-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"thickness_mm":32}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"thickness_mm":32}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/sousvide-chicken-time", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"thickness_mm": 32
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.sousvide_chicken_time",
"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. |