{
  "slug": "cost-to-install-an-inground-pool-calculator",
  "title": "Cost to Install an Inground Pool Calculator",
  "heading": "Cost to Install an Inground Pool Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/cost-to-install-an-inground-pool-calculator",
  "summary": "Shell, decking, fencing, equipment and the annual running cost nobody quotes.",
  "description": "Pool quotes cover the hole and the shell. The finished project also includes decking, a code-required fence, an equipment pad, electrical and gas runs, and often site access work if a machine cannot reach the backyard — and then a running cost that continues every year. This calculator prices the shell by type and size with a regional index, adds each surrounding item explicitly, and then shows the first-year total alongside the annual operating cost so the decision is made on the full picture. Worked assumption for the defaults: a 16 × 32 ft gunite pool at $95/sq ft of water surface, 600 sq ft of concrete deck, 120 ft of code fence, a heater, and typical chemicals, power and water — roughly $72,000 installed nationally with about $2,900 a year to run.",
  "formula": "Install = (water area × shell rate + deck area × deck rate + fence ft × fence rate + heater + access) × regional index; annual = chemicals + power + water + service.",
  "dateModified": "2026-09-06",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=cost-to-install-an-inground-pool-calculator",
  "inputs": [
    {
      "id": "poolW",
      "label": "Pool width",
      "kind": "number",
      "hint": null,
      "default": 16,
      "unit": "ft",
      "min": 6,
      "max": 60
    },
    {
      "id": "poolL",
      "label": "Pool length",
      "kind": "number",
      "hint": null,
      "default": 32,
      "unit": "ft",
      "min": 8,
      "max": 120
    },
    {
      "id": "region",
      "label": "Region",
      "kind": "select",
      "hint": "Applies a regional labor-and-bid multiplier to the whole job.",
      "default": "1",
      "options": [
        {
          "value": "1",
          "label": "US national average — 1.00×"
        },
        {
          "value": "0.86",
          "label": "Rural / small town — 0.86×"
        },
        {
          "value": "0.94",
          "label": "South metro (Atlanta, Dallas, Tampa) — 0.94×"
        },
        {
          "value": "1.02",
          "label": "Midwest metro (Columbus, KC, Minneapolis) — 1.02×"
        },
        {
          "value": "1.14",
          "label": "Mountain West (Denver, Phoenix, Salt Lake) — 1.14×"
        },
        {
          "value": "1.28",
          "label": "Northeast metro (Boston, Philly, DC) — 1.28×"
        },
        {
          "value": "1.38",
          "label": "West Coast metro (Seattle, LA, Portland) — 1.38×"
        },
        {
          "value": "1.55",
          "label": "Highest-cost metro (SF Bay, Manhattan) — 1.55×"
        }
      ]
    },
    {
      "id": "shellRate",
      "label": "Pool type",
      "kind": "select",
      "hint": null,
      "default": "95",
      "options": [
        {
          "value": "62",
          "label": "Vinyl liner — $62/sq ft of water surface"
        },
        {
          "value": "78",
          "label": "Fiberglass shell — $78/sq ft"
        },
        {
          "value": "95",
          "label": "Gunite / shotcrete — $95/sq ft"
        },
        {
          "value": "135",
          "label": "Gunite with tile, spa spillover and custom shape — $135/sq ft"
        }
      ]
    },
    {
      "id": "deckArea",
      "label": "Surrounding deck area",
      "kind": "number",
      "hint": null,
      "default": 600,
      "unit": "sq ft",
      "min": 0,
      "max": 5000
    },
    {
      "id": "deckRate",
      "label": "Deck cost",
      "kind": "number",
      "hint": null,
      "default": 14,
      "unit": "$/sq ft",
      "min": 4,
      "max": 60
    },
    {
      "id": "fenceFeet",
      "label": "Code-required fencing",
      "kind": "number",
      "hint": null,
      "default": 120,
      "unit": "ft",
      "min": 0,
      "max": 600
    },
    {
      "id": "fenceRate",
      "label": "Fence cost",
      "kind": "number",
      "hint": null,
      "default": 38,
      "unit": "$/ft",
      "min": 10,
      "max": 150
    },
    {
      "id": "heater",
      "label": "Heater, automation and extra equipment",
      "kind": "number",
      "hint": null,
      "default": 6500,
      "unit": "$",
      "min": 0,
      "max": 40000
    },
    {
      "id": "access",
      "label": "Site access, tree removal, retaining",
      "kind": "number",
      "hint": null,
      "default": 4000,
      "unit": "$",
      "min": 0,
      "max": 80000
    },
    {
      "id": "annualService",
      "label": "Chemicals, power, water and service",
      "kind": "number",
      "hint": null,
      "default": 2900,
      "unit": "$/yr",
      "min": 0,
      "max": 20000
    }
  ],
  "outputs": [
    {
      "id": "install",
      "label": "Installed cost",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "annual",
      "label": "Annual running cost",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "tenYear",
      "label": "Ten-year cost of ownership",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "shell",
      "label": "Pool shell",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "deck",
      "label": "Decking",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "fence",
      "label": "Fencing",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "equip",
      "label": "Equipment and site access",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "water",
      "label": "Water surface area",
      "format": "number",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Pool width: 16 ft",
      "Pool length: 32 ft",
      "Region: US national average — 1.00×",
      "Pool type: Gunite / shotcrete — $95/sq ft",
      "Surrounding deck area: 600 sq ft",
      "Deck cost: 14 $/sq ft",
      "Code-required fencing: 120 ft",
      "Fence cost: 38 $/ft",
      "Heater, automation and extra equipment: 6500 $",
      "Site access, tree removal, retaining: 4000 $",
      "Chemicals, power, water and service: 2900 $/yr"
    ],
    "outputs": [
      "Installed cost: $72,100",
      "Annual running cost: $2,900",
      "Ten-year cost of ownership: $101,100",
      "Pool shell: $48,640",
      "Decking: $8,400",
      "Fencing: $4,560",
      "Equipment and site access: $10,500",
      "Water surface area: 512"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter pool width (ft).",
      "Enter pool length (ft).",
      "Enter region — Applies a regional labor-and-bid multiplier to the whole job..",
      "Enter pool type.",
      "Enter surrounding deck area (sq ft).",
      "Enter deck cost ($/sq ft).",
      "Enter code-required fencing (ft).",
      "Enter fence cost ($/ft).",
      "Enter heater, automation and extra equipment ($).",
      "Enter site access, tree removal, retaining ($).",
      "Enter chemicals, power, water and service ($/yr).",
      "Read your installed cost 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": {
        "poolW": 10,
        "poolL": 19,
        "region": "1",
        "shellRate": "95",
        "deckArea": 350,
        "deckRate": 8,
        "fenceFeet": 70,
        "fenceRate": 22,
        "heater": 4000,
        "access": 2500,
        "annualService": 1700
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "poolW": 16,
        "poolL": 32,
        "region": "1",
        "shellRate": "95",
        "deckArea": 600,
        "deckRate": 14,
        "fenceFeet": 120,
        "fenceRate": 38,
        "heater": 6500,
        "access": 4000,
        "annualService": 2900
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "poolW": 26,
        "poolL": 51,
        "region": "1",
        "shellRate": "95",
        "deckArea": 950,
        "deckRate": 22,
        "fenceFeet": 190,
        "fenceRate": 60,
        "heater": 10500,
        "access": 6500,
        "annualService": 4600
      }
    }
  ],
  "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 is the fence a separate line?",
      "a": "Because it is not optional. Nearly every jurisdiction requires a barrier of a specific height with self-closing, self-latching gates, and inspectors check it before the pool can be filled and used."
    },
    {
      "q": "Does a pool add value to my home?",
      "a": "In hot-climate markets where pools are expected it can add value; in cold-climate markets it often narrows the buyer pool instead. Build a pool because you will swim in it, not as an investment."
    },
    {
      "q": "What drives the annual cost?",
      "a": "Heating dominates if you extend the season, then pump electricity, then chemicals and water replacement. A variable-speed pump and a cover are the two upgrades that reliably lower the annual line."
    },
    {
      "q": "Where does the regional multiplier come from?",
      "a": "It is a job-level index against a US national average of 1.00, built from the spread contractors quote between low-cost rural markets and the highest-cost coastal metros. Materials vary less than labor, but bids move together, so one index tracks real quotes better than splitting them. Swap in your own multiplier by picking the tier closest to two bids you already have."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/cost-to-replace-a-driveway-calculator",
    "https://www.revenuelab.fyi/toolbox/cost-to-remove-a-tree-and-stump-calculator"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Cost to Install an Inground Pool Calculator (https://www.revenuelab.fyi/toolbox/cost-to-install-an-inground-pool-calculator)"
}