Resource Leveling: Fixing an Over-Allocated Schedule
A Gantt chart can be perfectly valid and completely impossible at the same time. The bars line up, the dependencies are clean, the finish date looks great, and yet on Tuesday it quietly assumes one person will do three days of work in a single day. That is over-allocation, and resource leveling is how you fix it. It is the step most people skip, and it is why so many "realistic" plans fall apart in week two.
What over-allocation is
Over-allocation happens when a resource, usually a person, is assigned more work in a period than they have capacity to do. Two tasks scheduled in parallel, each needing that person full time, means 200% allocation: physically impossible, but nothing on a basic Gantt chart stops you drawing it. The schedule looks fine because bars can overlap freely; only the people cannot.
Why a valid schedule can be impossible
A Gantt chart checks dependencies, not human limits. It will happily place three of Sam's tasks on the same afternoon, because as far as the dependency logic is concerned they are allowed to run at once. The plan is logically valid and practically fiction. Resource leveling is the process of making the plan respect the fact that a person can only do one thing at a time.
Leveling vs smoothing
Two related fixes, with a key difference. Resource leveling resolves over-allocation even if it has to push the finish date out, correctness comes first. Resource smoothing evens out the workload but refuses to move the finish date, so it only uses available float. Leveling can make you later but always feasible; smoothing keeps the date but only works if there is enough slack to absorb the peaks.
Side by side
| Resource leveling | Resource smoothing | |
|---|---|---|
| Goal | remove over-allocation | even out the workload |
| Finish date | may move later | fixed |
| Uses | whatever it takes | float only |
| Guarantees feasibility | yes | only if float is enough |
How to level a schedule
You can level by hand once you can see the overload:
- Find the over-allocated periods, where one person's assigned work exceeds their capacity.
- Spend float first: delay a parallel task that has slack until the person is free, this costs you nothing.
- If float runs out, sequence the tasks, do them one after another instead of at once, which may push the finish out.
- Or add capacity: assign a second person, if the task can be split.
- Re-check the critical path afterwards, leveling can change it.
A worked example
- If "Design checkout" has float: slide it to Thursday to Saturday. Sam is now at 100%, and because you spent float, the finish date does not move, that is smoothing.
- If it has no float: the two must run back to back anyway, so the project finishes three days later, that is leveling.
Float is the currency
Notice that float is what you spend when you level. Tasks with slack can be shifted to relieve an overload for free; tasks on the critical path have no float, so relieving them always costs finish date. This is why float and resource leveling are two sides of one coin: float tells you where you have room to move work, and leveling is the act of moving it.
The short version
A schedule that passes every dependency check can still ask one person to be in two places at once, that is over-allocation. Resource leveling fixes it by shifting or sequencing work, spending float first and moving the finish date only when it must. Smoothing does the same but refuses to move the date, so it relies on float alone. Build the plan in the gantts.app editor, then check that no one is asked to do the impossible.
Templates that use this
Keep reading
- What Is Float (Slack) in a Project Schedule?
- Critical Path Method (CPM): Steps, Formula & Example
- Gantt Chart Dependencies Explained: FS, SS, FF and SF
Frequently asked questions
What is resource over-allocation?
Over-allocation is when a resource, usually a person, is assigned more work in a period than they can do, for example two full-time tasks on the same day (200% allocation). A basic Gantt chart allows it because bars can overlap, even though the person cannot.
What is the difference between resource leveling and smoothing?
Resource leveling removes over-allocation even if the finish date has to move later. Resource smoothing evens out the workload but keeps the finish date fixed, so it only uses available float. Leveling guarantees a feasible plan; smoothing only works when there is enough slack.
Does resource leveling change the finish date?
It can. If over-allocated tasks have float, leveling shifts them into the slack and the finish date holds. If they do not, the tasks must be sequenced, which pushes the finish date out. Leveling prioritises a feasible plan over the original date.
How do I fix an over-allocated schedule?
Find the overloaded periods, then spend float first by delaying parallel tasks that have slack. If float runs out, sequence the tasks one after another, or add a second resource if the task can be split. Re-check the critical path afterwards, because leveling can change it.
How is float related to resource leveling?
Float is what you spend when leveling. Tasks with slack can be moved to relieve an overload without delaying the project; critical-path tasks have no float, so relieving them always costs finish date. Float tells you where there is room to move work.