{"product_id":"occupancy-rate","title":"Occupancy Rate Calculator","description":"\u003cstyle\u003e\n.occ-calculator {\n  --ink: #0f172a;\n  --muted: #475569;\n  --border: #e2e8f0;\n  --surface: #ffffff;\n  --tint: #f8fafc;\n  --primary: #1d4ed8;\n  --accent: #c2410c;\n  --accent-hover: #9a3412;\n  --chart-1: #1e40af;\n  --chart-2: #0d9488;\n  --chart-3: #7c3aed;\n  --chart-4: #be185d;\n  --chart-5: #334155;\n  color: var(--ink);\n  background: var(--surface);\n  border: 1px solid var(--border);\n  border-radius: 8px;\n  box-shadow: 0 1px 2px rgba(15,23,42,.06);\n  container-type: inline-size;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n  font-size: 15px;\n  line-height: 1.55;\n  margin: 0 auto;\n  max-width: 1200px;\n  overflow-wrap: anywhere;\n  padding: 24px;\n  width: 100%;\n}\n.occ-calculator, .occ-calculator *, .occ-calculator *::before, .occ-calculator *::after { box-sizing: border-box; }\n.occ-calculator * { min-width: 0; }\n.occ-calculator [hidden] { display: none !important; }\n.occ-calculator h2, .occ-calculator h3, .occ-calculator p { margin-top: 0; }\n.occ-calculator h2 { font-size: 24px; font-weight: 700; line-height: 1.25; margin-bottom: 8px; }\n.occ-calculator h3 { font-size: 18px; font-weight: 650; line-height: 1.35; margin-bottom: 12px; }\n.occ-header { border-bottom: 1px solid var(--border); padding-bottom: 16px; }\n.occ-subtitle { color: var(--muted); margin-bottom: 16px; max-width: 760px; }\n.occ-pills { display: flex; flex-wrap: wrap; gap: 8px; }\n.occ-pill { align-items: baseline; background: var(--tint); border: 1px solid var(--border); border-radius: 999px; color: var(--muted); display: inline-flex; font-size: 13px; font-weight: 500; gap: 8px; padding: 6px 10px; }\n.occ-pill-value { color: var(--ink); font-variant-numeric: tabular-nums; font-weight: 700; }\n.occ-toolbar { display: flex; flex-wrap: wrap; gap: 12px; padding: 16px 0 24px; }\n.occ-button { align-items: center; border: 1px solid var(--border); border-radius: 6px; cursor: pointer; display: inline-flex; font: inherit; font-size: 15px; font-weight: 650; gap: 10px; justify-content: center; min-height: 46px; padding: 11px 18px; text-decoration: none; white-space: nowrap; }\n.occ-button:focus-visible, .occ-calculator input:focus-visible, .occ-calculator select:focus-visible, .occ-calculator summary:focus-visible { outline: 3px solid rgba(29,78,216,.35); outline-offset: 2px; }\n.occ-download { background: var(--accent); border-color: var(--accent); color: #fff; }\n.occ-download:hover, .occ-download:active { background: var(--accent-hover); border-color: var(--accent-hover); box-shadow: 0 2px 4px rgba(15,23,42,.14); }\n.occ-reset { background: var(--surface); color: var(--ink); }\n.occ-reset:hover { background: var(--tint); box-shadow: 0 2px 4px rgba(15,23,42,.10); }\n.occ-icon { height: 20px; width: 20px; }\n.occ-workspace { display: grid; gap: 24px; grid-template-columns: 1fr; }\n.occ-panel, .occ-card, .occ-chart-card, .occ-table-card { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 1px 2px rgba(15,23,42,.06); padding: 20px; }\n.occ-panel-title { display: flex; flex-wrap: wrap; gap: 8px; justify-content: space-between; margin-bottom: 16px; }\n.occ-panel-title p { color: var(--muted); font-size: 13px; font-weight: 500; margin: 0; }\n.occ-field-grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }\n.occ-field { display: flex; flex-direction: column; min-width: 0; }\n.occ-label { color: var(--ink); display: block; font-size: 14px; font-weight: 600; margin-bottom: 6px; }\n.occ-calculator input, .occ-calculator select { appearance: none; background: var(--surface); border: 1px solid #cbd5e1; border-radius: 6px; color: var(--ink); font: inherit; font-size: 15px; min-height: 46px; padding: 10px 12px; width: 100%; }\n.occ-calculator select { background-image: linear-gradient(45deg, transparent 50%, #475569 50%), linear-gradient(135deg, #475569 50%, transparent 50%); background-position: calc(100% - 17px) 19px, calc(100% - 12px) 19px; background-repeat: no-repeat; background-size: 5px 5px, 5px 5px; padding-right: 34px; }\n.occ-helper { color: var(--muted); font-size: 13px; font-weight: 500; line-height: 1.4; margin: 6px 0 0; min-height: 36px; }\n.occ-error { color: #b91c1c; font-size: 13px; font-weight: 600; line-height: 1.35; margin: 5px 0 0; min-height: 18px; }\n.occ-field[hidden] { display: none; }\n.occ-results { display: grid; gap: 16px; }\n.occ-primary-result { background: var(--tint); border: 1px solid var(--border); border-left: 4px solid var(--primary); border-radius: 8px; padding: 20px; }\n.occ-result-label { color: var(--muted); font-size: 13px; font-weight: 600; margin-bottom: 4px; }\n.occ-result-main { font-size: 30px; font-variant-numeric: tabular-nums; font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }\n.occ-result-note { color: var(--muted); font-size: 13px; font-weight: 500; margin: 8px 0 0; }\n.occ-result-grid { display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }\n.occ-result-card { border: 1px solid var(--border); border-radius: 8px; padding: 14px; }\n.occ-result-card-value { font-size: 20px; font-variant-numeric: tabular-nums; font-weight: 700; line-height: 1.25; }\n.occ-result-card-label { color: var(--muted); font-size: 13px; font-weight: 500; margin-top: 4px; }\n.occ-status { align-items: flex-start; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 6px; color: #1e3a8a; display: flex; font-size: 13px; font-weight: 500; gap: 8px; padding: 10px 12px; }\n.occ-status[data-tone=\"positive\"] { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }\n.occ-status[data-tone=\"negative\"] { background: #fff7ed; border-color: #fed7aa; color: #9a3412; }\n.occ-section { margin-top: 24px; }\n.occ-chart-card { display: flex; flex-direction: column; gap: 16px; }\n.occ-chart-heading { display: grid; gap: 4px; }\n.occ-chart-heading h3 { margin: 0; }\n.occ-chart-heading p { color: var(--muted); font-size: 13px; font-weight: 500; margin: 0; }\n.occ-chart-cluster { align-items: center; display: grid; gap: 24px; grid-template-columns: 1fr; justify-content: center; margin: 0 auto; max-width: 760px; width: 100%; }\n.occ-plot-wrap { display: grid; justify-items: center; margin: 0 auto; max-width: 320px; width: 100%; }\n.occ-donut { display: block; height: auto; max-width: 320px; overflow: visible; width: min(100%, 320px); }\n.occ-donut-track { fill: none; stroke: #e2e8f0; stroke-width: 22; }\n.occ-donut-segment { fill: none; stroke-linecap: butt; stroke-width: 22; transform: rotate(-90deg); transform-origin: 100px 100px; }\n.occ-center-label { fill: var(--ink); font-size: 22px; font-weight: 700; text-anchor: middle; }\n.occ-center-caption { fill: var(--muted); font-size: 13px; font-weight: 500; text-anchor: middle; }\n.occ-legend { display: grid; gap: 10px; justify-content: center; }\n.occ-legend-row { align-items: center; display: grid; font-size: 13px; font-weight: 500; gap: 8px 12px; grid-template-columns: 12px minmax(90px, max-content) max-content max-content; justify-content: start; }\n.occ-swatch { border-radius: 3px; height: 12px; width: 12px; }\n.occ-legend-value, .occ-legend-percent { font-variant-numeric: tabular-nums; font-weight: 700; }\n.occ-chart-table-wrap, .occ-table-wrap { overflow-x: auto; width: 100%; }\n.occ-chart-table, .occ-table { border-collapse: collapse; font-size: 13px; min-width: 520px; width: 100%; }\n.occ-chart-table th, .occ-chart-table td, .occ-table th, .occ-table td { border-bottom: 1px solid var(--border); padding: 10px 12px; text-align: left; vertical-align: middle; }\n.occ-chart-table th, .occ-table th { background: var(--ink); color: #fff; font-weight: 650; }\n.occ-chart-table td:last-child, .occ-chart-table th:last-child, .occ-table td:not(:first-child), .occ-table th:not(:first-child) { text-align: right; }\n.occ-chart-table td, .occ-table td { font-variant-numeric: tabular-nums; }\n.occ-chart-table tbody tr:hover, .occ-table tbody tr:hover { background: var(--tint); }\n.occ-chart-caption, .occ-table-note { background: var(--tint); border: 1px solid var(--border); border-radius: 6px; color: var(--muted); font-size: 13px; font-weight: 500; margin-top: 16px; padding: 10px 12px; }\n.occ-empty-state { background: var(--tint); border: 1px dashed #94a3b8; border-radius: 6px; color: var(--muted); font-size: 13px; font-weight: 600; padding: 16px; text-align: center; width: 100%; }\n.occ-safe-stack .occ-chart-cluster { gap: 20px; grid-template-columns: 1fr; }\n.occ-safe-stack .occ-chart-caption { margin-top: 20px; }\n.occ-safe-table-stack .occ-table-note { margin-top: 20px; }\n.occ-table-card { display: flex; flex-direction: column; gap: 0; }\n.occ-table-card h3 { margin-bottom: 12px; }\n.occ-education { border-top: 1px solid var(--border); margin-top: 32px; padding-top: 24px; }\n.occ-education-grid { display: grid; gap: 24px; grid-template-columns: 1fr; }\n.occ-education-section { max-width: 850px; }\n.occ-education-section h3 { margin-top: 20px; }\n.occ-education-section p, .occ-education-section li { color: #334155; }\n.occ-education-section ul { margin: 0 0 16px; padding-left: 22px; }\n.occ-education-section a { color: var(--primary); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }\n.occ-education-section a:hover { color: #1e40af; }\n.occ-formula { background: var(--tint); border: 1px solid var(--border); border-radius: 6px; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; margin: 12px 0 16px; padding: 12px; }\n@container (min-width: 640px) {\n  .occ-chart-cluster { grid-template-columns: minmax(240px, 320px) max-content; }\n  .occ-safe-stack .occ-chart-cluster { grid-template-columns: 1fr; }\n}\n@container (min-width: 900px) {\n  .occ-workspace { grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr); }\n}\n@container (max-width: 639px) {\n  .occ-calculator { padding: 16px; }\n  .occ-panel, .occ-card, .occ-chart-card, .occ-table-card { padding: 16px; }\n  .occ-result-grid { grid-template-columns: 1fr; }\n  .occ-toolbar { align-items: stretch; flex-direction: column; }\n  .occ-button { width: 100%; }\n  .occ-legend-row { grid-template-columns: 12px minmax(0, 1fr) max-content; }\n  .occ-legend-percent { grid-column: 2 \/ 4; padding-left: 0; }\n  .occ-chart-caption, .occ-table-note { margin-top: 12px; }\n}\n\u003c\/style\u003e\n\u003cdiv class=\"occ-calculator\" data-calculator-root\u003e\n  \u003csection class=\"occ-header\"\u003e\n    \u003ch2\u003eOccupancy Rate Calculator\u003c\/h2\u003e\n    \u003cp class=\"occ-subtitle\"\u003eMeasure room utilization, estimate room revenue and RevPAR, and compare your property with a market benchmark for any reporting period.\u003c\/p\u003e\n    \u003cdiv class=\"occ-pills\" aria-label=\"Live calculator summary\"\u003e\n      \u003cspan class=\"occ-pill\"\u003eOccupancy \u003cspan class=\"occ-pill-value\" data-pill=\"occupancy\"\u003e76.14%\u003c\/span\u003e\u003c\/span\u003e\n      \u003cspan class=\"occ-pill\"\u003eRoom revenue \u003cspan class=\"occ-pill-value\" data-pill=\"revenue\"\u003e$18,000.00\u003c\/span\u003e\u003c\/span\u003e\n      \u003cspan class=\"occ-pill\"\u003eRevPAR \u003cspan class=\"occ-pill-value\" data-pill=\"revpar\"\u003e$91.37\u003c\/span\u003e\u003c\/span\u003e\n      \u003cspan class=\"occ-pill\"\u003eMarket gap \u003cspan class=\"occ-pill-value\" data-pill=\"gap\"\u003e-3.86 pp\u003c\/span\u003e\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003cdiv class=\"occ-toolbar\" aria-label=\"Calculator actions\"\u003e\n    \u003cbutton class=\"occ-button occ-download\" type=\"button\" data-action=\"download\"\u003e\n      \u003csvg class=\"occ-icon\" viewbox=\"0 0 24 24\" aria-hidden=\"true\"\u003e\u003cpath fill=\"currentColor\" d=\"M12 3a1 1 0 0 1 1 1v8.59l2.3-2.3a1 1 0 1 1 1.4 1.42l-4 4a1 1 0 0 1-1.4 0l-4-4a1 1 0 1 1 1.4-1.42l2.3 2.3V4a1 1 0 0 1 1-1ZM5 18a1 1 0 0 1 1 1v1h12v-1a1 1 0 1 1 2 0v2a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1Z\"\u003e\u003c\/path\u003e\u003c\/svg\u003e\n      \u003cspan\u003eDownload Excel\u003c\/span\u003e\n    \u003c\/button\u003e\n    \u003cbutton class=\"occ-button occ-reset\" type=\"button\" data-action=\"reset\"\u003eReset\u003c\/button\u003e\n  \u003c\/div\u003e\n\n  \u003csection class=\"occ-workspace\"\u003e\n    \u003cdiv class=\"occ-panel\"\u003e\n      \u003cdiv class=\"occ-panel-title\"\u003e\n        \u003ch3\u003eProperty inputs\u003c\/h3\u003e\n        \u003cp\u003eAverage daily room counts for the selected period\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"occ-field-grid\"\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-period\"\u003ePeriod\u003c\/label\u003e\n          \u003cselect id=\"occ-period\" data-input=\"period\"\u003e\n            \u003coption value=\"day\" selected\u003eDaily\u003c\/option\u003e\n            \u003coption value=\"week\"\u003eWeekly\u003c\/option\u003e\n            \u003coption value=\"month\"\u003eMonthly (30 days)\u003c\/option\u003e\n            \u003coption value=\"year\"\u003eYearly (365 days)\u003c\/option\u003e\n            \u003coption value=\"custom\"\u003eCustom\u003c\/option\u003e\n          \u003c\/select\u003e\n          \u003cp class=\"occ-helper\"\u003eSets the number of days used for room-night and revenue totals.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"period\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\" data-custom-field hidden\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-custom-days\"\u003eCustom period length\u003c\/label\u003e\n          \u003cinput id=\"occ-custom-days\" type=\"text\" inputmode=\"numeric\" value=\"30\" data-input=\"customDays\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003eEnter a whole number of calendar days.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"customDays\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-occupied\"\u003eRooms occupied per day\u003c\/label\u003e\n          \u003cinput id=\"occ-occupied\" type=\"text\" inputmode=\"decimal\" value=\"150\" data-input=\"occupied\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003eAverage number of rooms sold or occupied each day.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"occupied\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-unavailable\"\u003eRooms unavailable per day\u003c\/label\u003e\n          \u003cinput id=\"occ-unavailable\" type=\"text\" inputmode=\"decimal\" value=\"3\" data-input=\"unavailable\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003eRooms out of order, in maintenance, or otherwise not for sale.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"unavailable\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-total\"\u003eTotal rooms\u003c\/label\u003e\n          \u003cinput id=\"occ-total\" type=\"text\" inputmode=\"numeric\" value=\"200\" data-input=\"total\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003ePhysical room inventory before temporary exclusions.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"total\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-rate\"\u003eAverage daily rate\u003c\/label\u003e\n          \u003cinput id=\"occ-rate\" type=\"text\" inputmode=\"decimal\" value=\"$120.00\" data-input=\"rate\" data-mask=\"currency\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003eAverage room revenue earned for each occupied room-night.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"rate\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n        \u003cdiv class=\"occ-field\"\u003e\n          \u003clabel class=\"occ-label\" for=\"occ-benchmark\"\u003eCompetitor or market occupancy\u003c\/label\u003e\n          \u003cinput id=\"occ-benchmark\" type=\"text\" inputmode=\"decimal\" value=\"80.00%\" data-input=\"benchmark\" data-mask=\"percent\" autocomplete=\"off\"\u003e\n          \u003cp class=\"occ-helper\"\u003eOptional benchmark from a comparable property or market report.\u003c\/p\u003e\n          \u003cp class=\"occ-error\" data-error=\"benchmark\"\u003e\u003c\/p\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003caside class=\"occ-panel occ-results\" aria-label=\"Live results\"\u003e\n      \u003cdiv class=\"occ-primary-result\" aria-live=\"polite\" aria-atomic=\"true\"\u003e\n        \u003cdiv class=\"occ-result-label\"\u003eOccupancy rate\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-main\" data-result=\"occupancy\"\u003e76.14%\u003c\/div\u003e\n        \u003cp class=\"occ-result-note\" data-result=\"summary\"\u003e150 occupied rooms out of 197 rooms available for sale.\u003c\/p\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"occ-result-grid\"\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"available\"\u003e197\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eAvailable rooms per day\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"roomNights\"\u003e150\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eOccupied room-nights\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"revenue\"\u003e$18,000.00\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eRoom revenue\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"revpar\"\u003e$91.37\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eRevPAR\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"vacancy\"\u003e23.86%\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eVacancy rate\u003c\/div\u003e\n\u003c\/div\u003e\n        \u003cdiv class=\"occ-result-card\"\u003e\n\u003cdiv class=\"occ-result-card-value\" data-result=\"potentialGap\"\u003e$5,640.00\u003c\/div\u003e\n\u003cdiv class=\"occ-result-card-label\"\u003eRevenue below full occupancy\u003c\/div\u003e\n\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"occ-status\" data-status data-tone=\"negative\"\u003eYour occupancy is 3.86 percentage points below the selected benchmark.\u003c\/div\u003e\n    \u003c\/aside\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"occ-section occ-chart-card\" data-chart-card\u003e\n    \u003cdiv class=\"occ-chart-heading\"\u003e\n      \u003ch3\u003eAvailable-room utilization\u003c\/h3\u003e\n      \u003cp data-chart-interpretation\u003eOf 197 sellable rooms, 150 are occupied and 47 are vacant each day.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"occ-chart-cluster\" data-chart-cluster\u003e\n      \u003cdiv class=\"occ-plot-wrap\" data-plot-wrap\u003e\n        \u003csvg class=\"occ-donut\" viewbox=\"0 0 200 200\" role=\"img\" aria-labelledby=\"occ-chart-title occ-chart-desc\" data-chart-svg\u003e\n          \u003ctitle id=\"occ-chart-title\"\u003eOccupied and vacant room breakdown\u003c\/title\u003e\n          \u003cdesc id=\"occ-chart-desc\" data-chart-desc\u003eOccupied rooms 150, 76.14 percent. Vacant rooms 47, 23.86 percent.\u003c\/desc\u003e\n          \u003ccircle class=\"occ-donut-track\" cx=\"100\" cy=\"100\" r=\"72\"\u003e\u003c\/circle\u003e\n          \u003cg data-chart-segments\u003e\u003c\/g\u003e\n          \u003ctext class=\"occ-center-label\" x=\"100\" y=\"97\" data-chart-center\u003e76.14%\u003c\/text\u003e\n          \u003ctext class=\"occ-center-caption\" x=\"100\" y=\"119\"\u003eoccupied\u003c\/text\u003e\n        \u003c\/svg\u003e\n        \u003cdiv class=\"occ-empty-state\" data-chart-empty hidden\u003eEnter valid room values above to see the utilization breakdown.\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"occ-legend\" data-chart-legend aria-label=\"Chart legend\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"occ-chart-table-wrap\"\u003e\n      \u003ctable class=\"occ-chart-table\"\u003e\n        \u003cthead\u003e\u003ctr\u003e\n\u003cth scope=\"col\"\u003eCategory\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eRooms per day\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eShare of available rooms\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n        \u003ctbody data-chart-table\u003e\u003c\/tbody\u003e\n      \u003c\/table\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"occ-chart-caption\" data-chart-caption\u003eOccupancy excludes rooms marked unavailable, so the denominator is the inventory that could actually be sold.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"occ-section occ-table-card\" data-table-card\u003e\n    \u003ch3\u003eProperty and market comparison\u003c\/h3\u003e\n    \u003cdiv class=\"occ-table-wrap\" data-table-wrap\u003e\n      \u003ctable class=\"occ-table\"\u003e\n        \u003cthead\u003e\u003ctr\u003e\n\u003cth scope=\"col\"\u003eMetric\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eYour property\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eMarket benchmark\u003c\/th\u003e\n\u003cth scope=\"col\"\u003eDifference\u003c\/th\u003e\n\u003c\/tr\u003e\u003c\/thead\u003e\n        \u003ctbody data-comparison-table\u003e\u003c\/tbody\u003e\n      \u003c\/table\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"occ-table-note\" data-table-note\u003eBenchmark figures assume the same available-room inventory, average daily rate, and reporting period so that the comparison isolates occupancy.\u003c\/div\u003e\n  \u003c\/section\u003e\n\n  \u003csection class=\"occ-education\"\u003e\n    \u003cdiv class=\"occ-education-grid\"\u003e\n      \u003carticle class=\"occ-education-section\"\u003e\n        \u003ch2\u003eHow to use the occupancy rate calculator\u003c\/h2\u003e\n        \u003cp\u003eThis calculator estimates how effectively a hotel, serviced apartment building, vacation-rental portfolio, hostel, or similar lodging property uses the rooms that are available for sale. It starts with room inventory and produces occupancy rate, vacancy rate, room-night totals, estimated room revenue, revenue per available room, and a like-for-like market comparison. The calculation is most useful when every input describes the same operating period and the room counts are measured consistently.\u003c\/p\u003e\n\n        \u003ch3\u003eWhat each input means\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003ePeriod\u003c\/strong\u003e controls the reporting horizon. Daily uses one day, weekly uses seven days, monthly uses 30 days, and yearly uses 365 days. Choose Custom when you need an exact number of days, such as a 28-day accounting period or a 92-day season. The period does not change the occupancy percentage when daily room counts are constant; it scales room-nights and revenue totals.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eRooms occupied per day\u003c\/strong\u003e is the average number of sellable rooms used by guests on a typical day in the selected period. For a monthly report, divide total occupied room-nights by the number of days rather than entering the month’s cumulative bookings. A higher value raises occupancy, revenue, and RevPAR. It cannot exceed rooms available for sale.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eRooms unavailable per day\u003c\/strong\u003e covers rooms taken out of inventory for maintenance, renovation, safety issues, owner use, or other operational restrictions. These rooms are excluded from the occupancy denominator because they could not be sold. Use an average daily figure when availability changed during the period. Entering every physical room as available can understate operational occupancy.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eTotal rooms\u003c\/strong\u003e is the property’s full physical inventory. It must be greater than the unavailable count. Adding rooms without adding demand lowers occupancy; taking rooms out of service reduces sellable capacity and may increase the occupancy percentage even though it does not create more guests.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eAverage daily rate (ADR)\u003c\/strong\u003e is the average room revenue per occupied room-night, excluding taxes and non-room revenue unless your internal reporting convention says otherwise. ADR drives room revenue and RevPAR but does not change occupancy. Use a realized rate, not a posted rack rate. The \u003ca href=\"https:\/\/www.investopedia.com\/terms\/a\/average-daily-rate.asp\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eaverage daily rate overview\u003c\/a\u003e explains how ADR is commonly interpreted.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eCompetitor or market occupancy\u003c\/strong\u003e is optional. Enter a percentage from a comparable property set, destination report, management account, or other credible benchmark. A useful benchmark should match the same location, property type, quality tier, and period. Seasonal resorts should not compare a peak month with an annual average.\u003c\/p\u003e\n\n        \u003ch3\u003eHow the formulas work\u003c\/h3\u003e\n        \u003cdiv class=\"occ-formula\"\u003eAvailable rooms = Total rooms − Unavailable rooms\u003cbr\u003eOccupancy rate = Occupied rooms ÷ Available rooms × 100\u003cbr\u003eRoom revenue = Occupied rooms × ADR × Period days\u003cbr\u003eRevPAR = Room revenue ÷ Available room-nights\u003c\/div\u003e\n        \u003cp\u003eAvailable room-nights equal available rooms multiplied by period days. Occupied room-nights use the same structure. RevPAR can also be calculated as ADR multiplied by occupancy expressed as a decimal. Because RevPAR combines price and utilization, it is often a more complete revenue-efficiency measure than occupancy alone. Industry practitioners commonly track occupancy, ADR, and RevPAR together rather than treating any one metric as sufficient.\u003c\/p\u003e\n\n        \u003ch3\u003eHow to read the results\u003c\/h3\u003e\n        \u003cp\u003e\u003cstrong\u003eOccupancy rate\u003c\/strong\u003e is the share of sellable rooms occupied. A high percentage may indicate strong demand, constrained capacity, or aggressive discounting; it is not automatically proof of high profitability. A zero rate means no rooms are occupied, while a rate near 100% may justify reviewing pricing and displacement of higher-value demand.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eAvailable rooms per day\u003c\/strong\u003e shows the denominator used in the calculation. \u003cstrong\u003eOccupied room-nights\u003c\/strong\u003e scales daily occupancy across the reporting period. \u003cstrong\u003eRoom revenue\u003c\/strong\u003e is a planning estimate based on average occupancy and ADR; it excludes food and beverage, parking, resort fees, cancellations, taxes, commissions, and other adjustments unless those amounts are embedded in the rate.\u003c\/p\u003e\n        \u003cp\u003e\u003cstrong\u003eRevPAR\u003c\/strong\u003e measures room revenue per sellable room-night. It falls when either occupancy or ADR declines. \u003cstrong\u003eVacancy rate\u003c\/strong\u003e is the complement of occupancy and helps visualize unused sellable capacity. \u003cstrong\u003eRevenue below full occupancy\u003c\/strong\u003e is the theoretical difference between current room revenue and revenue at 100% occupancy at the same ADR. It is not a guaranteed opportunity because full occupancy may require lower pricing or additional distribution costs.\u003c\/p\u003e\n        \u003cp\u003eThe donut chart shows occupied and vacant sellable rooms from the same model used by the results and Excel workbook. The comparison table applies the market occupancy percentage to your current available-room inventory and ADR. Positive differences mean your property is above the benchmark; negative differences mean it is below. Review percentage-point differences separately from dollar differences.\u003c\/p\u003e\n\n        \u003ch3\u003ePractical interpretation and common mistakes\u003c\/h3\u003e\n        \u003cp\u003eDo not compare properties using occupancy alone. A hotel with lower occupancy can produce stronger revenue if its ADR is sufficiently higher. Also avoid mixing rooms sold with guests, reservations, or beds: the numerator and denominator must use the same unit. For monthly or annual reporting, use room-nights rather than a simple count of reservations. Long stays occupy multiple room-nights, while a canceled reservation may occupy none.\u003c\/p\u003e\n        \u003cp\u003eOperational definitions matter. Some organizations exclude complimentary rooms, house use, or out-of-order inventory differently. Keep a documented policy and apply it consistently. The U.S. Census Bureau’s \u003ca href=\"https:\/\/www.census.gov\/programs-surveys\/economic-census.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eEconomic Census\u003c\/a\u003e provides broader industry context, while the U.S. Bureau of Labor Statistics publishes information about \u003ca href=\"https:\/\/www.bls.gov\/ooh\/management\/lodging-managers.htm\" target=\"_blank\" rel=\"noopener noreferrer\"\u003elodging management operations\u003c\/a\u003e. For hospitality-focused research and operating concepts, the \u003ca href=\"https:\/\/sha.cornell.edu\/faculty-research\/centers-institutes\/chr\/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eCornell Center for Hospitality Research\u003c\/a\u003e is another useful resource.\u003c\/p\u003e\n        \u003cp\u003eUse scenario analysis rather than chasing a single “good” occupancy number. Test how a price increase, temporary room closure, or demand change affects RevPAR and total room revenue. A balanced strategy seeks the best economic outcome after distribution costs, labor, maintenance, and guest experience—not simply the highest possible percentage.\u003c\/p\u003e\n      \u003c\/article\u003e\n    \u003c\/div\u003e\n  \u003c\/section\u003e\n\u003c\/div\u003e","brand":"FinancialModelsLab","offers":[{"title":"Default Title","offer_id":49909484093683,"sku":"occupancy-rate","price":0.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0522\/6191\/2762\/files\/occupancy-rate.webp?v=1783935435","url":"https:\/\/financialmodelslab.com\/products\/occupancy-rate","provider":"Financial Models Lab","version":"1.0","type":"link"}