{
  "slug": "spa-treatment-room-utilization",
  "title": "Spa Treatment Room Utilization Calculator",
  "heading": "Spa Treatment Room Utilization Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/spa-treatment-room-utilization",
  "summary": "Measure how efficiently your treatment rooms convert open hours to revenue.",
  "description": "Spas face a specific capacity constraint that salons don't: treatment rooms need turnover time between clients for cleaning, linen changes, and setup, which structurally caps how many services a room can deliver per day regardless of demand. This calculator takes the number of rooms, hours open, average service length, and required turnover time between bookings, and computes theoretical maximum capacity, current booked capacity, and utilization rate. It also converts unused capacity into lost revenue using your average service price, showing whether the constraint on growth is demand (not enough bookings) or capacity (not enough rooms/turnover efficiency) — two very different problems with different fixes.",
  "formula": "Max services/day/room = hours open ÷ (service length + turnover time). Utilization = actual services ÷ (max services × rooms × days).",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=spa-treatment-room-utilization",
  "inputs": [
    {
      "id": "rooms",
      "label": "Treatment rooms",
      "kind": "number",
      "hint": null,
      "default": 4,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "hoursOpenDay",
      "label": "Hours open per day",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": "hrs",
      "min": 1,
      "max": null
    },
    {
      "id": "serviceMin",
      "label": "Average service length",
      "kind": "number",
      "hint": null,
      "default": 60,
      "unit": "min",
      "min": 10,
      "max": null
    },
    {
      "id": "turnoverMin",
      "label": "Turnover time between clients",
      "kind": "number",
      "hint": null,
      "default": 15,
      "unit": "min",
      "min": 0,
      "max": null
    },
    {
      "id": "actualServicesDay",
      "label": "Actual services delivered per day (all rooms)",
      "kind": "number",
      "hint": null,
      "default": 16,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "avgPrice",
      "label": "Average service price",
      "kind": "number",
      "hint": null,
      "default": 110,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "utilization",
      "label": "Room utilization",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "maxServicesDay",
      "label": "Max services per day (all rooms)",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "unusedServices",
      "label": "Unused service slots per day",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "dailyLostRevenue",
      "label": "Daily revenue potential unused",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Treatment rooms: 4",
      "Hours open per day: 10 hrs",
      "Average service length: 60 min",
      "Turnover time between clients: 15 min",
      "Actual services delivered per day (all rooms): 16",
      "Average service price: 110 $"
    ],
    "outputs": [
      "Room utilization: 50.0%",
      "Max services per day (all rooms): 32",
      "Unused service slots per day: 16",
      "Daily revenue potential unused: $1,760"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter treatment rooms.",
      "Enter hours open per day (hrs).",
      "Enter average service length (min).",
      "Enter turnover time between clients (min).",
      "Enter actual services delivered per day (all rooms).",
      "Enter average service price ($).",
      "Read your room utilization on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "rooms": 2,
        "hoursOpenDay": 6,
        "serviceMin": 35,
        "turnoverMin": 10,
        "actualServicesDay": 10,
        "avgPrice": 65
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "rooms": 4,
        "hoursOpenDay": 10,
        "serviceMin": 60,
        "turnoverMin": 15,
        "actualServicesDay": 16,
        "avgPrice": 110
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "rooms": 6,
        "hoursOpenDay": 16,
        "serviceMin": 95,
        "turnoverMin": 25,
        "actualServicesDay": 26,
        "avgPrice": 175
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "What's a realistic max utilization for spa rooms?",
      "a": "80-90% is close to the practical ceiling once you account for late arrivals, consultation time, and occasional schedule gaps — 100% theoretical utilization is rarely sustainable in real operations. If you're consistently above 85%, it's a strong signal to add room capacity or staff before you start losing bookings to unavailability."
    },
    {
      "q": "How does turnover time affect capacity more than people expect?",
      "a": "A 60-minute massage with a 15-minute turnover only fits 8 services into a 10-hour day per room (75-minute slots), not 10. Shaving turnover to 10 minutes lifts that to 8.5 slots — a meaningful capacity gain from a process change alone, without adding any staff or rooms."
    },
    {
      "q": "Should every room have the same turnover time?",
      "a": "No — rooms used for wet treatments (body wraps, hydrotherapy) typically need more turnover time than a standard massage or facial room due to cleaning requirements. Model your highest-volume room type here, and calculate specialty rooms separately if their utilization patterns differ significantly."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/salon-chair-utilization",
    "https://www.revenuelab.fyi/toolbox/medspa-injector-vial-roi",
    "https://www.revenuelab.fyi/toolbox/spa-package-pricing-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Spa Treatment Room Utilization Calculator (https://www.revenuelab.fyi/toolbox/spa-treatment-room-utilization)"
}