BLOGS — SCHEDULE ANALYSIS
Total float vs free float — explained on a real schedule
21 AUG 2026 · 6 MIN READ · ANFAAL PROJ OPS
In almost every schedule review someone says “we've got eight days float on that.” Then the conversation moves on, because nobody asks which float. Total float and free float answer different questions, and on a real schedule they routinely disagree by weeks. Getting them mixed up is how a subcontractor cheerfully burns a fortnight that belonged to somebody else.
The two numbers
- Total float (TF) — how long an activity can slip before the project finish (or a constrained date) moves.
TF = Late Finish − Early Finish. - Free float (FF) — how long an activity can slip before its earliest successor moves.
FF = earliest successor ES − EF − 1for a finish-to-start link on day numbering.
The distinction that matters on site: total float is shared along a chain; free float belongs to that one activity. If three activities sit on a path carrying 8 days of total float, the path has 8 days — not 24. Whoever spends it first leaves nothing for the trades behind them.
A worked example — footings and holding-down bolts
Five activities. Two paths converge on the pour. Working days, no calendar tricks, all FS links with zero lag.
| Activity | Dur | ES | EF | LS | LF | TF | FF |
|---|---|---|---|---|---|---|---|
| A — Excavate footings | 10 | 1 | 10 | 1 | 10 | 0 | 0 |
| B — Rebar & formwork | 8 | 11 | 18 | 11 | 18 | 0 | 0 |
| C1 — Fabricate HD bolts | 6 | 1 | 6 | 9 | 14 | 8 | 0 |
| C2 — Deliver HD bolts | 4 | 7 | 10 | 15 | 18 | 8 | 8 |
| D — Pour footings | 4 | 19 | 22 | 19 | 22 | 0 | 0 |
C1 and C2 report the same total float — 8 days each — and completely different free float. C1 has none, because C2 is queued directly behind it. C2 has all 8, because nothing sits between it and the pour on day 19.
What actually happens when you spend it
Slip C2 (delivery) by 5 days: nothing else in the schedule moves. No successor is disturbed, the pour still starts day 19, and no other trade notices. That is what free float buys you — containment.
Slip C1 (fabrication) by 5 days: the project end date still holds, because C1 has 8 days of total float. But C2 is dragged from day 7 to day 12, and the path is now down to 3 days of remaining float for both activities. The fabricator didn't damage the project; they spent the delivery team's contingency without asking.
Slip C1 by 9 days and you are one day into negative float. The pour moves, and so does everything hanging off it.
Total float tells you when the project gets hurt. Free float tells you when the next trade gets hurt. Only free float is genuinely yours to spend.
How each tool shows it
| Primavera P6 | Microsoft Project | |
|---|---|---|
| Field names | Total Float, Free Float | Total Slack, Free Slack |
| Where to find it | Add columns in the Activity Table (General group), or the Status tab of Activity Details | Schedule table, or the Detail Gantt view which draws slack as a thin bar |
| Units | Follows the Duration Format in User Preferences — hours by default on many installs, so 64 may mean 64h, not 64d | Days by default, set in Options → Schedule |
| Critical definition | Total Float ≤ 0, or Longest Path — set per project in Schedule Options (F9) | Total Slack ≤ 0 days, threshold editable in Options → Advanced |
| Multi-calendar behaviour | “Compute Total Float as” — Start Float, Finish Float, or Smallest of Start and Finish Float | No equivalent switch; slack is derived from the task calendar |
P6 specifics worth knowing
P6 calculates float against the project's Must Finish By date if one is set, and against the longest path from the data date if it isn't. Change that constraint and every float value in the file changes with it. On multi-calendar schedules, prefer Longest Path over “Total Float ≤ 0” for identifying the critical path — a 5-day-calendar activity feeding a 7-day-calendar activity can show non-zero float while still driving the finish. Also check the Hours per Day setting before you quote float in days to anyone.
MS Project specifics worth knowing
Project's default of one critical path per file hides parallel drivers; turn on “Calculate multiple critical paths” in Options → Advanced when you have deliverables with separate deadlines. Tasks with no successor inherit slack all the way to the project finish, which quietly inflates the numbers. And Deadlines — not constraints — are the clean way to drive negative slack without breaking the network.
The mistakes that actually cost time
- Treating total float as an allowance. It's shared. A subcontractor who “uses their 8 days” has usually taken them from someone downstream. Free float is the number that can be safely handed out.
- Reading float without checking units. A P6 column showing 40 with an hours duration format is 5 days, not two months.
- Open-ended activities. Anything without a successor collects enormous float and shows as harmless. Run a DCMA-style check: open ends near zero, and interrogate every activity with more than 44 days of total float before you believe it.
- Constraints masking the picture. A Start On constraint can force float to zero on an activity that isn't driving anything; a Finish On or Before can push a whole chain negative. Sort by constraint type before you sort by float.
- Quoting free float in a delay claim. Entitlement to an extension turns on total float — whether the completion date moved. Free float is the operational number: it tells you whether a delay is contained or whether it has started travelling.
- Forgetting that levelling changes nothing logically. Resource-levelled dates in P6 don't recompute total float from the levelled sequence. The float you read is still the logic-driven number.
How I use both on a live job
In the weekly look-ahead I filter on free float, because it answers the only question a foreman cares about: if I lose two days here, does anyone else lose two days? In the monthly report and in any notice of delay I use total float, because that is what the completion date responds to. Two columns, two conversations — and once the team can tell them apart, the phrase “we've got float” stops being an argument-ender and starts being a question with an answer.