Asset Register & Maintenance Log

Keep one list of the equipment your organisation owns, with what each item is worth on paper today, when its warranty ran out and when it is next due a service. There is a tick-box sheet to print and carry round the building.

How to use it

Each item needs three things from you: what it cost, when you bought it, and how many years it should last.

  1. Fill in one asset Tag, description, where it lives, who looks after it, what it cost, the date you bought it and how many years you expect it to last. Save it. The example register already on the page shows the shape of it.
  2. Check the book value As soon as there is a cost, a purchase date and an expected life, the panel under the form shows the annual charge, the depreciation built up so far and what the asset is worth on paper today.
  3. Log the servicing Pick an asset in the register, then add a log entry: the date, what was done, what it cost, who did it and when it is next due. The next-due date is what feeds the overdue list.
Full instructions

Dashboard

Add an asset

The label stuck on the item
What it is worth at the end of its life

The register

TagDescriptionCategoryLocation PurchasedCostBook value WarrantyNext service

Click a row to open it in the form above. The filters here decide what goes on the audit sheet and into the CSV exports.

Maintenance log

Leave blank if nothing is booked
DateAssetWork doneByCostNext due

Import and export

CSV opens in any spreadsheet

Drop a CSV here

a register or a maintenance log · the first row must be the column names

Choose a file

Rows are matched on the asset tag: a tag already on the register is updated, a new one is added. Nothing is deleted by an import.

In depth

Keeping an asset register: book value, warranty dates and the service that is already late

A register of equipment answers two awkward questions: what do we own, and is it still where we think it is. This article goes through every part of the tool — the fields worth filling in, how the straight-line book value is worked out and why the three bases give different answers, how the maintenance log drives the overdue list, how to get an existing spreadsheet in without mangling the dates, and how to filter the register down to one room before printing a count sheet.

The two questions a register has to answer

Small organisations rarely start with a register. They start with a drawer of invoices, a shared folder of PDFs and somebody who remembers roughly when the oven was bought. That works until an insurer, an auditor, a grant funder or a new manager asks a question that the drawer cannot answer.

The first question is about value. What is on the books, what has it been written down to, and what should the depreciation charge be this year. That is an accounting question and it wants numbers.

The second question is about existence. There are fourteen laptops on the list — are there fourteen laptops in the building. That is a physical question and it wants a person walking round with a sheet of paper.

A register that only answers the first is a spreadsheet nobody checks. A register that only answers the second is a stock take with no money attached. This tool is built to do both from the same list, which is why the audit sheet carries book values and why the filters that narrow the table also narrow the printout.

What is worth recording about a piece of kit

The form has twelve fields and a notes box. Not all of them earn their place on every asset, but each one exists because leaving it out causes a specific problem later.

The asset tag is the code physically stuck on the item. It is the single most useful field, because it is the only one that ties the row to the object. Stick the label on first and type the same code here. Inventing tags at the keyboard, with nothing on the item, produces a register that reads beautifully and cannot be checked.

The description should be the thing a stranger would recognise. "Combi oven, six grid" is better than "kitchen equipment", and better than a full model string that nobody can match to the machine in front of them. Category and location are what the filters run on, so keep them consistent: pick "IT equipment" or "IT" and stay with it, because the two will not group together.

The owner is whoever is answerable for it, not whoever happens to use it. During a count that is the person you go and ask when the item is not where the register says. The serial number matters for insurance claims and police reports, and it is the field that turns a stolen-laptop conversation from vague into actionable.

Purchase date, purchase cost, residual value and expected life are the four the depreciation runs on. Warranty expiry is separate and often forgotten, and it is the one that saves real money.

Straight-line depreciation, in plain terms

Straight line is the simplest way to spread the cost of something over the years you expect to use it. Take what you paid, subtract what you think it will be worth at the end, and divide by the number of years. That is the annual charge.

A desktop PC that cost 780 with a residual value of 50 and a four-year life has a depreciable amount of 730. Divide by four and the annual charge is 182.50. After three years and four months, the tool has charged 608.33 and the book value is 171.67.

