Utilities & Energy Consumption Tracker
Track meter readings and utility bills across sites, work out consumption, unit rates and intensity, and split every cost change into a volume effect and a price effect. Runs entirely in your browser. Nothing is uploaded.
Version 1.0.0 · Updated Aug 5, 2026
Overview
How to use Utilities & Energy Consumption Tracker
The complete in-tool guidance, reproduced here so you can read it before you download.
What this tool does
CM8-96 is a meter reading and utility cost register. You log a reading per meter per billing period; it works out the consumption, the unit rate, the daily average and the intensity per unit of floor area, and it separates a rise in the price you pay from a rise in the amount you actually used.
That separation is the point of the tool. A utility bill going up tells you almost nothing on its own. It can mean you used more, or that the same usage now costs more, or both at once in opposite directions. A report that shows only cost cannot tell you which, and the action you should take is completely different in each case: one is an engineering problem, the other is a procurement problem.
Everything runs inside this single file. There is no account, no upload and no network request of any kind — site names, meter numbers and tariffs stay on the computer you are using.
What to record per reading
One row is one meter for one period. Record the reading date, the site, the meter reference, the utility, the reading itself, the unit, the consumption cost, the standing charge and the period the bill covers. Everything else — tariff, degree days, floor area, occupancy and the note — is optional but earns its place the first time somebody asks you why a figure moved.
Use a meter reference that is stable and unique, ideally the serial number stamped on the meter rather than a nickname. Every calculation that looks backwards — the consumption, the rate, the comparison — matches rows on the site and the meter reference together, so a meter renamed halfway through the year becomes two meters and loses its history.
Where the consumption figure comes from
Leave the consumption box empty and the tool computes it:
Consumption = this reading − the previous reading on the same meter
"Previous" means the latest earlier reading for the same site and meter reference. The Source column tells you which route each row took: From reads, Entered, or Opening read where there is no earlier reading to subtract from. An opening reading is not a fault — it is simply the start of the history, and it carries no consumption and no cost.
Enter the consumption directly whenever subtraction cannot work: a meter that has rolled past its maximum and started again, a meter that has been replaced, a supply where you only ever get a figure on the bill, or a bill that covers two meters at once. The tool refuses to subtract when the new reading is lower than the old one, because the answer would be a large negative number silently treated as zero.
One row, one period. If a bill covers two months, that is one row with the whole consumption and the whole cost, not two. Splitting it evenly across months invents data.
Units that must never be added together
Kilowatt hours and cubic metres are not the same thing, and the tool will not add them. Nor will it add gas in cubic metres to water in cubic metres, which is the same unit measuring two completely unrelated things. There is no conversion factor built in anywhere: converting gas volume to energy needs a calorific value that changes with the supply, and converting fuels to a common energy or emissions basis needs factors that differ by country and by year. Deciding those is your job, not the tool's.
So the headline tiles and the two consumption charts report on one utility in one unit — the headline utility and reporting unit you choose in the settings. Anything else is excluded and the tile says how many readings were left out. Cost is the only figure added across every utility, because money is the same money whatever produced it.
The meter summary refuses to total the consumption column for the same reason, and says so in the total row rather than printing a number that looks authoritative and means nothing.
Unit rate and standing charges
Unit rate = cost of the consumption ÷ consumption
Total cost = cost of the consumption + standing charge
Keep the standing charge in its own box. It is paid whatever you use, so folding it into the consumption cost makes the unit rate rise every time consumption falls — which would tell you that using less makes the price go up. On a small meter over a short period that distortion is large.
Enter the cost the same way every time: either both excluding any recoverable tax, or both including it. Mixing the two makes rates and comparisons meaningless. The tool applies no tax treatment of any kind.
Volume effect and price effect
This is the most valuable table in the tool. For each meter it takes the latest period, finds a comparison period, and splits the change in cost into the part caused by using a different amount and the part caused by paying a different price:
Cost change = (consumption now × rate now) − (consumption before × rate before)
Volume effect = (consumption now − consumption before) × rate before
Price effect = (rate now − rate before) × consumption now
The two effects add up to the cost change exactly, with nothing left over — the total row proves it. The volume effect values the change in usage at the old price; the price effect values the change in price against the new usage. That is one of two standard ways of splitting it; the alternative values volume at the new price and price against the old volume, and gives slightly different numbers for the same total. Neither is more correct. What matters is being consistent, which the tool is.
Read it like this. Cost up and the price effect dominant: your consumption is fine, the problem is the contract, and no amount of switching lights off will fix it. Cost up and the volume effect dominant: the price is not the story, something is running that should not be. Cost down with a large positive price effect: you cut usage hard and it was partly swallowed by a higher rate — worth saying out loud, since the headline number hides real work.
Compare like with like. Two periods of different lengths are not comparable, and the tool says so in the last column rather than quietly presenting the difference as a finding. The same applies to a comparison where one side is an estimated read.
Degree days and the weather
Heating and cooling loads follow the outside temperature, so a mild period will always look like an efficiency win. Degree days measure how cold or hot the period was relative to a base temperature. Record the figure for your location and period from whichever service you use, and the tool divides by it:
Consumption per degree day = consumption ÷ degree days in the period
If consumption per degree day is flat while total consumption falls, the weather did the work. If it rises while total consumption falls, something has got worse and the weather is hiding it.
Be careful with this. Degree-day normalisation only works where most of the load is weather-driven. Hot water, cooking, catering and process loads run at the same rate in July as in January, so in a mild period they make up a much larger share of a much smaller total and consumption per degree day climbs on its own. Below about ten degree days the division becomes unstable and the tool stops offering the comparison. Degree days are meaningless for water, and the tool refuses them there.
Floor area, occupancy and intensity
Intensity = consumption ÷ floor area
Intensity is what lets you compare a small office with a large depot. Record the same floor area against every reading for a site; the tool takes the most recently recorded area for each site and adds those areas once, not once per reading. Only sites that have both consumption in the reporting unit and a recorded area are counted, and the tile says how many sites and how much area went into the figure.
Choose the area unit in the settings and then use it everywhere. Nothing is converted: enter square feet with the setting on square metres and the intensity will be out by an order of magnitude.
The occupancy or production column is yours to define — headcount, beds, covers, tonnes despatched, units produced. Consumption per occupancy unit is calculated and included in the CSV export. Keep the basis constant for a site or the series means nothing.
Estimated readings
An estimated reading is a guess dressed as data, and it distorts two periods: the one it ends, and the one after it, which absorbs the whole correction when an actual read finally happens. A meter estimated three times running can show a plausible flat trend followed by an alarming spike that represents nothing but arithmetic catching up.
Tick the box on every estimated read. The tool counts them, shows what share of the reporting-unit consumption came from them, marks them on the monthly chart and on the register, reports the proportion per meter, and refuses to let a comparison involving one pass without comment. If the estimated share is high, fix the meter access before you act on anything else here.
Periods, days and daily averages
Days in the period = (period end − period start) + 1
Average daily consumption = consumption ÷ days in the period
Both dates count as days of supply, so a period entered as the 1st to the 31st of a 31-day month is 31 days. Enter consecutive periods so they do not overlap: if one ends on the 31st, the next starts on the 1st, not on the 31st again. Entering reading date to reading date instead double counts a day per period.
The daily average is the fairest quick comparison between periods of different lengths, and it is what to quote when a bill covers an odd number of weeks. The date filters and the monthly charts use the reading date, not the period, so a quarterly reading appears wholly in the month it was read — worth remembering before reading anything into a single month's bar.
Settings
- Headline utility and reporting unit — the scope of the tiles and the consumption charts. Change them to look at gas, then water, one at a time.
- Floor area unit — a label only. Nothing is converted.
- Consumption per degree day — turn it off if you do not hold degree days, or if your load is not weather-driven.
- Compare each period with — the previous period, or the same period a year earlier. Year-earlier removes the seasons and is the right choice for anything weather-driven; where no period around twelve months back exists the tool falls back to the previous one and labels the row.
- Alert threshold — a cost or consumption movement of at least this size is called out in the comparison. It is your number, not a standard.
Printing and sharing
Print Report produces a report from whatever the current filter shows: header, headline figures, the four charts, the meter summary, the volume and price split, the full register and your closing notes. Print to PDF to circulate it.
The scope line under the title states the filter in force and the currency. Clear the filters before issuing anything described as the full picture, and check that the headline utility and reporting unit in the settings are the ones you meant — the tiles are silent about utilities they exclude except for the count.
Saving your work
Readings, settings and the report header are written to this browser's local storage as you type, and the toolbar shows the time of the last save. That storage belongs to one browser on one computer: another browser, a private window, a second machine or a clean-up tool that clears site data will not have it.
Treat Export .json as the real save — one file containing everything, which Import .json restores anywhere. Export CSV gives you every filtered row with all the calculated columns for spreadsheet work. Reset asks twice, then erases everything this tool has stored. There is no undo.
Accuracy & disclaimer
This tool records what you enter and calculates from it. It cannot tell whether a reading was transcribed correctly, whether a cost includes charges it should not, whether two periods really are comparable, or whether the meter reference on one row is the same physical meter as on another.
It is not a bill, an audit, an energy performance certificate or an emissions report. It converts nothing between units or fuels and applies no factors, tariffs or tax treatment of any kind. Which figures you must report, on what basis and to whom differ by country and by industry — establish what applies to you and prepare that separately.