← Back to Blog
·GanttPM Teamschedulinggantt

Task dependencies explained: the four types and when to use each

Finish-to-Start, Start-to-Start, Finish-to-Finish and Start-to-Finish, with plain examples of each and a look at how lag fits in.

A dependency is a rule about how two tasks relate in time. “Paint the walls after the plaster dries” is a dependency. So is “start the training materials while the software is still being built.” Get these rules right and the schedule works out the dates for you. Get them wrong and the dates look fine until the first thing slips.

Every dependency has a predecessor (the task that comes first in the rule) and a successor (the task the rule controls). There are four types.

Finish-to-Start (FS)

The successor can’t start until the predecessor finishes. This is the default and covers most real work.

Write the contract, then get it signed. You can’t sign what doesn’t exist yet. If you’re not sure which type to pick, FS is almost always the right starting point.

Start-to-Start (SS)

The successor can’t start until the predecessor starts. They can run side by side after that.

Start the build, then start writing the documentation. The writer doesn’t need the build to finish, only to have begun, so there’s something to document. Using FS here would leave the writer idle for weeks.

Finish-to-Finish (FF)

The successor can’t finish until the predecessor finishes. Start dates are free.

Testing and bug fixing. Testing can begin early and run alongside development, but it can’t wrap up until the last feature is done.

Start-to-Finish (SF)

The successor can’t finish until the predecessor starts. It’s the odd one, and you’ll rarely need it.

A night-shift guard stays until the day-shift guard arrives. The old arrangement can’t end until the new one begins. If you’re reaching for SF on a normal project task, check whether FS says what you mean.

Lag and lead

Lag adds a gap to a dependency. A 3-day lag on an FS link means the successor starts three days after the predecessor finishes. Concrete curing, paint drying and waiting for a client’s sign-off are all lag.

A negative lag (lead) does the opposite and lets the successor start before the predecessor is done. “Start ordering materials when design is 80% finished” is a lead.

Put the waiting time in the lag, not in a made-up task called “wait.” A fake task shows up as work on the chart, can end up assigned to someone, and hides the fact that it’s really just a delay.

Why the type matters

The critical path is built from these links. If a task that could run in parallel is chained with FS, the path gets longer than it should be and the project looks later than it is. If a real constraint is missing, the path looks shorter and you promise a date you can’t hit.

GanttPM supports all four types with lag, and the Gantt view redraws the critical path and slack whenever you change one. Try changing an FS link to SS on a copy of a real project and watch what it does to the finish date. You can download GanttPM and run that experiment in a few minutes.

Bring your plan across, in minutes.

Import your existing Microsoft Project files or start fresh. Free to use locally, no credit card required.