Rent Roll & Tenancy Schedule
Build a rent roll and tenancy schedule for a property portfolio: annualised rent from weekly, monthly, quarterly or annual figures, occupancy by unit and by value, rent per unit area, an expiry and break calendar and an arrears report. Runs entirely in your browser — nothing is uploaded.
Version 1.0.0 · Updated Aug 5, 2026
Overview
How to use Rent Roll & Tenancy Schedule
The complete in-tool guidance, reproduced here so you can read it before you download.
What this tool does
CM8-108 is a rent roll and tenancy schedule for a landlord, a property manager or an agent. You enter one row per lettable unit — let or empty — and it works out what the portfolio is contracted to produce over a year, how full it is, when tenancies end or can be broken, and who is behind with the rent. It prints a schedule you can hand to a lender, an accountant, a buyer or a board.
Everything runs inside this single file. There is no account, no upload and no network request of any kind, so tenant names, rents and arrears never leave the computer you are using.
What counts as one row
One row is one lettable unit, not one building and not one tenant. A house in multiple occupation with five rooms let separately is five rows; a block of twelve flats is twelve. Enter empty units as well as let ones — a rent roll that only lists the income you are receiving cannot tell you how much you are not receiving, and every occupancy figure depends on the empties being there.
Where a unit is empty, put the asking rent in the rent field and set the status to vacant, void or under offer. The tool never counts an empty unit's rent as income; it uses it only as the denominator for occupancy by value, and it shows those bars in grey and marked "asking" on the rent chart.
Rent frequency and annualising
This is the calculation that goes wrong most often in a spreadsheet rent roll. Weekly, monthly, quarterly and annual rents cannot be added together, compared or averaged until they are on the same basis. Everything in this tool is normalised to a full year first, using exactly these multipliers:
Annualised rent = rent for one period × periods per year weekly × 52 · monthly × 12 · quarterly × 4 · annually × 1
Two consequences are worth knowing. First, a year is treated as 52 weeks, not 52.18: a weekly rent annualised here is about 0.3 % below a strict 365-day calculation. Second, a weekly rent multiplied by twelve — a mistake that turns a weekly figure into a monthly one — understates the rent by more than three-quarters. Check the frequency on every row before you circulate anything.
Annualising also assumes the rent is paid at that frequency for a whole year. For a holiday or short-stay let that assumption is simply false: 52 weeks of bookings is a ceiling nobody achieves. Read those rows as the maximum, not the expectation, and say so on any report that includes them.
Service charge and total income
The service charge is entered at the same frequency as the rent, and annualised the same way. If yours is billed on a different cycle from the rent, convert it before you enter it.
Total annual income = annualised rent + annualised service charge
The two are kept apart on purpose. Service charge is normally a recovery of cost rather than profit, so a rent roll that quietly folds it into the rent overstates the income the property produces and inflates every rent-per-unit-area comparison. The headline tile shows the rent roll first and the figure including service charge underneath it.
Occupancy, by unit and by value
Occupancy is reported twice, because the two answers can be far apart:
Occupancy by unit = let units ÷ all units × 100 Occupancy by value = annualised rent of let units ÷ (annualised rent of let units + asking rent of empty units) × 100
"Let" means occupied, in arrears or under notice — the unit is producing rent. Vacant, void and under offer all count as empty: terms agreed is not the same as rent arriving.
A portfolio of nineteen small flats and one large shop, with the shop empty, is 95 % let by unit and might be 60 % let by value. The unit figure flatters you; the value figure is the one that matches the bank statement. Occupancy by value needs an asking rent on the empty units — if none of them has one, the tile shows a dash and says why rather than reporting a meaningless 100 %. If only some are missing, it reports the figure and tells you how many units are making it read high.
Rent per unit area
Rent per unit area is how one letting is compared with another. Each row records its own area and the unit it was measured in; everything is converted to the report unit you choose in Settings before it is added or compared, so a schedule holding both measurements stays consistent.
1 m² = 10.7639 sq ft Rent per unit area = annualised rent ÷ area, in the report unit Portfolio average = total annualised rent of let, measured units ÷ their total area
Note the last line. The portfolio average is a total divided by a total, not the average of the individual rates — averaging the rates would give a 14 m² room the same weight as a 210 m² office and produce a number that describes nothing. Units with no area recorded, and empty units, are excluded from both sides of that division, so the figure always describes the same population it is measured over.
Leave the area empty if you do not know it. A guessed area produces a confident, wrong rate that will be quoted back at you.
Expiries, breaks and reviews
Four dates drive the calendar: the tenancy start, the end of the fixed term, the first date a break can be operated, and the next rent review. Periodic and rolling arrangements have no end date and correctly never appear in the expiry calendar — that is a feature of the tenancy, not a gap in the data.
Days remaining = event date − today Inside the warning window when 0 ≤ days remaining ≤ the window set in Settings
The warning window defaults to 90 days. Set it longer if your leases need notice served well in advance. The headline tile counts events — a tenancy with both a break and an expiry inside the window counts twice — but the money beside it counts each tenancy once, so the annualised rent affected is never double-counted. The calendar table shows both figures in its footer for the same reason.
An event whose date has already passed on a unit that is still let is marked "holding over". That is usually the row worth dealing with first, because the basis on which the tenant is occupying may no longer be the one written in the schedule.
"Annualised rent affected" is the whole year's rent of the tenancy concerned. It is a measure of exposure, not a forecast of loss: most breaks are never operated and most tenancies are renewed. Use it to rank what to look at, not as a hole in next year's budget.
Arrears and periods overdue
Arrears are entered as the amount outstanding now. The tool converts that into rental periods, which is the only fair way to compare a room and a shop:
Periods overdue = arrears ÷ rent for one period
A tenant owing 2,150 on a monthly rent of 1,075 is two periods behind; a tenant owing 5,400 on a quarterly rent of 5,400 is one period behind, even though the money is larger. The flag threshold in Settings is measured in periods for the same reason. The arrears report lists every tenancy with money outstanding, largest first, with its status and its periods alongside.
The footer of the arrears report deliberately does not total the periods column. Adding a monthly period to a quarterly one produces a number with no meaning; the money total is the only total that means anything.
Arrears can legitimately sit against a unit that is now empty, left by a former tenant. Those rows still appear in the report, with the status shown so nobody reads them as current income.
Deposits and what this tool will not tell you
You can record the deposit held and tick that it is protected or held in a client account. That tick is a record that you did something — it does not protect anything and it checks nothing.
This tool gives no guidance whatsoever on possession, on how or where a deposit must be held, on notice periods, on what a valid notice looks like, on how or when rent may be increased, or on what happens at the end of a term. Those rules differ entirely by country, by region and by tenancy type, they change, and getting them wrong is expensive. Take proper advice for the place your property is in. Nothing here is a substitute for it, and no number this tool produces should be read as saying an action is available to you.
Filters and the date range
Filters apply to every screen, to both summary tables, to the printed report and to the CSV export. You can filter by status, tenancy type and rent frequency, search any word in any column, and set a date range.
The date range works on the tenancy start date, not on expiries. Two things follow from that. Empty units usually have no start date, so any date range at all will drop them — and with them, every occupancy figure. And a range that excludes older tenancies will exclude their rent from the roll. Clear the dates before you read the tiles as the whole portfolio; the scope line under the report title always states the filter that was in force when it was printed.
Printing and sharing
Print Report produces a schedule from whatever the current filter shows: header, the six headline figures, the four charts, the expiry and break calendar, the arrears report, the full rent roll and your closing notes. Print to PDF to circulate it.
Amounts print in the currency set in Settings, and the report states it. The tool does no currency conversion at all — a portfolio held in more than one currency must be kept in more than one file, because adding the two together here would produce a total that means nothing.
Saving your work
Tenancies, 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 the rent roll for spreadsheet work, including every derived figure and every filtered row, not only those drawn on screen. Reset asks twice, then erases everything this tool has stored. There is no undo.
A rent roll identifies people and states what they owe. Treat exports as confidential, and think before attaching one to an email.
Accuracy & disclaimer
This tool arithmetic-checks nothing about the real world. It cannot tell whether a rent is the contractual rent, whether a break has already been exercised, whether a deposit is held correctly, whether an area is measured on the same basis as the one next to it, or whether a tenancy is what the row says it is. Every figure it produces rests on what you typed.
It is a record-keeping and calculation aid: not a valuation, not an accounting record, not a demand for rent, not a statement of account and not legal, tax or investment advice. Annualised figures are contractual maximums, not predictions of cash. Take proper advice on anything that matters.