How to plan task dependencies in a Gantt chart
A task dependency in a Gantt chart is a link between two tasks that controls their order. The most common type is finish-to-start: task B cannot begin until task A is done. Setting dependencies correctly is what turns a list of tasks into an actual project schedule.
1. What is a task dependency in a Gantt chart?
A task dependency is a rule that says one task must reach a certain state before another task can proceed. In a Gantt chart, dependencies are usually shown as arrows connecting two bars. The arrow points from the task that must happen first to the task that depends on it.
Dependencies exist because most project work is not independent. Building a page depends on having a design. Testing depends on having something to test. Shipping depends on testing being done. Capturing those relationships in the chart means a delay in one task automatically shows its downstream impact, rather than hiding it until something falls through.
If you are new to Gantt charts, the introduction to Gantt charts covers the basic parts before getting into dependencies.
2. What are the four types of task dependencies?
There are four standard dependency types. In practice you will use finish-to-start almost all the time, but knowing the others helps when a project has unusual timing relationships.
| Type | What it means | When to use it |
|---|---|---|
| Finish-to-start (FS) | Task B cannot start until task A finishes | The most common type. Use for most sequential tasks where one must complete before the next begins. |
| Start-to-start (SS) | Task B cannot start until task A starts | When two tasks should begin at roughly the same time, but one drives the other. For example, writing and editing starting together on a rolling basis. |
| Finish-to-finish (FF) | Task B cannot finish until task A finishes | When two tasks must wrap up together. For example, testing and bug-fixing must finish at the same time before release. |
| Start-to-finish (SF) | Task B cannot finish until task A starts | Rare. Mostly used in shift handover scenarios where the new shift cannot end until the previous one begins. |
For most projects, finish-to-start dependencies are enough. If you find yourself using a lot of start-to-start or finish-to-finish links, it is worth checking whether your tasks are defined clearly enough.
3. A simple dependency example
Here is a website launch with finish-to-start dependencies connecting each phase:
- Define goals - no dependency, this starts the project.
- Write content - depends on Define goals finishing. You need the goals before you know what to write.
- Design mockups - depends on Write content finishing. Designs should reflect the actual content.
- Build pages - depends on Design mockups finishing. Developers need approved designs before building.
- Review and test - depends on Build pages finishing. Nothing to test until pages are built.
- Launch - depends on Review and test finishing. The site should not go live until it passes review.
Each arrow in the chart represents one of these relationships. If the design phase slips by three days, the chart immediately shows that build pages, review, and launch also shift by three days. That visibility is the core value of dependencies.
4. How do you set dependencies in a Gantt chart tool?
In most Gantt chart tools, you set a dependency by clicking on one task bar and dragging to another, or by selecting a task and choosing which predecessor it depends on from a dropdown. The tool then draws the connecting arrow and adjusts dates if needed.
In Ganttile, dependencies are set by linking tasks directly in the chart. When a predecessor task moves, any dependent tasks update automatically - you do not have to recalculate dates by hand.
A few practical tips when setting dependencies:
- Only link tasks where the sequence genuinely matters. Not every pair of tasks needs a dependency.
- Check the chart after adding several dependencies to make sure it still looks realistic. If everything is in a single chain with no parallel work, you may have over-linked.
- Add dependencies after your basic task list and dates are in place, not before.
5. How many dependencies is too many?
There is no fixed number, but a good sign you have too many is when changing one task date triggers a cascade of updates across most of the chart. That usually means tasks that could run in parallel are being treated as sequential, or tasks are broken into smaller pieces than the project actually requires.
A practical approach: link only the tasks where a delay in one would directly cause a problem in another. If a dependency exists mainly for documentation purposes rather than because missing it would break the schedule, it probably does not need to be in the chart.
6. What happens when a dependency causes a delay?
When a task with dependents slips, the Gantt chart should shift those downstream tasks automatically. That is the point - the chart shows the real impact of a delay rather than hiding it.
When that happens, you have a few options: absorb the delay by compressing a later task, add resources to speed up the bottleneck, cut scope from a dependent task, or accept the new end date. What you should not do is manually move dates in the chart to make the plan look on schedule when it is not. That makes the chart useless as a planning tool.
For more on the general process of building a chart and handling changes over time, the guide on how to create a Gantt chart covers ongoing maintenance.
Common questions about Gantt chart dependencies
- What is the difference between a dependency and a milestone?
- A dependency is a rule that links two tasks - it controls when one can start or finish based on another. A milestone is a single point in time that marks a key event or checkpoint. A milestone can have dependencies, but a dependency is not a milestone.
- Can two tasks share the same dependency?
- Yes. Multiple tasks can all depend on the same predecessor. For example, if several workstreams can only start once a kickoff meeting is complete, they all have a finish-to-start dependency on that kickoff task.
- What is a critical path in a Gantt chart?
- The critical path is the longest chain of dependent tasks from start to finish. Any delay on the critical path delays the whole project. Tasks not on the critical path have some float - they can slip a little without affecting the end date. See the Gantt chart FAQ for more.
- How do I remove a dependency without breaking the chart?
- Delete the link between the two tasks in your Gantt tool. The tasks will then become independent, and you will need to manually verify that their dates still make sense given the rest of the schedule.
Next steps
Start by identifying the three or four most critical sequences in your project - the ones where a slip in one task would directly cause a problem in another. Link those first, check that the chart still looks realistic, then add more dependencies only where they genuinely reflect how the work flows.