Cooking start time calculator from serve time and step durations
The cooking start time calculator works backward from the moment food should be served.
Run — free
Enter a target time in 24-hour format and list the duration of every preparation, cooking, resting, or finishing step that belongs in the schedule. The calculator adds those minutes and subtracts the total from the serve time, returning an exact start time and a day offset when preparation must begin before the serving day. It is deterministic, quick, and useful for both one-off meals and repeatable kitchen workflows.
Build a complete duration list
Start by writing down every step that occupies time before service, not only the minutes when food is inside an oven or on a burner. Preparation, preheating, simmering, baking, resting, cooling, assembling, and final garnishing can all affect the true start time. Enter each duration as a positive whole number of minutes. The order of the numbers does not change the arithmetic because the calculator uses their sum, but keeping them in workflow order makes the input easier to review. Do not combine simultaneous tasks as though they were sequential unless one genuinely has to finish before the next starts. For example, if a sauce simmers while vegetables roast, a simple sum may overstate the required lead time. In that situation, first reduce your plan to the critical sequence that controls when the whole meal can be ready. The result is only as useful as this duration list, so include deliberate buffers when punctual service matters, especially for unfamiliar recipes or equipment.
Read the calculated start and day offset
The result reports the target serve time, calculated start time, total duration, number of listed steps, and a day offset. A day offset of zero means cooking begins on the same calendar day as service. A value of minus one means the start belongs to the previous day, while minus two means two days earlier. This explicit offset removes the ambiguity that appears when subtracting a long preparation from an early serve time. Suppose dinner is served at 19:30 and the steps total 65 minutes: the returned start is 18:25 with an offset of zero. If brunch is served at 10:00 after a fourteen-hour proof and preparation sequence, the clock time may fall on the evening before, and the negative offset states that clearly. Times use a strict 24-hour HH:MM clock, so 07:05 and 19:05 are distinct and unambiguous. The calculation does not use a date, time zone, daylight-saving rule, or the current clock.
Use the result in a practical kitchen plan
Treat the calculated time as the beginning of the dependency chain you entered, then place the individual steps forward from that point. A printed prep sheet, calendar reminder, or kitchen display can use the returned start time as its anchor. For a single recipe, list active preparation and passive cooking periods that must happen consecutively. For a multi-dish meal, calculate each dish separately, identify the earliest start, and then reconcile shared equipment such as an oven, mixer, or limited burner space. The calculator intentionally does not infer overlap, waiting time, or resource conflicts; those are planning choices rather than stable arithmetic. It also does not guess whether a recipe duration is realistic. Add a buffer as another step when guests, plating, altitude, appliance variation, or ingredient temperature could cause delay. Because identical input always gives identical output, the same calculation can be stored in a recipe system, used in an automated checklist, or repeated through the API for standardized production schedules at $0.002 per request.
What you can do with it
Plan dinner backward
Find the moment to begin preparation so a sequential recipe reaches the table at the promised dinner time.
Schedule overnight preparation
See both the clock time and previous-day offset for dough proofing, soaking, marinating, or slow cooking.
Standardize kitchen checklists
Generate a repeatable start-time anchor from approved step durations for catering or batch production.
FAQ
What time format should I use?
Use a 24-hour time with two digits for hours and minutes, such as 08:05 or 19:30.
What does a negative day offset mean?
It means the calculated start occurs before the serving day. Minus one is the previous day, and minus two is two days earlier.
Can steps run at the same time?
The calculator sums every duration, so enter the critical sequential path. Adjust the list yourself when steps genuinely overlap.
Can I include resting or preheating?
Yes. Include any positive whole-minute period that must elapse before the food can be served.
What does the API request cost?
Each API request costs $0.002; the browser calculator is free to run on this page.
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/ready-by-start-time \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"serve_time":"19:30","step_durations_minutes":[15,40,10]}'const res = await fetch("https://api.kit.forhosting.com/cook/ready-by-start-time", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"serve_time": "19:30",
"step_durations_minutes": [
15,
40,
10
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/cook/ready-by-start-time",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"serve_time": "19:30",
"step_durations_minutes": [
15,
40,
10
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/cook/ready-by-start-time", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"serve_time":"19:30","step_durations_minutes":[15,40,10]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"serve_time":"19:30","step_durations_minutes":[15,40,10]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/cook/ready-by-start-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
{
"serve_time": "19:30",
"step_durations_minutes": [
15,
40,
10
]
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "cook.ready_by_start_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. |