Milestones
A milestone marks a moment rather than a stretch of work — a delivery, an approval, a go-live. This page covers the two ways to create one, how it is drawn, and the rules it follows once it exists.
Every row on your chart is one of two things: a task, which takes time, or a milestone, which doesn’t. A milestone has a start date, no duration and no bar — just a diamond sitting on the day it happens. Everything else on the form still works, so a milestone can carry a resource, a status, notes and a dependency like any other row.
01 What a milestone is for
Use a milestone whenever the thing you want on the chart is an event rather than an effort. In a villa build that’s “Permits approved”, “Watertight”, “Handover” — moments that either happened or didn’t, with no sensible answer to “how many days did it take?”
Three reasons it’s worth the extra row:
- It reads instantly. A diamond on a chart of bars is the one thing the eye finds first, which is exactly what you want for the dates a client asks about.
- It gives other tasks something to hang off. “Electrical first fix” shouldn’t wait on the whole Structure phase — it should wait on the house actually being closed in. A milestone is the honest predecessor, and in the villa build three trades hang off “Watertight” for exactly that reason.
- It never drifts. A zero-duration row can’t quietly grow from three days to five, so a milestone in your schedule stays a fixed commitment.
02 Adding a milestone
Select the row you want the milestone to sit at, then either:
From the ribbon — Gantt Excel → Tasks → Add Milestone.
From the right-click menu — right-click the row in the task grid and choose Add Milestone. Same command, closer to hand.
Either way the Task Form opens in milestone mode. You’ll see three differences from an ordinary Add Task:
- The window is titled Add Milestone, and its first tab reads Milestone Details rather than Task Details.
- The field beside the name is labelled Milestone, not Task.
- End Date and Duration are locked in all three bands and skipped by the Tab key, so typing runs straight from the name to the dates that matter.
The form doesn’t open empty. The Estimated Start Date arrives already filled in with the next working date after today, the End Date matching it and the Duration reading 0 — so a milestone for tomorrow needs nothing but a name. Overtype the start date with the one you want — say Wed 2 September for “Watertight” — and the Estimated End Date follows it to Wed 2 September, the Duration still 0. The Baseline and Actual bands behave the same way: give either one a start date and its end date mirrors it. Click OK and the diamond appears on the chart.
03 Converting a task you already have
The second route starts from a task that already exists. Open it in the Task Form — double-click its row — and on the Task Details tab tick Convert to Milestone. Gantt Excel asks Convert this task to a milestone?
under a Confirm heading; answer Yes and the conversion happens immediately in the open form.
What changes the moment you say yes:
- The Estimated duration is set to 0 and the Estimated End Date is rewritten to match the Estimated Start Date.
- The same happens to the Baseline and Actual bands — but only where that band already has a start date. A band you never filled in is left empty rather than being invented.
- End Date and Duration lock in all three bands, and the Resource Cost figure is cleared.
- Work is recalculated from the new duration of 0 — unless you had pinned a figure there by hand, in which case yours is left exactly as it was.
- The form retitles itself — the first tab becomes Milestone Details and the window heading becomes Edit Milestone.
Nothing is written to the sheet until you click OK. This is the Turning a task into a milestone section of The Task Form; everything about what happens after the conversion is on this page.
The tickbox isn’t always there. Convert to Milestone is hidden on two kinds of row:
- A parent (summary) task — its dates are rolled up from its children, so there is nothing of its own to zero out.
- A task whose Estimated Start Date is already driven by a dependency of the FS or SS kind. Delete the link first if you really want the row to become a milestone, then convert, then re-link it.
04 How a milestone is drawn
A task is drawn as a rectangle spanning its dates. A milestone has no span, so it is drawn as a diamond centred on its single date. That is the whole visual difference, and it is why a milestone is legible at any zoom level: a one-day bar shrinks to a sliver on a yearly view, a diamond doesn’t.
“Can a milestone show a baseline and an actual too?”
Yes. In a daily view each band draws its own diamond, in that band’s colour, exactly as each band draws its own bar for a task. If you set a baseline on “Watertight” for Wed 2 September and the roof was actually finished on Mon 7 September, you get two diamonds three working days apart and the slippage is visible without reading a single date.
Whether those diamonds appear at all depends on the same two tickboxes that control baseline and actual bars — Show Baseline Bars and Show Actual Bars, in Settings.
“And in the hourly view?”
Only the Estimated diamond is drawn. The hourly view doesn’t show baseline or actual bars at all — Show Baseline Bars and Show Actual Bars are greyed out in Settings while it is on — and milestones follow the same rule: the renderer draws the Estimated diamond and hides any Baseline or Actual diamonds left over from a daily render.
This follows the view, not the chart. Switch an hourly chart into a daily view and its milestones get their baseline and actual diamonds back, with both tickboxes live again. Everything else about a milestone — dependencies, status, resources — is the same either way.
05 Milestones and dependencies
Milestones are wired into the schedule like anything else, and the two directions behave differently — which is worth knowing before you draw the links.
As a predecessor — no restrictions
Any task can wait on a milestone, using any of the four link types. This is the pattern worth building your plan around: “Electrical first fix”, “Plumbing first fix” and “Windows and doors” each take an FS link from “Watertight”, so all three start the working day after the roof is finished. Push the roofing back a week and all three trades — and everything downstream of them — move with it.
It is also the honest way to link across phases. Pointing a task at a whole summary row is fragile; pointing it at that phase’s closing milestone is exact.
As a successor — Finish to Start and Start to Start only
Open a milestone’s Dependencies tab and the Type list offers just two entries:
| Type | Code | Offered on a milestone? | Why |
|---|---|---|---|
| Finish to Start | FS | Yes | Drives the milestone’s date from the predecessor’s finish |
| Start to Start | SS | Yes | Drives it from the predecessor’s start |
| Finish to Finish | FF | No | Drives an end date, which on a milestone only mirrors the start |
| Start to Finish | SF | No | Same reason |
Both of the omitted types drive a task’s end date and let the start follow from the duration. On a milestone the end date isn’t a separate thing — it mirrors the start — so all four types collapse to two distinct outcomes, and the list is trimmed to those two rather than offering four that do the work of two.
That is a restriction on new links only, and it is worth being clear about the difference. The scheduler handles an end-driven milestone perfectly well: given a driven end date it simply moves the start to match. So a task that already carries an FF or SF link keeps that link when you convert it to a milestone, and goes on being scheduled by it — you just can’t add another one of that kind afterwards.
The lag works as normal on the two types that are offered. “Final inspection” with an FS link and a lag of 2 lands two working days after its predecessor finishes — weekends and holidays on the resource’s calendar skipped, as always. The four link types in full are covered in the Dependencies guide.
06 Turning a milestone back into a task
Plainly: the Task Form has no “convert back” control. Convert to Milestone is only shown on a row that is currently a task, and it disappears the moment the conversion happens — so once you have clicked OK, reopening the row shows you a Milestone Details tab with no tickbox to untick.
So the practical advice is the ordinary one: Cancel is your undo, and it only works while the form is open. If you are unsure whether a row should be a moment or a stretch of work, decide before you tick the box.
One related limit worth knowing while you are shaping the outline: a milestone cannot have children. Try to indent a task underneath one and Gantt Excel stops you with Milestones cannot have child tasks under them.
That follows from the same zero-duration rule — a parent’s dates are rolled up from its children, and a milestone has no room to roll anything up into. Indenting and summary rows are covered in the outline guide.
07 Common questions
Why can’t I type a duration on my milestone?
I don’t see Convert to Milestone on this task — where has it gone?
Why are Finish to Finish and Start to Finish missing from my milestone’s Type list?
My baseline diamond has vanished in the hourly view. Is it a bug?
Should I use a milestone or a one-day task?
Can I group tasks under a milestone to mark the end of a phase?
Milestones cannot have child tasks under them.The usual shape is the other way round: a summary task holding the phase’s work, with a milestone as the last row inside it marking the phase complete. Other phases then link to that milestone.
Related: The Task Form · Adding, editing & deleting tasks · Linking tasks with dependencies · Summary tasks, indenting & the WBS