What it is
Hotels call it RevPAR: revenue per available room. Vacation rental teams often say RevPAN: revenue per available night. The idea is the same.
RevPAR = rent revenue ÷ available nights, which equals ADR × occupancy when both use the same nights.
Why operators track it
- One yield number. Raising price and losing nights can leave RevPAR flat. It shows the net effect.
- Comparing homes and markets. Normalizes for nights available.
- Hotel owners. Hotel owners and developers commonly read RevPAR against a comparable set of hotels.
- Pricing strategy. The main outcome dynamic pricing aims to improve.
How it is calculated
RevPAR = rent revenue ÷ available nights = ADR × occupancy
- Available nights should match the occupancy version. Using adjusted paid occupancy, available = total − owner − hold nights.
- Rent revenue uses the same definition as ADR.
- For hotels, available rooms × nights; out-of-order rooms are often removed.
Worked example
Example data The same made-up portfolio is used on every hospitality page: a manager with 120 homes, four of them shown in detail.
The four example homes had $29,150 of rent and 111 available nights in October. RevPAR = $262.61. That equals ADR $342.94 × adjusted paid occupancy 76.6%. On all 124 calendar nights it is $235.08.
How to read it
- Decompose changes. If RevPAR moved, check whether ADR or occupancy moved it.
- Normalize by size. Bigger homes earn more per night. Compare within bedroom count or per bedroom.
- Match the denominator to any external figure you compare against.
- We do not publish a benchmark. Levels vary by market, season, and property type.
Definitional choices and common pitfalls
- Denominator. Available nights after owner and hold, or all calendar nights. Owners often think in all nights.
- Revenue basis. Rent only, or total revenue including fees and upsells (sometimes called TRevPAR). Label it.
- Hotels vs homes. Hotels use rooms. Mixed portfolios report hotels and homes separately or per bedroom.
- Comparable set. Market comparisons need the same denominator and revenue basis.
How different roles use it
| Role | How they use it |
|---|---|
| Revenue manager | Primary yield metric by home, market, and month. |
| Owner relations | Shows owners yield vs last year and vs comparable homes. |
| Finance / trust accounting | Rolls up to portfolio revenue forecasts. |
| Product / engineering lead | Exposes the denominator as a setting. |
Questions it answers
- Which homes earn the least per available night?
- Did our pricing changes improve yield or just shift ADR and occupancy?
- How do markets compare on yield?
How to present it in a report
- RevPAR, ADR, and occupancy side by side, same nights.
- Year over year for the same month.
- A note naming the denominator.
| Home | Rent | Available nights | ADR | Occupancy | RevPAR |
|---|---|---|---|---|---|
| Beach house (3 bd) | $8,800 | 27 | $400 | 81.5% | $325.93 |
| Condo (2 bd) | $4,000 | 29 | $200 | 69.0% | $137.93 |
| Lake house (5 bd) | $12,600 | 24 | $700 | 75.0% | $525.00 |
| Studio (1 bd) | $3,750 | 31 | $150 | 80.6% | $120.97 |
Data you need
Fields
| Field | What it means | Example value |
|---|---|---|
| Rent by night | As for ADR | $400 |
| Night type | Guest, owner, hold, open | hold |
| Unit attributes | Bedrooms, market, unit type (home or hotel room) | 5 bd, lake |
What the raw data looks like
Example data A few rows as they might come out of the source system.
| Home | Month | Rent | Available nights | Calendar nights |
|---|---|---|---|---|
| Beach house | 2026-10 | $8,800 | 27 | 31 |
| Condo | 2026-10 | $4,000 | 29 | 31 |
| Lake house | 2026-10 | $12,600 | 24 | 31 |
Where this data usually lives
- Property management system (PMS) holds units, the calendar with block types, reservations, rates, fees, and often owner statements and trust accounting. For example: Guesty, Hostaway, OwnerRez, Track, Streamline, and Escapia. Some larger managers run their own in-house PMS.
- Dynamic pricing tools hold recommended rates, final rates, minimum stay rules, and comparable sets. For example: PriceLabs and Wheelhouse. Some managers build their own.
- Market data providers estimate market occupancy, ADR, and pace. For example: AirDNA, which uses listing data plus partner data (AirDNA), and Key Data, which works with property manager data (Key Data). Their definitions may differ from yours.
The same field can live in more than one system. Agree with the customer which one is the source of truth.
Common data gaps and traps
- Block types missing. Without them, available nights cannot be separated from owner use.
- Hotel out-of-order rooms. Not always recorded in the PMS.
- Inconsistent revenue basis between systems in a mixed portfolio.
Related metrics
- Occupancy rate
- ADR
- Booking pace: revenue on the books ahead.
FAQ
- What is the difference between RevPAR and RevPAN?
- Mostly the word. RevPAR is per available room (hotels). RevPAN is per available night, used for rentals. The formula is the same.
- Does RevPAR include cleaning fees?
- Usually no. A total revenue version includes them. Label which one you show.
- Why does RevPAR equal ADR times occupancy?
- Rent ÷ guest nights × guest nights ÷ available nights = rent ÷ available nights. It holds only when both use the same nights.
For your data teamFormula variants, tables, SQL sketch, and dashboard spec
Formula details
revpar = SUM(rent) / available_nights
available_nights = total_nights - owner_nights - hold_nights (adjusted)
= total_nights (calendar basis)
check: revpar = adr * occupancy (same nights)
Worked example detail
| Home | Rent | Available | RevPAR |
|---|---|---|---|
| Beach house (3 bd) | $8,800 | 27 | $325.93 |
| Condo (2 bd) | $4,000 | 29 | $137.93 |
| Lake house (5 bd) | $12,600 | 24 | $525.00 |
| Studio (1 bd) | $3,750 | 31 | $120.97 |
| Total | $29,150 | 111 | $262.61 |
Tables and fields
| Table | Fields | Notes |
|---|---|---|
reservation_nights |
reservation_id, unit_id, night_date, rent_amount | |
calendar_nights |
unit_id, night_date, night_type |
SQL sketch
SELECT c.unit_id,
SUM(n.rent_amount) / NULLIF(COUNT(*) FILTER (WHERE c.night_type IN ('guest','open')),0) AS revpar
FROM calendar_nights c
LEFT JOIN reservation_nights n ON n.unit_id=c.unit_id AND n.night_date=c.night_date
WHERE c.night_date >= '2026-10-01' AND c.night_date < '2026-11-01'
GROUP BY c.unit_id;
Build spec
Copy this into a ticket. It lists the grain, inputs, logic, and edge cases.
metric: hospitality.revpar
grain: one row per unit per period
inputs:
- rent by night
- calendar night type
logic:
- revpar = rent / available nights
- available = guest + open nights (adjusted basis)
edge_cases:
- available = 0: null
- setting for calendar basis
- hotel rooms: unit = room
As a dashboard card
- KPI for RevPAR with ADR and occupancy below it, and a bar per home.
Common mistakes
- Mixing denominators between occupancy and RevPAR.
- Comparing a five-bedroom home to a studio without normalizing.
- Counting revenue from cancelled stays.