The panel under the form shows all three figures as soon as it has a cost, a purchase date and an expected life. Take one of them away and it says which one is missing rather than quietly showing zero, because a book value of nothing and a book value that has not been worked out are very different things.

Depreciation stops at the residual value. It never runs past it and it never goes negative, however old the asset gets. Once the expected life has run out the asset is marked as fully depreciated and the panel says so: it is still in use, it still needs servicing, it just carries no value in the books.

Why the first part-year is the argument

Everyone agrees on the annual charge. What people disagree about is how much to charge in the year you bought the thing, and that is why the panel offers three bases.

Whole months is the default. Nothing is charged until an asset has been owned a full month, then a twelfth of the annual charge for each completed month. This is what most small-business bookkeeping does and it is easy to defend in a conversation with an accountant.

Day by day divides the elapsed days by 365.25 and charges that fraction. It is the smoothest of the three and it makes mid-month purchases behave sensibly, which matters if you buy a lot of equipment and the timing is arbitrary.

Full year in the year of purchase charges a whole year's depreciation the moment the asset is bought, then another full year for each anniversary. It is the bluntest, and some organisations prefer it precisely because there is nothing to work out and nothing to argue about.

Switch between them on the example register and the total depreciation moves by a few thousand. That is not a bug, it is the point: the convention is a choice, and the tool makes the choice visible instead of burying it. Pick the one your accounts already use and leave it alone, because switching part way through a year makes the register disagree with the books.

Residual value, the field everyone leaves at zero

Residual value is what you expect the asset to be worth when you have finished with it. Leaving it at zero is right for most things. A four-year-old office PC is worth nothing worth accounting for, and a set of stacking chairs is worth whatever somebody will pay to take them away.

It is wrong for anything with a real second-hand market. A minibus bought for 14,500 will not be worth nothing after eight years. Put 3,000 in the residual box and the depreciable amount drops to 11,500, the annual charge falls from 1,812.50 to 1,437.50, and the book value settles at 3,000 instead of running down to zero.

That difference matters when the vehicle is sold. If the register has already written it down to nothing, the sale shows up as a large one-off gain that nobody planned for. If the residual value was set sensibly, the sale roughly matches the book value and there is no surprise.

If you type a residual value above the purchase cost, the tool warns you and treats the depreciation as nil rather than charging a negative amount. That usually means the two figures have been typed into the wrong boxes.

The maintenance log and the date that drives everything

Each log entry has five parts: the date the work was done, what was done, what it cost, who did it, and when it is next due. The first four are history. The fifth is the only one that does anything.

The dashboard's overdue and due-soon counts are built entirely from next-due dates. An entry logged without one is still worth having — it records the spend and the history — but it leaves the asset in the "no service booked" bucket, where it will sit quietly forever.

So when you log a service, set the next-due date at the same time, while you have the paperwork in front of you and know the interval. Six months for a lift inspection, twelve months for a gas safety check, whatever the certificate says.

When an asset has several entries, the tool takes the next-due date from the newest entry that has one. That rule is chosen deliberately. Taking the newest entry outright would lose the schedule the moment somebody logged a one-off repair after a scheduled service. Taking the latest date on the whole log would let an old, optimistic entry hide an inspection that has actually been missed.

Overdue, due soon and nothing booked are three different states

The chips across the top of the dashboard count them separately, and the difference is worth understanding.

Overdue means a next-due date has gone past the valuation date. That is a real problem and, for statutory inspections, potentially a legal one. The alert box names the actual items and says how many days late each one is, because a count of three overdue inspections does not tell you which building to walk to.

Due soon means the date falls inside the window you set in the panel, which starts at thirty days. Widen it to ninety if you book contractors a quarter ahead; narrow it to seven if you want the list to be things to do this week.

