Hot desk utilization rate calculator
The hot desk utilization rate calculator turns a daily booking count into a clear occupancy percentage.
Run — free
Enter how many desks were booked and how many desks were available on that same day, and the calculator divides the first value by the second before multiplying by 100. The result helps workplace teams compare demand across dates, recognize underused capacity, and communicate booking performance with one consistent metric. It also validates impossible values so that a misleading percentage does not enter a report or dashboard.
Use matching daily booking and capacity figures
Start with two numbers that describe the same location, booking policy, and calendar day. The desks booked value is the count reserved for that day, while total desks available is the capacity people could actually reserve. Keeping those scopes aligned matters: comparing bookings for an entire building with available desks on one floor produces a percentage that looks precise but says nothing useful. Exclude desks that were permanently assigned, closed for maintenance, or otherwise unavailable if they were not offered through the hot desk system. Use the final daily booking count when measuring demand, rather than a cumulative count that includes cancellations and rebookings. The calculator accepts zero bookings, which correctly produces zero percent utilization, but the available count must be greater than zero because division by zero has no meaningful utilization result. It also rejects a booked count above availability, helping expose a scope mismatch, duplicated reservation, or incorrect capacity figure before that issue reaches a workplace report.
Understand the utilization percentage
The calculation is desks booked divided by total desks available, multiplied by 100. For example, if three quarters of the offered desks are reserved, the utilization rate is 75 percent. The returned rate is rounded to two decimal places so it remains readable and stable in dashboards, exports, and automated comparisons. A high percentage indicates strong booking demand relative to offered capacity; it does not prove that every booked desk was physically occupied. Someone may reserve a desk and fail to arrive, so booking utilization and observed occupancy should be treated as different measurements. Likewise, a low result is not automatically a reason to remove desks. Demand can vary by weekday, season, team schedule, local events, and hybrid-work policy. Use this daily result as a comparable building block, then examine a series of dates or group results by weekday before making capacity decisions. Consistent definitions matter more than any single percentage when trends are used to guide workplace planning.
Apply the rate in workplace decisions
Use the calculated rate in a daily dashboard, a weekly facilities review, or an alert that identifies unusually busy and unusually quiet dates. A workplace team might compare Mondays with Thursdays, measure whether a policy change shifted reservation demand, or identify floors whose offered capacity no longer matches how employees book. The API is useful when booking totals already live in a spreadsheet, warehouse, or reservation platform: send each day's booked and available counts, store the returned percentage, and keep the underlying counts beside it for auditability. Each automated request costs $0.002; the browser calculator can be used for quick individual checks. Avoid treating a universal target as proof of success. The appropriate range depends on how much spare capacity the organization wants for late bookings, accessibility needs, team adjacency, and disruptions. Combine utilization with cancellation, check-in, and attendance data when those measures are available, and document whether the report represents reservations or actual presence so readers interpret it correctly.
What you can do with it
Track daily booking demand
Convert each office day's booked and available desk counts into a consistent percentage for a workplace dashboard.
Compare weekdays and locations
Measure floors or offices with different capacities on a common percentage scale while keeping each calculation scoped to one day.
Check capacity planning data
Catch zero-capacity days and bookings above availability before invalid figures enter a utilization report.
FAQ
How is hot desk utilization calculated?
Divide desks booked by total desks available for the same day, then multiply by 100. The result is rounded to two decimal places.
What happens when no desks are available?
The calculation returns an invalid input error because a utilization rate cannot be computed with zero available desks.
Can the booked desk count be zero?
Yes. If capacity is greater than zero, zero booked desks produces a utilization rate of zero percent.
Is booking utilization the same as office occupancy?
No. This rate measures reservations against bookable capacity. Physical occupancy requires check-in, sensor, or attendance data.
What if bookings exceed available desks?
The calculator rejects that input because it usually indicates inconsistent scope, duplicate bookings, or an incorrect capacity value.
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/home/desk-booking-utilization-rate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"desks_booked":36,"total_desks_available":48}'const res = await fetch("https://api.kit.forhosting.com/home/desk-booking-utilization-rate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"desks_booked": 36,
"total_desks_available": 48
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/home/desk-booking-utilization-rate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"desks_booked": 36,
"total_desks_available": 48
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/home/desk-booking-utilization-rate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"desks_booked":36,"total_desks_available":48}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"desks_booked":36,"total_desks_available":48}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/home/desk-booking-utilization-rate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"desks_booked": 36,
"total_desks_available": 48
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "home.desk_booking_utilization_rate",
"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. |