Time Blocks per Day Calculator
The Time Blocks per Day Calculator turns a workday, a break allowance, and a preferred focus-block length into a practical daily capacity.
Run — free
It first reserves the break time, then counts only complete focus blocks that fit in the remaining minutes. Alongside the block count, it reports usable focus time, scheduled focus minutes, leftover time, and utilization. This makes the result useful for planning a personal calendar, setting realistic team capacity, or comparing different focus routines without pretending that a partial block is a full session.
Start with the time you can actually control
Enter the full span of the workday in minutes, not an optimistic estimate of productive time. An eight-hour day is 480 minutes, for example. Then enter the combined time you intend to protect for lunch, short rests, and other planned breaks. The calculator subtracts that reservation before it considers any focus blocks. This order matters because breaks are part of a sustainable schedule, not spare minutes that disappear only when convenient. Use the block length for one uninterrupted session, such as 25, 45, 50, or 90 minutes. All three values use whole minutes, which keeps schedules easy to transfer to a calendar. The workday and block length must be positive, and the break allowance cannot be longer than the workday. A break allowance equal to the workday is valid and produces zero available focus minutes, which can honestly represent a day reserved entirely for leave, recovery, or non-focus commitments. The workday is capped at 1,440 minutes so the calculation always represents one day.
Understand the whole-block calculation
The calculator subtracts break minutes from workday minutes to obtain the available focus budget. It then divides that budget by the requested block length and rounds down to the nearest whole block. Rounding down is deliberate: if 420 minutes remain and a block lasts 50 minutes, eight complete blocks fit, while the remaining 20 minutes do not become a ninth block. The result includes the number of blocks, the minutes committed to those complete blocks, and the unused focus minutes left after them. Utilization is the scheduled focus minutes divided by the available focus minutes, expressed as a percentage and rounded to two decimal places. If no focus time remains after breaks, utilization is zero rather than an undefined value. This model reserves one combined break budget; it does not automatically insert a break between every pair of blocks. If your routine requires five pauses of ten minutes, include all 50 minutes in the break input. Meetings, administration, and commute time can also be included in that reservation when they are unavailable for focused work.
Turn the result into a realistic daily plan
Treat the block count as capacity, not a demand to fill every possible slot. A calendar needs transition time, unpredictable questions, and room for work that ends early or runs slightly long. The unused-minute result shows whether the selected block length fits neatly or leaves a useful buffer. You can compare several block lengths while keeping the workday and break reservation constant: shorter blocks may increase the count, while longer blocks may reduce context switching. For team planning, agree on what belongs in break minutes before comparing results. One person may reserve only lunch while another includes meetings and email, producing numbers that look comparable but describe different schedules. The calculator is deterministic, so the same inputs always return the same plan and are suitable for spreadsheets, internal tools, or recurring planning automations. An API request costs $0.002. When building a routine, review actual completion over several days and adjust the inputs rather than assuming every theoretical block is achievable. A smaller reliable plan is more useful than a packed schedule that repeatedly spills into breaks or personal time.
What you can do with it
Design a personal focus schedule
Reserve lunch and recovery time, then see how many complete writing, coding, or study sessions fit in the day.
Estimate team delivery capacity
Convert a shared daily availability and break policy into a consistent count of planning blocks for each contributor.
Compare time-blocking routines
Test 25-, 50-, or 90-minute blocks against the same day and breaks to compare count, leftover time, and utilization.
FAQ
What counts as break time?
Include every minute you want excluded before focus blocks are scheduled, such as lunch, short rests, meetings, or administration.
Why are partial blocks not counted?
The calculator counts only complete sessions, so a remainder shorter than the requested block length is reported as unused focus time.
Does it add breaks between individual blocks?
No. Enter the total break allowance for the day, including any between-block pauses you plan to take.
Can break time equal the entire workday?
Yes. The result will show zero available focus minutes, zero blocks, and zero utilization.
How much does an API calculation cost?
Each API request costs $0.002. The calculation is deterministic and requires no network access or external service.
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/biz/time-blocks-per-day \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"workday_minutes":480,"break_minutes":60,"block_minutes":50}'const res = await fetch("https://api.kit.forhosting.com/biz/time-blocks-per-day", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"workday_minutes": 480,
"break_minutes": 60,
"block_minutes": 50
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/time-blocks-per-day",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"workday_minutes": 480,
"break_minutes": 60,
"block_minutes": 50
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/time-blocks-per-day", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"workday_minutes":480,"break_minutes":60,"block_minutes":50}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"workday_minutes":480,"break_minutes":60,"block_minutes":50}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/time-blocks-per-day", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"workday_minutes": 480,
"break_minutes": 60,
"block_minutes": 50
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.time_blocks_per_day",
"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. |