Nothing booked means no entry on that asset carries a next-due date at all. It is honest rather than alarming, and it is the bucket that quietly grows. It is worth emptying occasionally: a chair does not need a service schedule, but a boiler with nothing booked is a gap, not a chair.

Every chip is a filter. Click it and the register narrows to just those assets; click it again to go back. Since the audit sheet follows the filters, that also means you can print a sheet of only the overdue items and hand it to whoever is chasing the contractors.

Warranty dates earn their keep in the last month

A warranty is worth nothing on the day you buy the item and everything in the week before it expires. That is the week to test the thing properly, raise the fault you have been living with, and decide whether to pay for an extension.

The register treats warranty expiry with the same window as maintenance. An asset whose warranty ends inside the window shows in the "warranty ending soon" chip and gets its own line in the alert box. Once the date passes it moves to "out of warranty", which is a useful column to sort by when you are deciding what to replace next.

Warranty is a separate date from expected life on purpose. A printer with a five-year expected life and a two-year warranty spends three of those years as a repair bill waiting to happen, and the register should show both facts rather than blur them into one.

Leave the field blank if there is no warranty, or if you genuinely do not know. Blank sorts to the bottom rather than pretending to be an expiry today, so it will not clutter the top of a list you are working through.

Filter first, then print the audit sheet

The audit sheet is a plain black-and-white page built for a clipboard. It lists the assets grouped by location, with a tick box beside each one and empty columns for condition and for a note about where the item was actually found.

It prints whatever the register filters have left. That is the important part. A count is walked room by room, so filtering to one location and printing that is far more useful than one long list that sends the counter back and forth across a building. The sheet's header records the selection it was printed with, so a stack of sheets from different rooms cannot be muddled up.

Each location group gets a subtotal of book value and the sheet gets a grand total, which is what an auditor will want to reconcile against. There are lines at the bottom for items seen, items missing, a signature and a countersignature.

Tick the "show the audit sheet on screen" box to see exactly what will come out of the printer before you commit paper to it. The sheet prints in landscape, because ten columns on a portrait page is a squeeze.

One caution, printed on the sheet itself: it lists serial numbers. A printed list of serial numbers left on a corridor windowsill is a shopping list. Collect the sheets in when the count is done.

Bringing an existing list in from a spreadsheet

Almost nobody starts from nothing. There is usually a spreadsheet somewhere with most of the assets on it, and retyping it is how the project dies. Drop the file on the import panel instead.

Column names are matched loosely. Asset tag, asset_tag, Tag, Asset ID and Barcode all land in the tag field. Purchase date, Purchased, Date acquired and Invoice date all land in the purchase date. Cost, Purchase price and Net cost all become the cost. If your headings are unusual, download the blank template and copy its headings across.

The tool works out for itself whether it is looking at a register or a maintenance log. A file with columns like Work done, Next due or Contractor is treated as a log; a file with Purchase date or Expected life is treated as a register. Import them one at a time, register first.

Rows are matched on the asset tag. A tag already on the register updates that asset's fields; a new tag adds an asset; anything not mentioned in the file is left alone. Nothing is ever deleted by an import, so you can import a partial file to correct one column without risking the rest.

A log line whose asset tag is not on the register creates a placeholder asset rather than being thrown away. Losing a service history because the register was imported in the wrong order is a much worse outcome than a stub row you can fill in later.

The date trap, and how to avoid it

The single most common import problem is dates. A file that reads 03/09/2026 means the third of September to most of the world and the ninth of March to the United States, and no amount of cleverness can tell which from the file alone.

The tool uses the date format set in the panel to decide. Set it to 31/12/2026 before importing a British file and to 12/31/2026 before importing an American one. Where a date settles the question by itself — 25/12/2026 cannot be a month twenty-five — it is read correctly whatever the setting says.

ISO dates in the form 2026-09-03 are never ambiguous and are always read correctly. If you have any control over the file you are importing, export it with ISO dates and the problem disappears. That is why the CSV exports here always write ISO, even when the screen is showing something friendlier.

