Maintenance program
Work order backlog analyzer
Paste a work order export and get the shape of your backlog: how old it is, what is overdue, what nobody owns, and whether it is growing.
This browser is not saving anything, so your export will be gone when you leave. Private browsing usually causes this.
Paste your work order export
A CSV or a block copied straight out of a spreadsheet. Keep the header row: it is what the column guessing reads. Commas, quoted fields and tabs are all handled.
Which column is which
Guessed from your headers. Change anything that is wrong before reading the numbers. Status and Created date are the two that have to be set.
Breakdown by
Oldest open work
Reading a backlog
A backlog count on its own decides nothing. Four hundred open work orders is a normal week at one plant and a standing emergency at another, and the number is the same in both cases. What changes the decision is the shape underneath it.
Age before size
Two backlogs of four hundred jobs can need opposite responses. If almost all of them were raised in the last fortnight, the work is real and simply has not been planned yet, which is a scheduling problem a planner can fix in a week. If the average job is four months old, no amount of scheduling helps: more work is arriving than the crew can absorb, and the answer is either more hands or fewer work orders.
Arrivals against completions
The only figure that says whether things are getting better is how much work came in against how much went out over the same period. A backlog that shrank this month while arrivals doubled is about to grow. Watch the gap rather than the total, and watch it over several months, because one bad week of breakdowns moves a single month a long way.
Work nobody owns
Unassigned work orders are worth pulling out because they behave differently from the rest. An assigned job that slips is visible to the person it slipped from. An unassigned one is visible to nobody, so it ages quietly until it turns up in the over-90-days bucket. The same goes for work orders with no due date, which can never be late and so never appear in an overdue figure.
Turning a count into a conversation
Hours are what let a backlog be argued about. Four hundred jobs means nothing to a finance director; six weeks of work at current crew size means something immediately, and it is the same fact. If your work orders carry estimated hours, map that column and set the crew capacity, and the backlog stops being a count and becomes a staffing question with a number attached. If you already know the hours and the crew size and just want that one figure, the maintenance backlog calculator does it from three numbers without an export.
Frequently asked questions
What counts as backlog here?
Every work order still open at the as-of date, whatever your CMMS calls the status. Open, In Progress, On Hold, Awaiting Parts and anything unrecognised are all treated as open. Completed, Closed, Done, Finished and Resolved are treated as finished, and Cancelled, Void, Rejected and Duplicate are dropped from the backlog entirely rather than counted as work.
A blank status counts as open, because a row in an export with nothing in the status column is far more often an unfinished job than a finished one.
How much backlog is too much?
Two to four weeks of work at current crew capacity is the range most planned programs aim for. Below two weeks the planner has nothing to schedule from and the crew ends up reacting; much above four and the oldest jobs stop being real, because anything sitting for a quarter has usually been worked around.
That range only means anything once you have hours on the work orders. A count of 400 open jobs tells you nothing without knowing whether they are ten minutes each or two days each.
My export does not have these column names.
Nobody's does. The tool guesses from the headers it finds and then shows you what it guessed, so you can change any of it before reading a single number. Only Status and Created date have to be mapped; everything else adds a section when it is there and is left out when it is not.
Does my export get uploaded anywhere?
No. The file is read in your browser and never leaves it. There is no account and no server call. What you paste is saved in this browser so the page still has it when you come back, and the Clear button removes it.
Why does the age profile matter more than the count?
Because the two common backlogs look identical in a count and need opposite responses. Four hundred jobs all raised in the last fortnight is a scheduling problem: the work is real, it just has not been planned yet. Four hundred jobs averaging four months old is a capacity problem, and no amount of scheduling fixes it.
The over-90-days bucket is the one to read first. Work that has sat for a quarter has usually either been done informally and never closed, or was never going to be done at all.
What does it mean if more work arrives than gets finished?
That the backlog is growing, and that every plan built on clearing it is out of date. The trailing 30 day figures show raised against completed. If arrivals beat completions month after month, the gap is a capacity or a screening problem, not a planning one.
It can also mean requests are being raised that should never become work orders. A rising arrival rate with a falling average job size usually points there.
Why are some work orders counted but missing from the age chart?
Because their created date could not be read. Those are reported separately rather than dropped or guessed at, since a date this tool cannot parse is usually a date your reporting cannot parse either.
Watch this without pasting an export every month
The Backlog Health Dashboard in UpKeep runs this against live work orders: age profile, overdue and unassigned work, and arrivals against completions, updated as the work moves.