Critical Path Calculator: Early and Late Times, Float and Project Duration
List your tasks, durations and predecessors to find each task's early and late times, its float and the critical path that sets the project end date.
Quick answer
Run a forward pass for each task's earliest start and finish, then a backward pass for the latest start and finish. Total float = LS − ES. Zero-float tasks form the critical path, and the largest early finish is the minimum project completion time. In the default example, the critical path is A, C, D, F at 17 days.
How to read your result
The results table has one row per task. Critical tasks are shaded.
ES (earliest start): the earliest moment the task can begin, once all its predecessors have finished.
EF (earliest finish): ES plus the duration.
LS (latest start) and LF (latest finish): the latest the task can start and finish without pushing the project end date.
Total float (also called total slack): LS − ES. How long the task can slip without delaying the project. A value of 0 means the task is critical.
Free float: how long the task can slip without delaying any successor's earliest start. It is never larger than total float.
Project duration: the largest EF in the network. This is the minimum project completion time under these dependencies.
Critical path: the chain of zero-float tasks from start to finish. Any delay to a task on it delays the whole project day for day. If two chains tie, both are listed.
Times are measured as elapsed units from the project start. A task with ES = 0 begins at the very start, and a task with EF = 3 ends after three units. The schedule view draws each task as a bar from ES to EF; the pale extension shows its float.
Critical path formulas
The calculator uses the standard critical path method with finish-to-start dependencies and no lag.
Forward pass (in dependency order):
ES = max(EF of all predecessors), or 0 if there are none EF = ES + duration
Backward pass (in reverse order):
LF = min(LS of all successors), or the project duration if there are none LS = LF − duration
Float and criticality:
total float = LS − ES (equivalently LF − EF) critical if total float = 0
free float = min(ES of successors) − EF, or project duration − EF for the last tasks
project duration = max(EF)
Before computing anything the tool sorts the tasks topologically. If the dependencies contain a loop (A needs B and B needs A), no schedule exists and the tool names the tasks involved so you can break the cycle.
Worked examples
Each example uses numbers you can load into the calculator above; the results match the tool exactly.
Example 1 (simple): a six-task project
Six tasks, durations in days. After requirements (A), design (B) and the database (C) can proceed in parallel; the build (D) needs both; documentation (E) follows design; testing (F) needs the build and the documentation.
ID
Task
Dur
Pred.
ES
EF
LS
LF
Total float
Free float
Critical
A
Requirements
3
-
0
3
0
3
0
0
Yes
B
Design
4
A
3
7
4
8
1
0
No
C
Database
5
A
3
8
3
8
0
0
Yes
D
Build
6
B, C
8
14
8
14
0
0
Yes
E
Documentation
2
B
7
9
12
14
5
5
No
F
Testing
3
D, E
14
17
14
17
0
0
Yes
Forward pass: A runs 0–3. B and C both start at 3 and end at 7 and 8. D waits for the later of the two, so ES = 8 and EF = 14. E runs 7–9. F starts at max(14, 9) = 14 and ends at 17.
Backward pass: F's LF is 17, so LS = 14. D's LF is 14 and E's is 14. B's LF is the smaller of D's LS (8) and E's LS (12), so 8. A's LF is the smaller of B's LS (4) and C's LS (3), so 3.
Critical path: A → C → D → F = 3 + 5 + 6 + 3 = 17 days.
B has total float 1 but free float 0: it can slip a day without moving the project end, but doing so would push back D's earliest start. E has 5 days of both.
List every task with its duration and the tasks that must finish before it can start.
Forward pass. Start with tasks that have no predecessors: ES = 0, EF = duration. For every other task, ES is the largest EF among its predecessors, and EF = ES + duration.
Note the project duration: the largest EF.
Backward pass. Start from the last tasks: LF = project duration, LS = LF − duration. For the others, LF is the smallest LS among the successors.
Compute total float for each task: LS − ES.
Mark every task with zero float as critical and join them into a chain from start to finish. That chain is the critical path.
Compute free float for the rest: the smallest successor ES minus the task's own EF.
Assumptions, limits and common mistakes
Assumptions and limits
Only finish-to-start dependencies without lag or lead are modelled. Start-to-start, finish-to-finish and lag are not supported yet.
Durations are single numbers. For uncertain durations, estimate them with the PERT calculator.
There are no calendars, resource limits or constraints. The schedule shows what the logic allows, not what a short-staffed team can deliver.
There is no target deadline input, so negative float cannot occur. The project end is the earliest possible finish.
Float is shared along a chain. Two tasks with one day of float each do not give you two days if they are in sequence.
Common mistakes
Adding up all durations. The project length is the longest chain, not the sum of all tasks.
Missing a dependency. A forgotten link makes a task look like it has float, and the real critical path is longer than shown.
Treating the critical path as fixed. If you shorten a critical task, another path can become critical. Recalculate after every change.
Confusing total and free float. Total float protects the end date; free float protects the next task.
Duplicate or mistyped IDs. Predecessors must match task IDs exactly (the tool ignores letter case).
Frequently asked questions
How do you calculate the critical path?
Do a forward pass to find each task's earliest start and finish, a backward pass to find the latest start and finish, and compute total float as LS − ES. The tasks whose float is zero form the critical path.
What are ES, EF, LS and LF in a project network?
They are earliest start, earliest finish, latest start and latest finish. The earliest values come from the forward pass and show when work can happen. The latest values come from the backward pass and show when it must happen to hold the end date.
What is the difference between total float and free float?
Total float is the delay a task can absorb without delaying the project. Free float is the delay it can absorb without delaying the earliest start of any following task. Free float is never greater than total float.
Can a project have more than one critical path?
Yes. If two chains have the same total length, both have zero float. The calculator lists each of them. It means more of the project is risky, because a slip on either chain moves the end date.
How do I calculate the minimum project completion time?
It is the largest early finish in the network, which equals the length of the critical path. The calculator shows it as the project duration.
What does a circular dependency mean?
The task links form a loop, such as A needs B, B needs C and C needs A. No task in the loop can start first, so no schedule exists. Remove or reverse one link.
Can I use decimals or zero-length tasks?
Yes. Durations can be decimals, and a duration of 0 works as a milestone.
How do I add uncertainty to a critical path?
Use the link below the results to send the critical tasks to the PERT calculator, then enter optimistic and pessimistic values for each. The PERT calculator adds them up and gives the chance of finishing by a deadline.