If a date cannot be read with confidence it is left blank rather than guessed, and the message after the import tells you how many were dropped. A blank purchase date is obvious and fixable. A date silently read the wrong way round is neither.

Disposals: change the status, do not delete the row

When something is scrapped, sold or stolen, the temptation is to delete it. Resist it. Set the status to Disposed or Written off instead.

A disposed asset stays on the register as history. It shows greyed out in the table, it is left out of the cost, depreciation and book value totals because you no longer hold it, and it keeps its maintenance log. Six months later, when somebody asks what happened to the old reception laptop, the answer is on the register with a note saying it was wiped and taken to the recycling centre.

Deleting really does delete, and it takes the asset's log entries with it. The tool asks for confirmation and reminds you that a status change is usually what you actually wanted. There is a place for deletion — a row typed twice, a test entry — but a real asset that has left the building is not it.

The Show filter has an entry for finding disposals again, so they can stay out of the way without being lost.

Where the register lives, and what that means for you

Everything is held in this browser's own storage on this device. There is no account, no server and no upload. Nothing you type is sent anywhere, and the page works with the network disconnected.

That is the right arrangement for this kind of data. An asset register describes what an organisation owns, where it keeps it and who holds it, alongside serial numbers and values. It is exactly the sort of list that should not be sitting in somebody else's database because it was convenient.

The trade is that it is tied to this browser. It will not appear on your phone, a colleague will not see it, and clearing your browsing data will remove it along with everything else. The register saves itself after every change, including a half-typed asset you have not saved yet, so a refresh or a closed tab costs you nothing — but a wiped browser costs you the lot.

So take the JSON backup. It contains the whole register, the whole log and your settings, it ignores the filters, and it is a plain text file you can keep wherever you keep your other records. That file is also how you move a register to a different machine.

The two CSV exports are for a different job: handing figures to somebody else. Both follow the register filters, both open straight in a spreadsheet, and the register export adds the annual charge, the depreciation to date, the book value and the next service date as extra columns, so an accountant gets the workings and not just the inputs.

Starting from nothing without giving up in week two

If you have no list at all, do not try to build a perfect one. Registers fail because somebody sets out to capture every stapler and stops after a corridor.

Set a floor. Anything that cost more than some figure — five hundred, a thousand, whatever suits the organisation — goes on the register. Anything below it does not, however tempting. Write that figure down somewhere so the next person applies the same rule.

Then do it room by room. Walk one room, label what qualifies, type it in with the tag, description, location and whatever you can find about the cost. Purchase dates and costs can be filled in later from the invoice folder; the physical facts are the ones that are only available while you are standing in the room.

Use the Duplicate button for anything that comes in batches. Copy a saved asset, take the suggested next tag, change what differs and save. Forty stacking chairs bought together can be one row with a description that says so, which is more honest than forty rows nobody will ever count individually.

Once the list exists, the maintenance log fills itself in as work happens. That is the part that keeps the register alive: it stops being a document somebody made once and becomes the place people look before booking a contractor.

Help

One list of your kit, and the three dates that matter

Each item needs three things from you: what it cost, when you bought it, and how many years it should last. Everything else follows from those — this year's depreciation, the value it carries today, and where it stands against its warranty. Services are logged as you do them, so the next due date moves along on its own.

Fill in one asset

Tag, description, where it lives, who looks after it, what it cost, the date you bought it and how many years you expect it to last. Save it. The example register already on the page shows the shape of it.

Check the book value

As soon as there is a cost, a purchase date and an expected life, the panel under the form shows the annual charge, the depreciation built up so far and what the asset is worth on paper today.

Log the servicing

Pick an asset in the register, then add a log entry: the date, what was done, what it cost, who did it and when it is next due. The next-due date is what feeds the overdue list.

Read the dashboard

The chips across the top count what is overdue, what falls due inside your chosen window, what has come out of warranty and what is fully depreciated. Click a chip to filter the register to just those items.

Filter, then print

