{
  "slug": "window-cleaning-pane-pricing",
  "title": "Window Cleaning Pane Pricing Calculator",
  "heading": "Window Cleaning Job Pricing Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/window-cleaning-pane-pricing",
  "summary": "Price residential window cleaning by pane count, story height, and screens.",
  "description": "Per-pane pricing is the standard model for residential window cleaning because it scales cleanly with job size regardless of house shape. This calculator applies a base per-pane rate, a per-story surcharge for ladder work and safety setup on upper floors, and optional screen cleaning and track detailing add-ons, then floors the total at a minimum job charge.",
  "formula": "Price = max(minimum, panes × base rate × story multiplier) + screens × screen rate + tracks × track rate.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=window-cleaning-pane-pricing",
  "inputs": [
    {
      "id": "panes",
      "label": "Total panes (in + out)",
      "kind": "number",
      "hint": null,
      "default": 40,
      "unit": null,
      "min": 2,
      "max": null
    },
    {
      "id": "baseRate",
      "label": "Base price per pane",
      "kind": "number",
      "hint": null,
      "default": 5,
      "unit": "$",
      "min": 1,
      "max": null
    },
    {
      "id": "stories",
      "label": "Highest story with windows",
      "kind": "select",
      "hint": null,
      "default": "1.0",
      "options": [
        {
          "value": "1.0",
          "label": "1 story"
        },
        {
          "value": "1.25",
          "label": "2 story"
        },
        {
          "value": "1.5",
          "label": "3+ story"
        }
      ]
    },
    {
      "id": "screens",
      "label": "Screens to clean",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "screenRate",
      "label": "Price per screen",
      "kind": "number",
      "hint": null,
      "default": 3,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "tracks",
      "label": "Tracks to detail",
      "kind": "number",
      "hint": null,
      "default": 10,
      "unit": null,
      "min": 0,
      "max": null
    },
    {
      "id": "trackRate",
      "label": "Price per track",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "minimumCharge",
      "label": "Minimum job charge",
      "kind": "number",
      "hint": null,
      "default": 150,
      "unit": "$",
      "min": 0,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "price",
      "label": "Job price",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "paneCost",
      "label": "Window pane cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "screenCost",
      "label": "Screen cleaning cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "trackCost",
      "label": "Track detailing cost",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Total panes (in + out): 40",
      "Base price per pane: 5 $",
      "Highest story with windows: 1 story",
      "Screens to clean: 10",
      "Price per screen: 3 $",
      "Tracks to detail: 10",
      "Price per track: 2 $",
      "Minimum job charge: 150 $"
    ],
    "outputs": [
      "Job price: $250",
      "Window pane cost: $200",
      "Screen cleaning cost: $30",
      "Track detailing cost: $20"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter total panes (in + out).",
      "Enter base price per pane ($).",
      "Enter highest story with windows.",
      "Enter screens to clean.",
      "Enter price per screen ($).",
      "Enter tracks to detail.",
      "Enter price per track ($).",
      "Enter minimum job charge ($).",
      "Read your job price 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": {
        "panes": 24,
        "baseRate": 3,
        "stories": "1.0",
        "screens": 6,
        "screenRate": 1.7999999999999998,
        "tracks": 6,
        "trackRate": 1.2,
        "minimumCharge": 90
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "panes": 40,
        "baseRate": 5,
        "stories": "1.0",
        "screens": 10,
        "screenRate": 3,
        "tracks": 10,
        "trackRate": 2,
        "minimumCharge": 150
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "panes": 64,
        "baseRate": 8,
        "stories": "1.0",
        "screens": 16,
        "screenRate": 4.800000000000001,
        "tracks": 16,
        "trackRate": 3.2,
        "minimumCharge": 240
      }
    }
  ],
  "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": "Why price by pane instead of by window?",
      "a": "A 'window' can be a single pane or a grid of six small panes (common in older or colonial-style homes), and grid windows take much longer to clean per window than a single large pane. Per-pane pricing captures that time difference accurately, while per-window pricing systematically underprices older homes with divided-light windows."
    },
    {
      "q": "How much extra should upper stories cost?",
      "a": "Second-story work typically adds 20-30% to account for ladder setup, movement time, and fall-risk safety practices, while third-story or hard-to-access windows can add 40-60% or require specialized equipment like water-fed poles, which changes the labor time substantially. Always confirm safe ladder access before quoting; some upper windows may require pole systems instead."
    },
    {
      "q": "Are screens and tracks usually included or extra?",
      "a": "Most companies itemize screens and track detailing separately since not every customer wants them and they add meaningful time (screens need to be removed, washed, dried, and reinserted). Bundling them into a 'full service' package at a modest discount versus buying each separately is a common upsell that increases average ticket without complicating the base pricing."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/pressure-washing-square-foot",
    "https://www.revenuelab.fyi/toolbox/quote-close-rate-revenue"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Window Cleaning Pane Pricing Calculator (https://www.revenuelab.fyi/toolbox/window-cleaning-pane-pricing)"
}