PM Calendar
Project every preventive maintenance task forward across a planning horizon, see which weeks are overloaded before they arrive, and level the work against the hours you actually have. Runs entirely in your browser. Nothing is uploaded.
Version 1.0.0 · Updated Aug 20, 2026
Use PM Calendar now
Runs in your browser · nothing is uploaded
This in-page version cannot save your work between visits — browser storage is switched off inside the sandbox. The full version saves your work locally after download.
Overview
Frequently asked questions
How does the PM Calendar licence work?
It is a one-time purchase for a downloadable tool — no subscription. You buy it once and the file is yours to keep and use.
Can I try the PM Calendar before buying?
Yes. Use the Try online button for a fully interactive demo with sample data already loaded — nothing to install and nothing is saved.
Can I import my data from a spreadsheet?
Yes. Use the Spreadsheet template button to save a CSV with the right headings, fill it in Excel or any spreadsheet, then Import spreadsheet to load it back. The file is read in your browser — nothing is uploaded.
Does my data stay private?
Yes. The tool is a single HTML file that runs entirely on your computer and makes no network requests, so nothing you enter is ever uploaded or shared.
Do I need Excel or any other software?
No. It replaces the spreadsheet template entirely: open the file in your browser (Chrome, Edge, Firefox or Safari) on Windows, Mac, Linux or a tablet, and start working.
How to use PM Calendar
The complete in-tool guidance, reproduced here so you can read it before you download.
What this tool does
CM8-350 takes your recurring maintenance tasks and projects every occurrence forward across a planning horizon, so you can see which weeks are overloaded before they arrive. It totals the hours week by week, draws them against the capacity you actually have, splits the annual load by trade and by criticality, and shows how much room each task has to move.
Everything runs inside this single file — no account, no upload, no network request of any kind.
How this differs from a PM schedule
A maintenance schedule answers "what has to be done to this asset, and how often". This answers a different question: "can we actually do it?"
Most PM schedules are written task by task, each one sensible on its own, and nobody adds them up until the weeks start being missed. The compliance figure then falls and the response is usually to chase people, when the real problem is that the schedule asks for ninety hours in a week that holds forty-two. This tool exists to find that out in advance.
What one row is
One row is one recurring task on one asset — not one occurrence. "Change the filter element every three months" is a single row that generates an occurrence every three months forward across the horizon. If a pump has four different PM tasks at four intervals, that is four rows.
Enter hours as labour hours, not elapsed time. Two fitters for an hour is two hours, because that is what it costs you in capacity. The people field is recorded separately for planning; it does not multiply the hours, so do not double-count.
How occurrences are projected
Everything is projected from the last completion date:
First occurrence = last completed + interval Each one after = previous occurrence + interval Interval in days: days × 1 · weeks × 7 · months × 30.44 · years × 365.25
This is a floating schedule: it counts from when the task was last done, not from when it was last due. If a monthly task was done three weeks late, the next one moves three weeks with it. That matches how most maintenance actually works — the point of greasing a bearing every month is that a month has passed since it was greased — but it does mean a schedule can drift permanently later if tasks are habitually done late. The Position column tells you when that is happening.
Why a monthly task drifts
A month here is 30.44 days and a year is 365.25 — the averages. Real calendars do not work that way, so a monthly task lands on the 3rd, then the 2nd, then the 1st across a year, and an annual task can move by a day.
This is deliberate and it is stated on the report. This tool is a workload forecast: it answers how many hours fall in week 14, and a day either side does not change that answer. It is not a diary and should not be used as one. If a task must happen on the first Monday of the month, that belongs in whatever system issues the work.
The weekly load chart
Each bar is the total labour hours of every occurrence falling in that week of the horizon. Bars above the capacity line are drawn in red. Week 1 starts today, not on a calendar boundary, so "W1" means the next seven days.
Overdue work is not carried into week 1. Occurrences before today are stepped past, because a bar containing eight months of arrears tells you nothing about next week's capacity. Arrears are reported separately, in the tiles and the overdue table, where they can be dealt with as their own problem.
Usable capacity, not headline capacity
Usable capacity = weekly hours available × (1 − reactive %)
The capacity line is not your headcount multiplied by 37. It is what is left after breakdowns, projects, meetings, training and everything else that eats a maintenance week. Thirty percent is a common figure in a reasonably controlled plant and forty to fifty is common in one that is not; if you do not know yours, take it from the split between planned and unplanned work orders over the last few months rather than guessing.
Setting this honestly is the whole point. A capacity line drawn at 100% of theoretical hours will show a schedule that fits, and it will still be missed every week.
Tolerance windows
The window is how far a task may move without counting as missed — seven days either side of a monthly task, say. It drives two things: the Position column, which distinguishes "overdue but inside its window" from "missed", and the timeline chart, where the bar is the window and a task with no tolerance is drawn as a diamond.
Statutory work usually has a window of zero: the date is the date, and there is no such thing as nearly compliant. Give routine condition checks a generous one. The tool refuses a window wider than half the interval, because at that point consecutive occurrences overlap and the schedule is fiction.
Levelling the work
When a week is over capacity, there are only four honest moves, and the tool is built to help you judge which:
- Move something. The timeline shows which tasks have room. Move the widest windows first and never move a diamond.
- Change an interval. The annual table shows what each task costs you a year. A weekly check that could be fortnightly halves a line in that table — but only change an interval for a reason you could defend to somebody investigating a failure.
- Reduce the hours. Better kits, better access, a second person to halve the elapsed time on a shutdown task.
- Buy capacity. Contract out the peak. The trade chart tells you what skill to buy, which is usually a more useful answer than "more hours".
What is not an honest move is leaving the schedule as it is and hoping. That is the option this tool makes visibly untenable.
Annual hours
Occurrences a year = 365.25 ÷ interval in days Hours a year = occurrences a year × hours per occurrence
The annual figure is a rate, not a count of what will happen in this calendar year. A task done every four thousand days contributes a fraction of an occurrence a year, which is correct: over a long enough period it costs you that much capacity on average.
What this does not do
- It does not issue, raise or close work orders, and nothing here is a record that a task was done.
- It does not know about shutdowns, holidays or production plans. A week with no production is still a week with 60 hours of capacity as far as this tool is concerned.
- It does not handle condition-based or usage-based triggers. A task due every 500 running hours has to be converted to a time interval at your current duty, and re-checked when duty changes — the sample calendar has one of these in it.
- It does not know your statutory inspection dates. Where a date is set by an inspecting body, it is set by them, and the projection here is only a reminder.
- It does not measure compliance. The target percentage in Settings is recorded for context; proving what was actually done on time needs the completion record, which lives in whatever issues the work.
Printing and sharing
The Report tab prints the tiles, charts and both tables with a title block you fill in. Filter to one trade before printing if you are handing somebody their own load, or to safety-critical work if the audience is a safety committee.
Saving your work
The calendar is held in this browser, on this computer, and stays there between visits. Use the backup button to write a JSON file you control; that file is the only copy that survives clearing browsing data or moving to a new machine. The spreadsheet download gives you the same rows to work with elsewhere.
Accuracy & disclaimer
Every interval, duration and capacity figure here is yours. The tool multiplies and adds them and draws the result; it has no view about whether an interval is safe, whether a task is necessary, or whether the person doing it is competent to. Where the law or an insurer sets an inspection interval, that interval is the one that applies, whatever this calendar shows.
Where this fits
Part of Preventive Maintenance in Maintenance & Reliability.
Related tools
Plan and record greasing and oiling by lubrication point and route — intervals, due dates, colour codes, quantities, condition findings and a compliance rate you can defend. Runs entirely in your browser. Nothing is uploaded.
Plan preventive maintenance task by task, see exactly what is overdue and what is safety critical, and measure PPM compliance honestly — completed on time divided by everything that fell due. Runs entirely in your browser; nothing is uploaded.
Log reactive maintenance jobs, measure response and fix times in elapsed hours against a target for each priority, and print a service level report with first-time fix rate and cost by location. Nothing is uploaded.
Keep the life history of every machine — one line per intervention, from commissioning to overhaul — and read the reliability out of it: mean time between failures, mean time to repair, repeating failure modes and lifetime maintenance cost against replacement. Nothing is uploaded.
Log every machine stoppage, split planned from unplanned, cost the lost production, and get MTBF, MTTR and a Pareto of causes from your own data. Runs entirely in your browser. Nothing is uploaded.
Keep a critical spares and MRO store register — every part linked to the machine it fits, classified vital, essential or desirable, with minimum stock, lead time, single-source and obsolescence risk, cover months and a dead-stock list. Nothing is uploaded.