{
  "slug": "short-term-rental-breakeven",
  "title": "Short-Term Rental Break-Even Calculator",
  "heading": "Short-Term Rental Break-Even Occupancy",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/short-term-rental-breakeven",
  "summary": "The occupancy rate an STR needs to beat both its costs and the long-term rent it replaces.",
  "description": "A short-term rental converts a predictable monthly rent into a variable nightly business with cleaning, supplies, platform fees, higher utilities, and far more management. This calculator computes net revenue per booked night after fees and cleaning, then solves for the occupancy required to cover fixed costs and the occupancy required to beat what the same property would earn on a long-term lease. The second figure is the decision: if you need to run above realistic market occupancy just to match a boring twelve-month tenancy, the extra work is buying you nothing.",
  "formula": "Net per night = ADR × (1 − platform fee) + cleaning fee charged − cleaning cost − variable supplies. Break-even nights = fixed monthly costs ÷ net per night. Occupancy = nights ÷ days in month.",
  "dateModified": "2026-08-25",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=short-term-rental-breakeven",
  "inputs": [
    {
      "id": "adr",
      "label": "Average daily rate",
      "kind": "number",
      "hint": null,
      "default": 185,
      "unit": "$/night",
      "min": 1,
      "max": null
    },
    {
      "id": "platformFee",
      "label": "Platform fee on booking",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "%",
      "min": 0,
      "max": 25
    },
    {
      "id": "cleaningCharged",
      "label": "Cleaning fee charged to guest",
      "kind": "number",
      "hint": null,
      "default": 95,
      "unit": "$/stay",
      "min": 0,
      "max": null
    },
    {
      "id": "cleaningCost",
      "label": "Cleaner's actual cost",
      "kind": "number",
      "hint": null,
      "default": 110,
      "unit": "$/stay",
      "min": 0,
      "max": null
    },
    {
      "id": "avgStay",
      "label": "Average length of stay",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "nights",
      "min": 1,
      "max": null
    },
    {
      "id": "supplies",
      "label": "Consumables per night",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": "$/night",
      "min": 0,
      "max": null
    },
    {
      "id": "mortgage",
      "label": "Mortgage payment",
      "kind": "number",
      "hint": null,
      "default": 1850,
      "unit": "$/mo",
      "min": 0,
      "max": null
    },
    {
      "id": "fixedOther",
      "label": "Other fixed monthly costs",
      "kind": "number",
      "hint": "Taxes, insurance, utilities, internet, HOA, licence",
      "default": 780,
      "unit": "$/mo",
      "min": 0,
      "max": null
    },
    {
      "id": "mgmtPct",
      "label": "Co-host or management fee",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": "% of revenue",
      "min": 0,
      "max": 40
    },
    {
      "id": "ltRent",
      "label": "Long-term rent it would earn",
      "kind": "number",
      "hint": null,
      "default": 2200,
      "unit": "$/mo",
      "min": 0,
      "max": null
    },
    {
      "id": "ltOpex",
      "label": "Long-term operating costs",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": "% of rent",
      "min": 0,
      "max": 50
    }
  ],
  "outputs": [
    {
      "id": "beOccupancy",
      "label": "Occupancy needed to break even",
      "format": "percent",
      "hint": null,
      "primary": true
    },
    {
      "id": "beatLtOccupancy",
      "label": "Occupancy needed to beat a long-term lease",
      "format": "percent",
      "hint": null,
      "primary": false
    },
    {
      "id": "netPerNight",
      "label": "Net revenue per booked night",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "beNights",
      "label": "Booked nights per month to break even",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "fixed",
      "label": "Fixed costs per month",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "ltNetMonthly",
      "label": "Monthly cash flow as a long-term rental",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "revenueAt65",
      "label": "Monthly cash flow at 65% occupancy",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Average daily rate: 185 $/night",
      "Platform fee on booking: 3 %",
      "Cleaning fee charged to guest: 95 $/stay",
      "Cleaner's actual cost: 110 $/stay",
      "Average length of stay: 3 nights",
      "Consumables per night: 6 $/night",
      "Mortgage payment: 1850 $/mo",
      "Other fixed monthly costs: 780 $/mo",
      "Co-host or management fee: 18 % of revenue",
      "Long-term rent it would earn: 2200 $/mo",
      "Long-term operating costs: 12 % of rent"
    ],
    "outputs": [
      "Occupancy needed to break even: 63.5%",
      "Occupancy needed to beat a long-term lease: 65.6%",
      "Net revenue per booked night: $136.15",
      "Booked nights per month to break even: 19.32",
      "Fixed costs per month: $2,630.00",
      "Monthly cash flow as a long-term rental: $86.00",
      "Monthly cash flow at 65% occupancy: $60.30"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter average daily rate ($/night).",
      "Enter platform fee on booking (%).",
      "Enter cleaning fee charged to guest ($/stay).",
      "Enter cleaner's actual cost ($/stay).",
      "Enter average length of stay (nights).",
      "Enter consumables per night ($/night).",
      "Enter mortgage payment ($/mo).",
      "Enter other fixed monthly costs ($/mo) — Taxes, insurance, utilities, internet, HOA, licence.",
      "Enter co-host or management fee (% of revenue).",
      "Enter long-term rent it would earn ($/mo).",
      "Enter long-term operating costs (% of rent).",
      "Read your occupancy needed to break even 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": {
        "adr": 110,
        "platformFee": 1.7999999999999998,
        "cleaningCharged": 55,
        "cleaningCost": 65,
        "avgStay": 1.7999999999999998,
        "supplies": 4,
        "mortgage": 1100,
        "fixedOther": 475,
        "mgmtPct": 11,
        "ltRent": 1300,
        "ltOpex": 7
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "adr": 185,
        "platformFee": 3,
        "cleaningCharged": 95,
        "cleaningCost": 110,
        "avgStay": 3,
        "supplies": 6,
        "mortgage": 1850,
        "fixedOther": 775,
        "mgmtPct": 18,
        "ltRent": 2200,
        "ltOpex": 12
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "adr": 295,
        "platformFee": 4.800000000000001,
        "cleaningCharged": 150,
        "cleaningCost": 175,
        "avgStay": 4.800000000000001,
        "supplies": 10,
        "mortgage": 2950,
        "fixedOther": 1250,
        "mgmtPct": 29,
        "ltRent": 3500,
        "ltOpex": 19
      }
    }
  ],
  "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 occupancy is realistic?",
      "a": "It varies enormously by market and seasonality — coastal and ski markets can be near-full in season and near-empty out of it, while urban markets are steadier but lower. Pull twelve months of comparable listing data for your specific submarket rather than using an annual average, because the average hides the months that lose money."
    },
    {
      "q": "Why is the cleaning fee treated as a cost?",
      "a": "Because guests increasingly compare total price, so a high cleaning fee suppresses bookings and often does not fully cover the cleaner. Modelling the gap per night surfaces the real economics; if your charged fee exceeds the actual cost, the figure simply works in your favour."
    },
    {
      "q": "Should I include the mortgage in break-even?",
      "a": "For a cash-flow decision, yes — it is a bill that arrives whether or not anyone books. For comparing the property against alternative uses, note that the principal portion builds equity, so pure cash break-even slightly overstates the economic cost."
    },
    {
      "q": "What about regulation risk?",
      "a": "It is the largest unmodelled risk in short-term rentals. Cities change permit rules, night caps, and registration requirements with little notice, and a rule change can convert a functioning STR into a long-term rental overnight. Check that the long-term column still works before you buy."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/rental-cap-rate",
    "https://www.revenuelab.fyi/toolbox/house-hack-cost-to-live",
    "https://www.revenuelab.fyi/toolbox/rental-cash-flow"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Short-Term Rental Break-Even Calculator (https://www.revenuelab.fyi/toolbox/short-term-rental-breakeven)"
}