← Back to blog

How to Calculate True Occupancy Rate for Short-Term Rentals (Booked vs Blocked Nights)

If you've ever looked at your occupancy rate and thought "that can't be right," you're probably calculating it wrong. Not because you're making a math error — but because the denominator most operators use is the wrong number entirely.

This matters because occupancy is one of the three metrics (with ADR and RevPAR) that drives every major pricing and operational decision you make. If your occupancy is wrong, your decisions are wrong.

Here's the correct way to calculate it, why the difference matters in practice, and what to do once you have the right number.


The Standard Formula (And Why It's Misleading)

The most common way operators calculate occupancy:

Naive occupancy = Booked nights ÷ Total calendar nights × 100

Example: You have a listing. In April, it had 30 nights available. It was booked for 18 nights. You calculate: 18 ÷ 30 = 60% occupancy.

That looks fine. But what if 8 of those 30 nights were blocked — days you'd marked as unavailable for maintenance, a personal trip, or a long-term hold?

Now your listing was only actually available to guests for 22 nights. It booked 18 of those.

That's 18 ÷ 22 = 82% occupancy.

The difference between 60% and 82% isn't a rounding error. It's the difference between thinking you have a demand problem and realising you actually have a pricing opportunity.


The Correct Formula

True occupancy = Booked nights ÷ (Total calendar nights − Blocked nights) × 100

Or, stated more simply:

True occupancy = Booked nights ÷ Nights available to guests × 100

What counts as "blocked":

  • Owner holds and personal use blocks
  • Maintenance windows
  • Long-term rental holds (if the listing is temporarily off-market)
  • Any date you've manually removed from availability

What does NOT count as "blocked" for this formula:

  • Nights that are still available but haven't been booked yet (future availability)
  • Minimum-stay gaps (orphan nights where your minimums prevent a booking) — these are available nights that went unbooked, which is important information you should track separately

A Real-World Example

Say you manage a beach property. In June you had:

  • 30 total nights
  • 8 nights blocked (4 for owner use, 4 for professional cleaning between a long stay and summer peak)
  • 20 nights booked
  • 2 nights available but unbooked

Naive occupancy: 20 ÷ 30 = 67% True occupancy: 20 ÷ 22 = 91%

At 67%, you might think demand is soft and consider dropping rates for July. At 91%, you know your available inventory is nearly sold out — and you might actually consider raising rates or tightening your minimum stay to squeeze more out of the remaining 2 nights.

Wrong calculation → wrong decision.


Why Pricing Tools Often Show the Wrong Number

Most dynamic pricing tools — including PriceLabs and Wheelhouse — show occupancy figures pulled from your listing's calendar data. Some calculate it correctly (dividing by available nights only), but the default views in many dashboards and neighbourhood-level reports use total nights in the denominator, because that's a simpler calculation at scale.

Market-level occupancy benchmarks (the "your market is at 68% occupancy" figures in your pricing tool's dashboard) are almost always calculated against total calendar nights, not true available nights. That's fine for market comparisons — as long as you're applying the same formula to your own data.

The problem is when operators compare their true occupancy to a market benchmark calculated differently. If the market figure uses total nights and yours uses available nights, you'll always look like an outlier — even when you're not.

The rule: When comparing yourself to a benchmark, use the same formula they use for the comparison. When making internal decisions (should I drop rates? am I filling my calendar?), always use true occupancy. For more on how this miscommunication between systems distorts your pricing, see Why Your Pricing Tool and PMS Don't Talk to Each Other.


How to Calculate This Yourself

If you're pulling data manually, you need three numbers from your PMS or channel manager:

  1. Total booked nights for the period (confirmed reservations, including checkout day if your system counts it that way)
  2. Total blocked nights (owner holds, maintenance, etc.)
  3. Total calendar nights (the number of days in the period)

Then: True occupancy = Booked ÷ (Calendar − Blocked)

Most PMS platforms (Guesty, Hostaway, OwnerRez) have occupancy reports, but check whether they're already excluding blocked nights before you adjust.

If you use RevPrism, the calculate_occupancy tool does this automatically — it cross-references your reservation data and date overrides from your PriceLabs account to distinguish booked nights from blocked nights, and returns both the true occupancy and the naive figure so you can see the difference for your specific listings.

Connect RevPrism to your pricing tool and ask: "What's the true occupancy for [property name] this month?"


What to Do With the Right Number

Once you have true occupancy, you can use it to make better decisions:

If true occupancy > 85% for the next 30 days: You're nearly sold out on available nights. This is the time to test higher rates for the remaining open dates, or tighten minimum stays to avoid leaving premium nights underpriced.

If true occupancy is 60–80%: Healthy range. Focus on your booking pace — are you filling at the same rate you were at this time last year? If pace is slowing, investigate comp set pricing before assuming you need to cut rates.

If true occupancy < 50%: Something needs attention. Either demand is genuinely soft (check your market comps), your pricing is too high for current demand (check your lead time data), or you have a listing quality issue (check your search ranking and reviews).

If true occupancy looks very different from naive occupancy: You're blocking a lot of nights. That's fine, but be aware that pricing tools calibrating your rates against "occupancy" may be using the naive number and misreading your demand signals. Worth flagging with your pricing tool's configuration.


The Bigger Picture

Occupancy is one piece of a three-metric system. True occupancy tells you how full your calendar is. ADR tells you at what price. RevPAR combines both: it's your revenue per available night, which is the single most useful benchmark for comparing performance across properties and markets.

If you're only tracking one number, track RevPAR. But if you want to understand why your RevPAR is where it is — and what to do about it — you need all three calculated correctly.

For more on how these metrics interact and when to prioritise each one, see ADR vs Occupancy: When to Optimize for What in Your Vacation Rental

For the full framework on turning these metrics into decisions, see The Complete Guide to STR Revenue Management in 2026


RevPrism calculates true occupancy for your listings automatically by connecting to your pricing tool and PMS data. No spreadsheet required. Start free — no credit card needed.

See your revenue data in one conversation

RevPrism connects to your pricing tools and PMS — ask questions about your portfolio in plain English.

Try RevPrism free