The three numbers, and why they disagree with each other
Occupancy tells you how full you are. ADR (Average Daily Rate) tells you how much each sold room earns. RevPAR (Revenue Per Available Room) tells you how much the whole property earns per room, sold or not. A hotel manager who only watches occupancy can be fooled: a fully-booked property selling every room at a discount can look great on the occupancy report and terrible on the P&L.
That's the whole reason all three numbers exist together. Occupancy alone hides rate. ADR alone hides how many rooms actually sold. RevPAR is the one number that punishes both a half-empty hotel and a fully-booked but under-priced one, which is why it's the number ownership and revenue managers usually ask for first.
The formulas
| Metric | Formula | What it answers |
|---|---|---|
| Occupancy % | Rooms Sold ÷ Rooms Available × 100 | How full were we? |
| ADR | Room Revenue ÷ Rooms Sold | How much did each sold room earn? |
| RevPAR | Room Revenue ÷ Rooms Available | How much did each available room earn? |
| RevPAR (shortcut) | ADR × Occupancy % | Same answer, from the other two |
A worked example: a 50-room hotel on a Thursday night
This is an illustrative example only — plug in your own numbers. Say a 50-room hotel sells 38 rooms on a given night for a combined room revenue of EGP 76,000. (All figures below are for illustration; they are not real prices or averages.)
- Occupancy = 38 ÷ 50 × 100 = 76%
- ADR = EGP 76,000 ÷ 38 = EGP 2,000
- RevPAR = EGP 76,000 ÷ 50 = EGP 1,520
- Cross-check: ADR × Occupancy = EGP 2,000 × 0.76 = EGP 1,520 — matches
Notice RevPAR (EGP 1,520) is always lower than ADR (EGP 2,000) whenever occupancy is under 100%, because RevPAR spreads the same revenue across every available room, sold or not. The gap between the two numbers is itself informative: a wide gap means low occupancy is the problem; ADR sitting near RevPAR with occupancy still low means both rate and demand need attention.
How out-of-order rooms change the math
Rooms Available is not your total room count — it's total rooms minus rooms that were physically unable to sell that night. A room under maintenance, waiting on a repair, or blocked for renovation is Out of Order (OOO), and the correct treatment removes it from the denominator entirely rather than counting it as an unsold room.
Take the same 50-room hotel, but 2 rooms are OOO for that date (again, an illustrative number). Rooms Available drops to 48, not 50:
- Occupancy = 38 ÷ 48 × 100 = 79.2% (up from 76%)
- ADR = EGP 76,000 ÷ 38 = EGP 2,000 (unchanged — ADR only cares about sold rooms)
- RevPAR = EGP 76,000 ÷ 48 = EGP 1,583 (up from EGP 1,520)
Complimentary and house-use rooms: available, but do they count as sold?
A comp room (given free to a guest, an agent, or a VIP) and a house-use room (occupied by staff or management, not a paying guest) are both physically available and both occupied — the bed is used. The question is whether they belong in the occupancy and revenue math the same way a paying stay does.
- They usually count toward Rooms Sold for occupancy purposes, since the room genuinely was not available to another paying guest that night.
- They should NOT count toward Room Revenue at their rack rate, since EGP 0 (or a token rate) is what was actually earned — carrying them at full rate inflates ADR and RevPAR with revenue that never existed.
- The safest convention: track comp and house-use nights on a separate report line, so occupancy reflects reality but ADR and RevPAR reflect only revenue actually posted to the folio.
This is exactly the kind of rule that has to be decided once, written down, and applied consistently — not re-litigated every time someone pulls a report. In Mukeem’s statistics, for example, room nights and ADR leave out house-use and complimentary stays while occupancy counts them, and the rule is printed on the report itself — so no manager re-decides it in a spreadsheet every morning.
What actually moves each number, day to day
| Lever | Moves Occupancy | Moves ADR | Moves RevPAR |
|---|---|---|---|
| Rate changes (yield/season) | Sometimes (demand response) | Directly | Directly |
| New OTA channel or promotion | Yes | Usually down | Depends on net effect |
| Length-of-stay or last-minute deals | Yes | Down | Depends |
| OOO rooms returning to inventory | Down (denominator grows) | No change | Down, then up as they sell |
| Upsell to higher room categories | No change | Up | Up |
| Group or corporate block released late | Down if unsold | Down (distress pricing) | Down |
Which reports to read every day
A manager who checks these two things every morning catches problems before they compound over a week:
- The daily occupancy/ADR/RevPAR report for last night, compared to the same weekday last week (not last month — day-of-week comparisons control for the pattern of weekday vs weekend demand).
- The pickup report — reservations added or cancelled for the next 7 to 14 days — since RevPAR today is a lagging number, but pickup tells you where it's heading.
- The OOO and housekeeping-block list, so a maintenance issue that shrinks Rooms Available doesn't get missed until month-end.
None of this needs to be manual. Once room status, rate and folio revenue live in one system instead of a spreadsheet reconciled after the fact, the daily RevPAR report is just something you open, not something you build.