Narrow the register to one location or one category, then print the audit sheet. It carries only the rows the filter left, grouped by location, with a tick box beside each one.

Export or back up

Register CSV and maintenance CSV both follow the filter. The JSON backup always holds everything, and dropping either CSV back on the page merges it in by asset tag.

It saves as you type, in this browser only

The register is written to this browser's own storage after every change, so a refresh or a closed tab does not lose it. That also means it is tied to this browser on this device: it will not appear on your phone, a colleague will not see it, and clearing your browsing data will wipe it. Take a JSON backup if the register matters.

Good to know

Nothing is uploaded

Every figure stays on your device. Asset lists give away a lot about an organisation — what it owns, where it keeps it and who holds it — which is exactly the sort of thing that should not be typed into someone else's server.

Book value is not market value

Straight-line depreciation is a bookkeeping convention, not a valuation. A three-year-old laptop written down to a third of its cost may be worth far less than that second hand, and a well-kept machine tool may be worth far more.

Tag before you type

Stick a physical label on the item first and type the same code here. An audit is only quick if the number on the sheet is the number on the item, and inventing tags at the keyboard produces codes nobody can find later.

Set the next-due date at the time

The overdue list is built entirely from next-due dates. An entry logged without one leaves the asset in the "no service booked" bucket, which is honest but easy to ignore.

Residual value stops the write-down

Give a van a residual value and depreciation stops there instead of running to zero. That matters for anything with a real second-hand price at the end of its life.

Leave serial numbers off the shared sheet

The audit sheet includes serials because an auditor needs them, but a printed list of serial numbers left in a corridor is a shopping list. Collect the sheets in when the count is finished.

Common questions

How is the book value worked out?
Straight line. The cost less the residual value is spread evenly across the expected life, then the tool counts how much of that life has passed by the valuation date and charges that proportion. Book value is the cost less the depreciation built up so far, and it never drops below the residual value.
What do the three depreciation bases do?
Whole months charges nothing until an asset has been owned a full month, which is what most small-business bookkeeping does. Day by day spreads the charge across every day, which is smoother and slightly kinder mid-year. Full year in the year of purchase charges a complete year's depreciation the moment you buy, which some organisations prefer because it keeps the arithmetic simple.
Which next-due date does the dashboard use?
The one on the most recent log entry that carries a date. Older entries are kept as history but do not affect the status. If no entry on the asset has a next-due date, the asset shows as having no service booked rather than as overdue.
What should my CSV look like to import cleanly?
A header row and one asset per line. Column names are matched loosely, so Asset tag, asset_tag and Tag all work, as do Purchase date, Purchased and Date acquired. Use the Blank template button to get a file with the exact headings if you would rather not guess.
Will importing wipe what is already there?
No. An import only adds and updates. A row whose asset tag already exists overwrites that asset's fields; a row with a new tag is added; anything not mentioned in the file is left alone. If you want a clean slate, use Start over first.
Can it handle two files, one for assets and one for the log?
Yes, drop them in one at a time. The tool looks at the headings and works out which sort of file it has: a column such as Work done or Next due means a maintenance log, otherwise it is treated as a register.
Why is my imported date blank?
Because it could not be read with confidence. ISO dates like 2026-03-09 always work. Slashed dates are read using the date format set in the panel, so if your file uses 03/09/2026 for the ninth of March, set the format to 31/12/2026 before importing.
Does the audit sheet include everything?
It includes whatever the register filters have left, grouped by location and sorted the way the table is sorted. Filtering to one building and printing just that is usually more useful than a single long list, because a physical count is done room by room.
What happens to assets I have disposed of?
Set the status to Disposed or Written off. They stay on the register as history, are shown greyed out, and are left out of the cost, depreciation and book value totals, because you no longer hold them. The Show filter has an entry for finding them again.
Is my register sent anywhere or shared between devices?
Neither. It is held in this browser's local storage and nowhere else. There is no account, no sync and no upload. Use the JSON backup to move a register to another machine, and keep that file somewhere you trust.