You dragged one task’s finish date out by three days, and half the schedule shuffled around in ways nobody asked for. Or the opposite happened. A date moved and nothing budged, even though two tasks clearly depend on each other. For anyone troubleshooting task dependencies in MS Project, either way something’s off, and it usually isn’t the dates.
Those dates are downstream of a decision made earlier, maybe without anyone realizing it. Linking two tasks means Microsoft Project assigned a relationship type. Finish-to-Start by default, unless it got changed. That relationship decides how the schedule reacts when anything moves. So if the reaction feels wrong, the relationship is wrong.
Think of this as a diagnosis. Instead of listing the four dependency types as abstract definitions, look at what each one actually does to a timeline when a date changes. Find the behaviour that matches the symptom, and the dependency reveals itself.
Why Task Dependencies in MS Project Move Your Schedule The Wrong Way
Most guides define the four dependency types and stop. Finish-to-Start means one task finishes before the next starts, and so on. Technically correct, completely useless when a Gantt chart is already misbehaving and the “why” is still a mystery.
Here’s the real issue. A dependency type isn’t a label. It’s a rule the scheduling engine follows every time a date gets touched. Microsoft’s own documentation on how Project schedules tasks explains that the software recalculates the whole chain from links, constraints, and calendars, in that order. You never see the calculation. Only the result moving.
And here’s the part that trips people up. Project stores the type right next to the task ID, in a shorthand most people never read. A predecessor listed as “4FS” is Finish-to-Start on task 4. “4SS” is Start-to-Start. Skip that column, and you’re flying blind on the exact setting causing the grief.
Point is, you can’t fix a scheduling problem by nudging dates. The link decides the date. Fix the link.
The Four Types, By What They Do To Your Timeline
Let’s walk through each one by the symptom it produces, not the textbook definition.
Finish-to-Start (FS) is the default, and it covers maybe 80% of real dependencies. Task A finishes, task B starts. Push A’s finish date later, and B slides later with it. This is the behaviour you expect, which is exactly why it’s rarely the source of confusion. If the schedule shifts predictably when a predecessor’s end date moves, you’re on FS and it’s working. In a finish to start project chain, pour the foundation, then build the walls – that’s the FS workhorse.
Start-to-Start (SS) links the starts of two tasks. B can’t begin until A begins. The symptom that points here: a predecessor’s finish date moved and the successor didn’t budge, which felt broken. It isn’t. On SS, only the start dates are tied together, so changing a finish does nothing downstream. Two tasks that ramp up together, like site excavation and equipment mobilization, want SS.
Finish-to-Finish (FF) ties the ends. B can’t finish until A finishes. The tell here is a successor whose start date floats freely, but whose finish suddenly jumps when the predecessor gets extended. Testing that has to wrap up alongside development is a classic FF – the two run in parallel but must land together.
Start-to-Finish (SF) is the rare, confusing one, and honestly most people who used it did so by accident. B can’t finish until A starts. If a task’s end date keeps getting dragged around by another task’s start, and it makes no intuitive sense, SF probably got applied where something else was meant. It shows up in genuine cases like shift handovers. But if nobody deliberately chose it, it’s likely a mistake.
“So the diagnostic move is simple. Note what changed (a start or a finish), note what moved downstream (a start, a finish, or nothing), and match that pair to the type above. The mismatch tells you what to switch to.”
How To Check And Change The Link
First, open the Predecessors column if it isn’t showing. Right-click any column header, choose Insert Column, pick Predecessors. Now every task shows its links in that shorthand, no guessing.
To change a type, double-click the successor task, open the Predecessors tab in the Task Information dialog, pick the relationship from the Type dropdown. That’s the clean way. You can also edit the predecessor column directly if you’re comfortable with the shorthand, typing “5FF” instead of “5” to force Finish-to-Finish on task 5.
Every new relationship defaults to Finish-to-Start. Select two tasks, hit the chain-link button on the ribbon, done, both become FS. That is the basic way to link tasks in Microsoft Project. ExperTrain’s walkthrough on linking dependencies covers the selection-and-link method in detail if you want the click-by-click version. The catch is that default. If the real relationship was SS or FF, you’ve now got the wrong type – and nobody notices until a date moves oddly.
Here’s where the real trouble lives. The four types get most of the attention, but lag and lead time project settings are what quietly wreck timelines, because they’re invisible unless you go looking.
Lag is a delay added on top of a dependency. Finish-to-Start with two days of lag means B starts two days after A finishes. Think curing time, paint drying, a mandatory wait. You enter it as “4FS+2d” in the predecessor column. The schedule holds that gap no matter how the surrounding dates move, which is exactly what you want for a real waiting period. And exactly what you don’t want if it got added by accident.
Lead is negative lag. Overlap, basically. “4FS-2d” means B starts two days before A finishes, letting the tasks run into each other. Useful when a successor can begin while the predecessor wraps up its final stretch. The Microsoft Community Hub’s piece on advanced task dependencies gets into how lead and lag interact with the newer Project for the web engine, worth reading if you’re seeing overlaps you didn’t intend.
Here’s the failure mode. Someone types “+2d” when they meant “-2d”, or leaves a lag in place after the reason for it disappeared. Now the schedule carries a phantom gap that stretches the whole project, and because lag doesn’t show up as its own row, nobody spots it. Every date past that link is wrong by two days and the Gantt bars look perfectly normal.
So when a project runs longer than the task durations add up to, check the lag values before anything else. Scan the predecessor column for “+” and “-” entries and confirm each one has a real reason. Dale Howard’s MVP guide on setting dependencies is blunt about this – most mystery slippage is lag nobody remembers adding.
Troubleshooting The Common Symptoms
Nothing moves when I change a date. Likely SS or FF, and you’re changing the wrong end. SS ignores finish changes, FF ignores start changes. Switch the type, or change the other end of the task.
Everything moves too much. Usually a chain of FS links with a constraint fighting them, or accumulated lag. Check whether a task has a hard constraint like “Must Start On” overriding the link, since constraints beat dependencies in Project’s calculation order.
A task’s finish jumps but its start stays put. That’s Finish-to-Finish doing its job. If that’s not what you wanted, switch to FS.
The end date gets dragged by another task’s start. Start-to-Finish, almost always applied by mistake. Change it to whatever you actually meant, probably FS.
FAQ
What’s the default dependency type in Microsoft Project?
Finish-to-Start. Every link created with the ribbon’s link button becomes FS unless you change it in the Task Information dialog or the predecessor column shorthand.
How do I read the predecessor column shorthand?
The number is the predecessor task’s ID, the letters are the type. “7FS” is Finish-to-Start on task 7, “7SS” is Start-to-Start, “7FF” is Finish-to-Finish, “7SF” is Start-to-Finish. A “+3d” or “-3d” suffix is lag or lead time.
Why did my whole project get longer after one small edit?
Most often accumulated lag time you didn’t intend, or a constraint overriding your links. Scan the predecessor column for “+” values and check for hard constraints, since Project’s scheduling engine ranks constraints above dependencies.
When should I use Start-to-Start instead of Finish-to-Start?
When two tasks need to begin together but don’t need to finish together. Excavation and equipment mobilization ramp up at the same time, so their starts are linked while their finishes stay independent. Wrike’s dependency guide has more parallel-task examples.
Is lead time the same as lag?
Lead is negative lag, meaning overlap instead of delay. “FS-2d” (lead) lets the successor start two days before the predecessor finishes. “FS+2d” (lag) forces a two-day gap after. Same field, opposite sign, opposite effect.
Bringing It Together
When task dependencies in MS Project move wrong, the dependency type is the first suspect, not the dates. Match the symptom to the behaviour, what changed against what moved, and the correct type reveals itself. Then check lag and lead, because a stray “+2d” is behind more mystery slippage than any other single cause. Read the predecessor column, decide the relationship before you link, and the Gantt chart starts behaving.

