Formula reference — Warehouse Process Design Toolkit
Version 1.0.0. The website engines and the Excel pack use the same identities. This page walks the free Capacity & FTE model in full. The other 24 calculators follow the same published identities in /tools and in 01-calculators of the Excel pack.
Purpose
Estimate how many people a single warehouse process needs, and whether current resources can process the daily volume.
The model is for one process at a time (for example receiving, picking, or packing). It is not a whole-warehouse simulation.
Inputs
| Name | Unit | Meaning |
|---|
| Daily volume | units/day | Demand the process must complete in one operating day |
| Process time | minutes/unit | Assumed or observed time to process one unit |
| Operating hours | hours/shift | Rostered shift length before break deduction |
| Shifts | shifts/day | Number of shifts that together cover daily volume |
| Break allowance | minutes/shift | Time removed from each shift (breaks, meetings already inside the shift) |
| Planned utilisation | % | Share of net time assumed to be productive. Enter 85, not 0.85, in the website form. |
| Current resources | FTE | People assigned to this process across the day |
| Working days | days/week | Used only for weekly totals |
One FTE is one person working one shift. Three people on each of two shifts = 6 FTE.
If operating hours are already net of breaks, set break allowance to 0.
Identities
gross minutes / shift = operating hours × 60
net minutes / shift = gross minutes / shift − break allowance
productive minutes / FTE = net minutes / shift × planned utilisation
required minutes / day = daily volume × process time
required FTE = required minutes / day ÷ productive minutes / FTE
headcount / shift = required FTE ÷ shifts
available volume / day = current resources × productive minutes / FTE ÷ process time
theoretical max / day = current resources × net minutes / shift ÷ process time
capacity utilisation = daily volume ÷ available volume / day
capacity gap = daily volume − available volume / day
additional resources = max(0, required FTE − current resources)
Scenarios reuse the same identities at 80%, 100% and 120% of daily volume.
Worked example
Daily volume = 1,000 units
Process time = 3 minutes
Net available time = 450 minutes
Planned utilisation = 100%
required FTE = 1,000 × 3 ÷ 450 = 6.67
At 85% planned utilisation:
required FTE = 1,000 × 3 ÷ (450 × 0.85) = 7.84
With 6 current FTE:
available volume = 6 × 450 × 0.85 ÷ 3 = 765 units/day
capacity utilisation = 1,000 ÷ 765 = 130.7%
additional resources = 7.84 − 6 = 1.84 FTE
What planned utilisation is not
Planned utilisation is an allowance on available time (fatigue, walking, communication, minor disruption).
Capacity utilisation is an output: demand divided by available capacity.
They are not interchangeable. Setting planned utilisation to 100% is a ceiling, not a recommended operating target.
Limitations
- One process, average daily volume. Peaks need the peak-capacity model (paid toolkit).
- Process time is treated as constant. It does not model learning curves, mix, or congestion.
- Absence, holidays, training and indirect labour are not included in the free model.
- The model does not certify safety, layout, or industrial-engineering standards.
- Users must validate process times on the floor before using results for hiring or investment.
Test cases
Every published case lives in REFERENCE_CASES and is executed by npm test.
A calculator is not released if any of those cases fail.
Other v1 identities
FTE with absence and indirect
direct unadjusted = volume × process time ÷ productive minutes
direct with absence = direct unadjusted ÷ (1 − absence rate)
indirect = direct with absence × indirect %
total = direct with absence + indirect
Productivity
earned hours = units × assumed minutes ÷ 60
performance = earned hours ÷ paid hours
units per paid hour = units ÷ paid hours
Dock capacity
theoretical slots = docks × hours × 60 ÷ turn time
planning capacity = theoretical slots × occupancy target
required docks = vehicles × turn time ÷ (hours × 60 × occupancy target)
Vehicle processing
hourly arrival = vehicles ÷ hours
hourly capacity = resources × 60 ÷ process time
peak-hour queue = max(0, daily vehicles × peak-hour share − hourly capacity)
Storage
effective locations = locations × fill target
required locations = pallets on hand ÷ fill target
days of cover = pallets on hand ÷ daily pallet demand
Capacity gap levers
work content hours = max(0, unit gap × process time ÷ 60)
paid OT hours = work content hours ÷ planned utilisation
process time to close = current FTE × productive minutes ÷ demand
FTE overtime check
weekly paid hours short = additional direct FTE × net hours / shift × working days
weekly productive hours = additional direct FTE × productive hours / shift × working days
weekly OT hours available = current direct FTE × OT hours / person / week
Compare paid hours with paid overtime. Do not compare productive hours with paid overtime.
Peak hour
peak-day volume = average day × peak-day factor
peak-hour volume = peak-day volume × peak-hour share
peak-hour FTE = peak-hour volume × process time ÷ (60 × utilisation)
Peak-hour FTE assumes the busy hour has no break inside it. Day FTE still deducts the shift break.
Warehouse space (building / rent)
Pallet racking (SEMA-aligned planning)
frame depth = pallet depth − front overhang − rear overhang
pallets / beam = floor( beam length ÷ (pallet width + side clearance) )
levels = 1 + floor( (clear height − top clearance − pallet height)
÷ (pallet height + vertical clearance + beam depth) )
positions / bay = pallets / beam × levels
bays = ceil( pallets ÷ positions / bay )
double-row units = ceil( ceil(bays ÷ bays per run) ÷ 2 )
racking depth = double-row units × (2 × frame + flue)
aisles = double-row units + 1
run length = bays per run × beam + 2 × end clearance
net area = (racking depth + aisle depth) × run length
building area = net area × (1 + operational uplift)Floor stack
levels = floor( max stack height ÷ pallet height )
positions / block = levels × deep × lanes wide
blocks = ceil( pallets ÷ positions / block )
Goods-in / lorry hall
marshalling positions = daily pallets × dwell hours ÷ operating hours
m² / position = pallet width × depth × (1 + handling allowance)
docks = vehicles × turn time ÷ (hours × 60 × occupancy)
Building total
stock = stock pallets, or daily demand × days of cover
racked = stock × racked share
floor = stock − racked
building m² = racking area + floor area + marshalling + ancillary
These are planning envelopes. They are not a rack, civil, or fire design. SEMA® is a registered trademark of the Storage Equipment Manufacturers' Association. Logistics Analyzer is an independent calculation tool and is not affiliated with, endorsed by, or accredited by SEMA. Clearance benchmarks refer to published industry guidelines. Structural slab point loads (TR34) and in-rack fire suppression (NFPA 13 / BS EN 12845) require professional engineering sign-off.
Commercial and fleet
rate card standard hours = Σ (volume × minutes) ÷ 60
rate card paid labour hours = standard hours ÷ labour efficiency
rate card margin on price = profit ÷ (1 + profit) (markup on cost is not margin on price)
slotting saving per pick = (min(target golden share, A pick share) − current share) × (walk outside gold − walk in gold)
storage £ / pallet-week = allocated building (building + overhead share) × (1 + profit) ÷ pallets on hand
trucks = daily moves ÷ (hours × 60 × utilisation ÷ minutes per move)
UK cover factor = contracted hours ÷ productive hours after holiday and absence
safety stock (max) = max day × max lead − average day × average lead
UK trailer cube = 26 UK or 33 Euro on 13.6 m; min(cube, floor(payload ÷ kg))
yard moves = drop arrivals × moves/arrival + live arrivals
Investment, contract and labour-mix tools
investment net flow (year t) = savings × (1 + growth)^(t−1) × (year-1 ramp in t = 1) − running cost × (1 + growth)^(t−1)
NPV = −capital + Σ net flow ÷ (1 + rate)^t + residual ÷ (1 + rate)^life
payback = first year the running total of net flow (no residual) reaches zero, interpolated inside that year
break-even savings = (capital + PV running cost − PV residual) ÷ PV savings
contract revenue = fixed revenue + price × max(volume, committed volume)
contract cost = fixed cost + variable cost × volume
break-even volume = (fixed cost − fixed revenue) ÷ (price − variable cost), or 0 when it is below the committed volume
price for target margin = (fixed cost + variable cost × volume) ÷ (volume × (1 − margin)) − fixed revenue ÷ volume
year t profit = revenue × (1 + price index)^(t−1) − cost × (1 + cost inflation)^(t−1)
peak labour: hire to the peak = peak FTE × permanent cost
peak labour: agency = base FTE × permanent cost + (peak − base) × paid hours ÷ agency productivity × peak weeks × agency rate
peak labour: overtime first = overtime hours up to the cap at permanent hourly × (1 + premium), agency for the remainder
break-even peak length (weeks) = permanent cost ÷ (agency rate × paid hours ÷ agency productivity)
time standard (s) = Σ (TMU × occurrences) × 0.036 × (1 + allowance)
FTE = daily volume × standard minutes ÷ (net shift minutes × expected performance)
Erlang C (c docks, offered load a = arrivals per hour × turn hours) = [a^c/c! × c/(c − a)] ÷ [Σ(k<c) a^k/k! + a^c/c! × c/(c − a)]
average wait = Erlang C ÷ (c × service rate − arrival rate)
share on a dock within t = 1 − Erlang C × e^(−(c × service rate − arrival rate) × t)
Erlang C assumes random arrivals and exponential turn times. Booked appointments smooth arrivals, so real waits are usually shorter.