1Your data
One row per hotel per day: date, rooms available, rooms sold and room revenue. Total revenue, GOP (gross operating profit) and a hotel name column are optional. Most PMS night-audit exports work as they are.
Columns are matched by name, in any order. Accepted names include date, rooms_available (or available, capacity), rooms_sold (or occupied, room nights), room_revenue (or rooms revenue), total_revenue, gop and hotel (or property). Dollar signs, thousands separators, semicolons, tabs and most date formats are handled.
2Period and hotel
Periods count back from the latest date in your data. "Previous period" is the same number of days just before it.
Results
Trend
Day-of-week pattern
Which nights carry the hotel, for the same period. Uses the measure chosen on the left.
Portfolio comparison
Every hotel for the selected period. RevPAR index = the hotel's RevPAR against the portfolio's (100 = average). Click a column to sort, click a hotel to focus on it.
Month by month
Every month in the data for the selected hotel. Change is RevPAR against the same month a year earlier.
3Budget vs actual
Type the budgeted occupancy and ADR for each month. Budget revenue, actuals and the variance update as you type. Each hotel and year keeps its own budget.
Rate effect = (actual ADR minus budget ADR) × actual rooms sold. Volume effect = (actual rooms sold minus budget rooms sold) × budget ADR. The two add up to the room revenue variance. "Fill from last year" copies last year's actual occupancy and ADR, with ADR up 3%.
How it's calculated
Occupancy = rooms sold ÷ rooms available. ADR (average daily rate) = room revenue ÷ rooms sold. RevPAR (revenue per available room) = room revenue ÷ rooms available, which equals occupancy × ADR. TRevPAR (total revenue per available room) = total revenue (rooms, food and drink, spa, parking and so on) ÷ rooms available. GOPPAR (gross operating profit per available room) = GOP ÷ rooms available. Every ratio is calculated from the summed totals of the period, never by averaging daily ratios, so a quiet Tuesday does not count as much as a sold-out Saturday.
Portfolio figures add up rooms and revenue across the hotels first, then divide. Bigger hotels therefore weigh more, as they do in your profit and loss.
Comparisons. The previous period is the same number of days ending the day before the period starts. "Last year" is either 364 days earlier (so a Saturday is compared with a Saturday, the usual STR practice) or the same calendar dates. A comparison is left blank when there is no data for it, rather than guessed.
TRevPAR and GOPPAR use only the days that have those figures, divided by the rooms available on those same days. If some days are missing them, the tile says how many days were used.
Messy data. The importer detects commas, semicolons or tabs, matches column names loosely, strips $ signs and thousands separators, reads ISO, US (MM/DD/YYYY), day-first (DD/MM/YYYY, when a day above 12 shows the file is day-first), written-out and Excel serial dates. Rows with no date, negative numbers or more rooms sold than available are skipped and listed. If the same hotel and date appear twice the rows are added together (exports split by market segment look like this). The report under Step 1 says exactly what was done.
Sample data is generated in your browser with a fixed random seed: five fictional hotels in a Niagara-style market (busy July and August, quiet January and February, strong Friday and Saturday nights, a few event spikes) for two years. It is fictional and only for trying the tool. Your own data is stored only in this browser (local storage) and nothing is uploaded anywhere.