Free Tool

Project Milestone Generator

Plan a sequence of dates that respects weekends, public holidays, and your own minimum gaps -- anchored to a start date, an end date, or both.

Timeline
Add milestones and set at least one date to see the timeline.
Milestones
Start
End
Calendar settings
Working days
Custom non-working dates

    What is this?

    I built this because most "deadline calculators" I could find either count calendar days between two dates or are full project management apps that need a sign-up and a month of configuration. There's a useful gap in the middle: something that takes a handful of named phases, some minimum time requirements, and one or two fixed dates, and tells you exactly when everything lands -- accounting for weekends, bank holidays, and anything else that shouldn't count as a working day.

    The constraint solver is the core of it. Set a start date and it walks forward, placing each milestone after the previous one. Set a deadline and it walks backward. Set both and it distributes any spare time (slack) across the phase durations -- either evenly or proportionally, so longer phases get more breathing room. If your constraints are impossible, it tells you exactly how many working days short you are.

    I design learning solutions, so I have added my own custom process in the templates, and it works great for me and most learning designers. But it works just as well for product launches, event planning, instructional design, or any project with a clear sequence of stages. There are built-in templates for common frameworks -- ADDIE, SAM, Agile Sprints, PRINCE2, and more -- to get you started quickly. Each milestone can be colour-coded, which makes it easier to read a busy timeline at a glance or group related phases visually.

    How to use it

    1. Click the anchor icon next to the Start date, the End date, or both, to fix your project boundaries. The mode (Forward, Backward, or Bidirectional) is set automatically based on which anchors are active.
    2. Set your working days and choose a country for public holidays. Add any custom non-working dates -- studio closures, sprint freezes, annual leave -- using the Calendar Settings panel.
    3. Click 'Templates' to load a ready-made milestone set for your workflow, or click '+ Add milestone' to build from scratch. Give each milestone a name; use the cog icon to set a minimum gap from the previous stage, a minimum duration in working days, notes, and a colour.
    4. Dates update in real time as you type. The timeline shows each phase as a solid bar, with a dashed line before it representing the minimum gap. Hover any diamond node for a full date breakdown. Drag the handles on the left to reorder milestones.
    5. Pin any individual milestone to a specific due date using the anchor icon on its card -- useful when one stage has an immovable external deadline within a longer project.
    6. When you're happy, save as JSON to reload later, copy a share link, or export to CSV, ICS (calendar), Markdown, or PDF.

    PLEASE NOTE

    Changing the dates or anchors on the START or END will refactor existing milestones. Feel free to have a play around, and you can always revert, but you're better off dealing them in from the very beginning. Similarly the START and END are absolute dates while anchored and ignore the non-working days. Double check your first milestone's start date to make sure it's sitting on a working day.

    Forward, backward, and bidirectional scheduling

    The mode is set automatically based on which anchors you've enabled.

    Forward

    You know when you're starting but the end date is flexible. The tool walks forward from your start date, placing each milestone after the one before it. Good for "I have a project kicking off on Monday -- when does everything land?"

    Backward

    You have a hard deadline and need to know when to start each phase. The tool walks backward from your end date, placing earlier milestones first. Good for "I have to deliver by the 15th -- when do I need the brief approved?"

    Bidirectional

    Both start and end are fixed. The tool calculates how much spare time is available (the slack) and distributes it across the phase durations, so each phase runs longer than its stated minimum. If there's not enough time for even the minimum durations and gaps, it flags the schedule as overconstrained and tells you by how many days. Choose Even slack to spread the extra time equally across all phases, or Proportional to give more breathing room to the longer ones.

    Working days, weekends, and holidays

    By default the tool counts Monday to Friday as working days. You can change this -- some industries work six-day weeks, or you might want to schedule something that runs across weekends. Tick or untick the day checkboxes to suit your pattern.

    Public holiday data comes from the date-holidays library, which covers around 200 countries and regional variants. If you're in Scotland, you'll get different holidays from someone in England and Wales; states in the US, Germany, and Australia have their own calendars too. The country defaults to whatever your browser locale reports, with a fallback to the UK.

    Custom non-working dates let you add anything the standard holiday calendar misses: studio closures, team off-sites, client blackout periods, anything at all. Add them as single dates or ranges. They're saved between visits in your browser's local storage so you don't have to re-enter recurring closures.

    Even vs proportional slack

    In bidirectional mode (both anchors set), any spare working days beyond the minimums get distributed into the phase durations. Even gives the same number of extra days to each milestone, regardless of how long each phase already is. Proportional weights the distribution by each phase's minimum duration -- so a four-week development phase gets more contingency than a one-day sign-off meeting.

    Proportional is the default because it tends to produce schedules that feel right: the phases with the most work absorb the most slack. Switch to Even when you have many short phases of roughly equal weight and want a uniform buffer between them.

    Privacy

    Everything runs entirely in your browser. Your project data is never uploaded anywhere -- there's no server involved and no analytics on what you enter. Preferences (working days, country, custom non-working dates, slack distribution) are stored in your browser's local storage. The actual milestone schedule is only persisted if you explicitly save the JSON file or copy a share link.

    Built by Shane Ivers. I also run Silverman Sound Studios -- a royalty-free music library for content creators.