Shift Coverage Planner
Demand rises and falls through the day, but shifts come in fixed blocks — so covering a midday peak means people who are also present at quieter hours. This places shifts until every hour is covered, then recounts the coverage from the finished roster rather than from the intent that built it, and states the minimum any roster could possibly use: total demand divided by what one shift covers.
What this generator does
Builds a demand curve with a midday peak, then adds shifts until no hour is short. It reports the coverage achieved each hour, the shift start times, and the lower bound that no roster can beat.
How to use this tool
- Set the length of the day, the shift length and the peak demand.
- Read the demand curve hour by hour.
- Check the coverage never falls below what is needed.
- Compare the shift count with the lower bound underneath.
Understanding the controls
- Hours in the day
- Between 6 and 24. Longer days give the shift placement more room to overlap efficiently.
- Shift length
- Between 2 and 12 consecutive hours. Longer shifts cover more but waste more at the quiet ends.
- Peak demand
- How many people are needed at the busiest hour. The curve tapers towards the ends of the day.
- Seed
- Reproduces the same demand curve exactly, so two shift lengths can be compared on identical demand.
Common use cases
- Working out how many shifts a demand curve really needs
- Showing why fixed shifts cause over-staffing at quiet hours
- Rota planning where coverage must never drop
- Teaching the difference between a bound and an achievable answer
- Reproducing the same demand curve from a seed
How this generator works
Shifts are added greedily at the earliest hour still short of its demand, which guarantees full coverage but not the fewest shifts. The check recounts coverage hour by hour from the shift list, requires no hour to fall short, and confirms the roster never claims to beat the total-demand bound.
Randomness and fairness
The demand curve is random around a midday peak; the placement is deterministic given that curve. Seeded plans reproduce exactly and are therefore explicitly not cryptographically secure, and unseeded ones use the browser's cryptographically secure generator.
For how randomness is produced across the whole site, see how Generate Random works.
Limitations and good to know
- Greedy placement guarantees coverage but not the fewest possible shifts — the bound shown is often not reachable.
- All shifts are the same length, and breaks, part-time hours and shift preferences are not modelled.
- People are interchangeable; skills and qualifications are not considered.
- Demand is generated rather than entered, so this sizes a shape of demand rather than your actual demand.
- Plans are not stored between visits.
Privacy and your data
The demand curve and the roster are computed in your browser. Nothing is transmitted or kept.
Related generators
- Queue Waiting Time CalculatorClosed-form waiting times for a multi-server queue, with Little's law as the check and no finite answer offered for an unstable one.
- Task Assignment OptimiserThe cheapest one-to-one matching of people to tasks, proved optimal against every possible assignment.
- Shift Rota GeneratorBuilds a staffing rota that covers every shift, honours days off and rest gaps, and shares the unpopular shifts out.
- Makespan Scheduling Problem GeneratorJobs across identical machines, scheduled longest-first, with two lower bounds that often prove the schedule optimal.