All articles

Critical path in a Gantt chart: how to find it

Learn what the critical path in a Gantt chart is, how to find it step by step with a worked example, and how to use float to protect your deadline.

6 min read

Every project has a finish date, but only some of the tasks decide it. The critical path in a Gantt chart is the longest chain of dependent tasks from start to finish. If any task on that chain runs late, the whole project finishes late. Tasks off the chain usually have room to slip. Knowing which is which tells you where to spend your attention.

This guide explains the idea in plain terms, then finds the critical path of a small example project by hand, in four steps you can repeat on any plan.

What the critical path is

A project is a network of tasks connected by dependencies. Some tasks run one after another, others run side by side. The total time the project needs is set by the longest route through that network, because nothing can finish before the slowest chain does.

That longest route is the critical path. Three consequences follow:

  • A one-day delay on a critical task moves the end date by one day.
  • A task off the critical path can slip a little without moving the end date.
  • Shortening a critical task can bring the end date forward. Shortening a non-critical task cannot.

"Critical" does not mean important. A non-critical task can matter a lot to the client. It only means the schedule has some spare time around it.

Float: the room a task has to move

The spare time around a non-critical task is called float (also called slack). It is how many days a task can start late or take longer without delaying the project.

Tasks on the critical path have zero float. Everything else has some. Float is the number that turns "this task seems less urgent" into a fact you can check.

A worked example: launching a customer portal

Here is a small project with eight tasks. Durations are in working days, and the dependencies say what must finish before each task can start.

Task Duration Depends on
A. Gather requirements 3 none
B. Design screens 5 A
C. Build backend 8 B
D. Build frontend 6 B
E. Write help content 4 A
F. Integration testing 4 C, D
G. Load help content 2 D, E
H. Launch 1 F, G

Step 1: Walk forward to get the earliest dates

Start at the first task and work through the plan, giving each task the earliest day it can begin. A task with several predecessors can only start when the last of them finishes.

Task Starts after day Finishes end of day
A 0 3
B 3 8
C 8 16
D 8 14
E 3 7
F 16 20
G 14 16
H 20 21

Look at F. It depends on C (finishes day 16) and D (finishes day 14), so it cannot start before day 16. Likewise H waits for F (day 20), not G (day 16). The project takes 21 working days.

Step 2: Walk backward to get the latest dates

Now start from the end date, day 21, and work backward. For each task, find the latest day it can finish without pushing the end date.

  • H must finish by day 21, so it must start by day 20.
  • F and G both feed H, so both must finish by day 20. F must start by day 16. G must start by day 18.
  • C must finish by day 16, because F must start then. D must finish by the earlier of F's latest start (day 16) and G's latest start (day 18), which is day 16.
  • E must finish by day 18, when G has to start.

Step 3: Calculate the float

Float is the latest finish minus the earliest finish.

Task Earliest finish Latest finish Float
A 3 3 0
B 8 8 0
C 16 16 0
D 14 16 2
E 7 18 11
F 20 20 0
G 16 20 4
H 21 21 0

Step 4: Read off the critical path

The tasks with zero float form the critical path: A, B, C, F, H. Add their durations: 3 + 5 + 8 + 4 + 1 = 21 days, which matches the project length. If you ever find a chain whose total does not equal the project length, recheck your forward pass.

The other tasks have room. The frontend (D) can slip two days. Loading the help content (G) can slip four. Writing the help content (E) has eleven days of float, so it is a good task to give to someone who is only available part-time.

Using the critical path in practice

Finding the critical path is only useful if it changes what you do. These habits come straight from the numbers above.

Protect the critical tasks. Put your best estimates, your most reliable people and your earliest reviews on the chain. A day lost on the backend (C) is a day lost on the launch.

Spend float on purpose. The frontend has two days of float. Use that to absorb an interruption or to start it later if a person is needed elsewhere, but remember that once the float is used up, D becomes critical too.

Watch for near-critical tasks. A task with one or two days of float is almost as dangerous as a critical one. A small slip turns it critical, and then you have two long chains to worry about.

Shorten the right thing. If the client asks for launch a week earlier, adding people to the help content does nothing. You have to shorten something on A, B, C, F or H, or overlap them where the dependencies allow it.

Re-check after every change. The critical path is not fixed. If the backend finishes early or the frontend grows, the longest chain can switch. Look again whenever a duration or dependency changes. The post on handling project delays shows how to measure a slip against the chain it affects.

Common mistakes

  • Missing dependencies. If a real dependency is not in the plan, the chain looks shorter than it is and the computed finish date is too optimistic. Review every task and ask what it truly needs before it can start. The guide to task dependencies covers the four dependency types.
  • Treating durations as certain. Each number is an estimate. A critical path built on guesses is still a guess, so keep ranges and buffers in mind.
  • Calling everything critical. If every task is "critical" in conversation, nobody can prioritise. The calculation gives you an honest short list.
  • Ignoring people. Two tasks that run in parallel on paper may need the same person. The path shows the logic of the work, not who is available.

Finding it on your Gantt chart

On a Gantt chart, dependencies are drawn as arrows between bars, so the critical path is the longest connected run of arrows from the first bar to the last. How to read a Gantt chart explains the bars, arrows and milestones if you want to practise reading one.

In ProGantt Flow you can set durations, link tasks with dependencies and add a launch milestone at the end, then follow the arrows to trace the longest chain. The method above works with any tool, and it is worth doing once by hand so you understand what you are looking at.

A short checklist

  1. List every task with a duration and its predecessors.
  2. Walk forward to find the earliest start and finish of each task.
  3. Walk backward from the end date to find the latest dates.
  4. Subtract to get float. Zero float means critical.
  5. Add up the critical chain and confirm it equals the project length.
  6. Re-check after any change to a duration, dependency or date.

The critical path will not tell you how to run the project, but it will tell you where a day matters and where it does not. That is usually enough to make better decisions about the plan.