{
  "slug": "str-vs-ltr-conversion",
  "title": "Short-Term vs Long-Term Rental Switch Calculator",
  "heading": "STR vs LTR Conversion Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/str-vs-ltr-conversion",
  "summary": "Compare net income from switching a unit between short-term and long-term rental.",
  "description": "Switching a property between short-term (Airbnb/VRBO style) and long-term rental changes almost every line item: gross revenue potential, occupancy volatility, cleaning and turnover costs, platform fees, furnishing and utility costs you now carry instead of the tenant, and local regulatory risk. This calculator nets out both models so you can see which actually produces more annual income after realistic costs, not just which has the higher headline nightly rate or monthly rent — many STR operators are surprised how much cleaning, platform fees, and furnished-utility costs eat into the gross number.",
  "formula": "STR net = (nightly rate × occupancy% × 365) − platform fees − cleaning costs − furnished utilities − STR-specific insurance. LTR net = (monthly rent × 12 × (1 − vacancy%)) − standard operating costs.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=str-vs-ltr-conversion",
  "inputs": [
    {
      "id": "nightlyRate",
      "label": "STR average nightly rate",
      "kind": "number",
      "hint": null,
      "default": 165,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "strOccupancyPct",
      "label": "STR occupancy rate",
      "kind": "number",
      "hint": null,
      "default": 58,
      "unit": "%",
      "min": 0,
      "max": 100
    },
    {
      "id": "platformFeePct",
      "label": "Platform fee",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": "%",
      "min": 0,
      "max": 30
    },
    {
      "id": "cleaningPerTurn",
      "label": "Cleaning cost per stay",
      "kind": "number",
      "hint": null,
      "default": 110,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "avgStayNights",
      "label": "Average stay length",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "nights",
      "min": 1,
      "max": 30
    },
    {
      "id": "strExtraCosts",
      "label": "STR furnished utilities + extra insurance (annual)",
      "kind": "number",
      "hint": null,
      "default": 6000,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "ltrRent",
      "label": "Long-term monthly rent",
      "kind": "number",
      "hint": null,
      "default": 2400,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "ltrVacancyPct",
      "label": "LTR vacancy rate",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": "%",
      "min": 0,
      "max": 50
    },
    {
      "id": "ltrCostsAnnual",
      "label": "LTR operating costs (annual)",
      "kind": "number",
      "hint": null,
      "default": 2200,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "diff",
      "label": "STR net advantage over LTR",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "strNet",
      "label": "STR annual net income",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "ltrNet",
      "label": "LTR annual net income",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "grossStr",
      "label": "STR gross booking revenue",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "cleaningTotal",
      "label": "Annual cleaning cost (STR)",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "STR average nightly rate: 165 $",
      "STR occupancy rate: 58 %",
      "Platform fee: 14 %",
      "Cleaning cost per stay: 110 $",
      "Average stay length: 3 nights",
      "STR furnished utilities + extra insurance (annual): 6000 $",
      "Long-term monthly rent: 2400 $",
      "LTR vacancy rate: 6 %",
      "LTR operating costs (annual): 2200 $"
    ],
    "outputs": [
      "STR net advantage over LTR: -$8,594",
      "STR annual net income: $16,278",
      "LTR annual net income: $24,872",
      "STR gross booking revenue: $34,931",
      "Annual cleaning cost (STR): $7,762"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter str average nightly rate ($).",
      "Enter str occupancy rate (%).",
      "Enter platform fee (%).",
      "Enter cleaning cost per stay ($).",
      "Enter average stay length (nights).",
      "Enter str furnished utilities + extra insurance (annual) ($).",
      "Enter long-term monthly rent ($).",
      "Enter ltr vacancy rate (%).",
      "Enter ltr operating costs (annual) ($).",
      "Read your str net advantage over ltr 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": {
        "nightlyRate": 100,
        "strOccupancyPct": 35,
        "platformFeePct": 8,
        "cleaningPerTurn": 70,
        "avgStayNights": 2,
        "strExtraCosts": 3500,
        "ltrRent": 1450,
        "ltrVacancyPct": 4,
        "ltrCostsAnnual": 1300
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "nightlyRate": 165,
        "strOccupancyPct": 58,
        "platformFeePct": 14,
        "cleaningPerTurn": 110,
        "avgStayNights": 3,
        "strExtraCosts": 6000,
        "ltrRent": 2400,
        "ltrVacancyPct": 6,
        "ltrCostsAnnual": 2200
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "nightlyRate": 265,
        "strOccupancyPct": 93,
        "platformFeePct": 22,
        "cleaningPerTurn": 180,
        "avgStayNights": 5,
        "strExtraCosts": 9500,
        "ltrRent": 3850,
        "ltrVacancyPct": 10,
        "ltrCostsAnnual": 3500
      }
    }
  ],
  "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 rate should I assume for STR?",
      "a": "It depends heavily on market and seasonality — strong vacation markets can run 60-75% annual average, while a mediocre location or an oversaturated market might see 35-45%. Pull actual comps from AirDNA or similar market data for your specific area rather than guessing, since this single number swings the whole comparison."
    },
    {
      "q": "What am I missing if I just compare nightly rate x 365 to monthly rent x 12?",
      "a": "Almost everything that makes the comparison honest: platform fees (10-15%+), cleaning between every stay, furnishing and higher utility costs you now pay instead of the tenant, STR-specific insurance riders, and much higher local regulatory and enforcement risk in many cities that have capped or banned STRs."
    },
    {
      "q": "Does STR income offset itself against passive activity losses differently?",
      "a": "Yes, this matters for tax purposes — STRs with average stays under seven days and material participation by the owner can be treated as non-passive, potentially allowing losses to offset other active income, unlike typical long-term rental losses which are usually passive. Talk to a CPA before assuming this applies to your situation."
    },
    {
      "q": "What's the biggest hidden STR cost?",
      "a": "Furnishing and re-furnishing (typically $8,000-$20,000 upfront depending on size and quality) plus ongoing wear and breakage that a long-term tenant's own furniture would never generate. Many first-year STR operators underbudget this and are surprised by replacement costs in year two or three."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/lease-up-marketing-cost",
    "https://www.revenuelab.fyi/toolbox/vacancy-loss-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Short-Term vs Long-Term Rental Switch Calculator (https://www.revenuelab.fyi/toolbox/str-vs-ltr-conversion)"
}