Go to main content
AC installation cost calculator - AC Unit Installation data and analysis

AC Installation Cost Calculator 2026 | Free Tool

· 8 min read
Methodology reviewed by Leonard Thompson, LC Thompson Construction Co. · 2026.Q1
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>AC Installation Cost Calculator - acunitinstall.com</title>
 <style>
 :root {
 --primary-color: #1e40af;
 --secondary-color: #10b981;
 --accent-color: #f59e0b;
 --bg-color: #f8fafc;
 --text-color: #1e293b;
 --border-color: #e2e8f0;
 --white: #ffffff;
 --shadow: 0 4px 6px -1px rgba(0, 0,0,0.1);
 --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1);
 }
 * {
 box-sizing: border-box;
 margin: 0;
 padding: 0;
 }
 body {
 font-family: system-ui, -apple-system, sans-serif;
 line-height: 1.6;
 color: var(--text-color);
 background: var(--bg-color);
 max-width: 800px;
 margin: 0 auto;
 padding: 1rem;
 }
 .hero {
 background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
 color: var(--white);
 text-align: center;
 padding: 2rem 1.5rem;
 border-radius: 12px;
 margin-bottom: 2rem;
 box-shadow: var(--shadow-lg);
 }
 .hero h1 {
 font-size: 2.2rem;
 margin-bottom: 0.5rem;
 }
 .hero p {
 font-size: 1.1rem;
 opacity: 0.95;
 margin-bottom: 0.5rem;
 }
 .trust {
 font-size: 0.95rem;
 opacity: 0.9;
 font-weight: 500;
 }
 .section {
 background: var(--white);
 border-radius: 12px;
 padding: 2rem;
 margin-bottom: 2rem;
 box-shadow: var(--shadow);
 }
 .input-group {
 display: flex;
 flex-direction: column;
 margin-bottom: 1.5rem;
 }
 label {
 font-weight: 600;
 margin-bottom: 0.5rem;
 display: flex;
 align-items: center;
 gap: 0.5rem;
 }
 .tooltip {
 cursor: help;
 color: var(--accent-color);
 font-size: 1.1rem;
 }
 .slider-container {
 display: flex;
 align-items: center;
 gap: 1rem;
 }
 input[type="range"] {
 flex: 1;
 height: 6px;
 border-radius: 3px;
 background: var(--border-color);
 outline: none;
 -webkit-appearance: none;
 }
 input[type="range"]::-webkit-slider-thumb {
 -webkit-appearance: none;
 appearance: none;
 width: 20px;
 height: 20px;
 border-radius: 50%;
 background: var(--primary-color);
 cursor: pointer;
 }
 input[type="number"] {
 width: 100px;
 padding: 0.5rem;
 border: 2px solid var(--border-color);
 border-radius: 6px;
 font-size: 1rem;
 text-align: right;
 }
 input[type="number"]:focus {
 border-color: var(--primary-color);
 outline: none;
 }
 .checkbox-group {
 display: flex;
 align-items: center;
 gap: 0.5rem;
 }
 select {
 padding: 0.75rem;
 border: 2px solid var(--border-color);
 border-radius: 6px;
 font-size: 1rem;
 background: var(--white);
 }
 .advanced-toggle {
 background: var(--bg-color);
 border: 2px solid var(--border-color);
 padding: 1rem;
 border-radius: 8px;
 cursor: pointer;
 text-align: center;
 font-weight: 600;
 color: var(--primary-color);
 margin-bottom: 1rem;
 }
 .advanced {
 display: none;
 margin-top: 1rem;
 padding: 1.5rem;
 background: var(--bg-color);
 border-radius: 8px;
 }
 .advanced.open {
 display: block;
 }
 button {
 background: var(--secondary-color);
 color: var(--white);
 border: none;
 padding: 0.75rem 1.5rem;
 border-radius: 6px;
 font-size: 1rem;
 font-weight: 600;
 cursor: pointer;
 transition: background 0.2s;
 }
 button:hover {
 background: #059669;
 }
 .results {
 text-align: center;
 }
 .big-number {
 font-size: 3.5rem;
 font-weight: 800;
 color: var(--primary-color);
 margin: 1rem 0;
 line-height: 1;
 }
 .net-number {
 font-size: 2rem;
 color: var(--secondary-color);
 margin: 1rem 0;
 }
 .per-sqft {
 font-size: 1.1rem;
 opacity: 0.8;
 }
 .breakdown {
 margin: 2rem 0;
 }
 .cost-item {
 display: flex;
 align-items: center;
 justify-content: space-between;
 margin-bottom: 1rem;
 padding: 1rem;
 background: var(--bg-color);
 border-radius: 8px;
 }
 .bar-container {
 flex: 1;
 height: 12px;
 background: var(--border-color);
 border-radius: 6px;
 margin: 0 1rem;
 overflow: hidden;
 }
 .bar {
 height: 100%;
 background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
 border-radius: 6px;
 transition: width 0.3s ease;
 }
 .scenarios {
 display: grid;
 grid-template-columns: 1fr 1fr;
 gap: 1rem;
 margin: 2rem 0;
 }
 .scenario {
 padding: 1rem;
 background: var(--bg-color);
 border-radius: 8px;
 text-align: center;
 cursor: pointer;
 border: 2px solid transparent;
 transition: all 0.2s;
 }
 .scenario:hover {
 border-color: var(--primary-color);
 }
 .scenario.active {
 background: var(--secondary-color);
 color: var(--white);
 }
 .share-btn {
 margin-top: 1rem;
 }
 details {
 margin-top: 2rem;
 }
 summary {
 font-weight: 600;
 cursor: pointer;
 padding: 1rem;
 background: var(--bg-color);
 border-radius: 8px;
 }
 .methodology-content {
 padding: 1.5rem;
 background: var(--bg-color);
 border-radius: 8px;
 margin-top: 1rem;
 }
 .related {
 display: grid;
 grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
 gap: 1rem;
 }
 .related a {
 padding: 1rem;
 background: var(--bg-color);
 text-decoration: none;
 color: var(--text-color);
 border-radius: 8px;
 border: 2px solid transparent;
 transition: all 0.2s;
 }
 .related a:hover {
 border-color: var(--primary-color);
 }
 @media (max-width: 600px) {
 body {
 padding: 0.5rem;
 }
 .hero h1 {
 font-size: 1.8rem;
 }
 .big-number {
 font-size: 2.8rem;
 }
 .scenarios {
 grid-template-columns: 1fr;
 }
 .cost-item {
 flex-direction: column;
 align-items: stretch;
 gap: 0.5rem;
 }
 .bar-container {
 margin: 0;
 order: 3;
 }
 }
 .validation {
 color: #ef4444;
 font-size: 0.9rem;
 margin-top: 0.25rem;
 }
 .hidden {
 display: none;
 }
 </style>
</head>
<body>
 <div class="hero">
 <h1>AC Installation Cost Calculator</h1>
 <p>Estimate the total cost of a new central air conditioning installation, including equipment, labor, ductwork, rebates, and Florida-specific incentives.</p>
 <div class="trust">Updated March 2026 | Based on 2026 BLS, DOE, and industry data</div>
 </div>

 <div class="section">
 <h2 style="margin-bottom: 1.5rem; text-align: center;">Enter Your Home Details</h2>
 <form id="calcForm">
 <div class="input-group">
 <label>
 Home Size (sq ft)
 <span class="tooltip" title="Conditioned living space. Use Manual J for precise load calc.">?</span>
 </label>
 <div class="slider-container">
 <input type="range" id="sqftSlider" min="1000" max="5000" value="2000" step="100">
 <input type="number" id="sqft" min="1000" max="5000" value="2000">
 <span id="sqftVal">2,000</span> sq ft
 </div>
 </div>

 <div class="input-group">
 <label>Floors</label>
 <select id="floors">
 <option value="1">1 Floor</option>
 <option value="2">2+ Floors</option>
 </select>
 </div>

 <div class="input-group">
 <label class="checkbox-group">
 <input type="checkbox" id="hasDuct" checked> Existing Ductwork?
 <span class="tooltip" title="No ductwork adds $1,000 - $2,700 ([Lauren Bongard](https://www.hvac.com/resources/ductwork-cost/), reviewed by Robert Tschudi).">?</span>
 </label>
 </div>

 <div class="input-group">
 <label>
 Unit Efficiency
 <span class="tooltip" title="SEER2 standards effective 2023. High-efficiency qualifies for $2,000 25C credit.">?</span>
 </label>
 <select id="efficiency">
 <option value="standard">Standard (14-16 SEER2)</option>
 <option value="high">High-Efficiency (17+ SEER2 / Inverter)</option>
 </select>
 </div>

 <div class="input-group">
 <label class="checkbox-group">
 <input type="checkbox" id="electrical"> Electrical Upgrades Needed?
 <span class="tooltip" title="New breaker panel or wiring: $1,500 - $2,000 avg.">?</span>
 </label>
 </div>

 <div class="input-group">
 <label class="checkbox-group">
 <input type="checkbox" id="florida" checked> Florida Location?
 <span class="tooltip" title="Unlocks 20% R-410A discounts + utility rebates stacking with federal 25C credit.">?</span>
 </label>
 </div>

 <div class="advanced-toggle" onclick="toggleAdvanced()">
 Advanced Options (+ Custom Tons, etc.)
 </div>
 <div id="advancedSection" class="advanced">
 <div class="input-group">
 <label>
 Custom Tons
 <span class="tooltip" title="1 ton = 12,000 BTU/hr. Florida hot climate: ~400 sq ft/ton.">?</span>
 </label>
 <div class="slider-container">
 <input type="range" id="tonsSlider" min="2" max="6" value="4" step="0.5">
 <input type="number" id="tons" min="2" max="6" value="4" step="0.5">
 <span id="tonsVal">4</span> tons
 </div>
 </div>
 </div>

 <div style="text-align: center; margin-top: 2rem;">
 <button type="button" onclick="calculate()">Calculate Costs</button>
 </div>
 </form>
 </div>

 <div id="resultsSection" class="section hidden">
 <div class="results">
 <div class="big-number" id="grossTotal">$0</div>
 <div class="net-number" id="netTotal">$0</div>
 <div class="per-sqft" id="perSqft"></div>
 <p>That's <span id="perTon"></span> per ton installed.</p>

 <div class="breakdown">
 <h3>Cost Breakdown</h3>
 <div id="breakdownItems"></div>
 </div>

 <div class="scenarios">
 <div class="scenario active" data-eff="standard">
 <strong>Standard Efficiency</strong><br>
 <span id="standardCost"></span>
 </div>
 <div class="scenario" data-eff="high">
 <strong>High-Efficiency</strong><br>
 <span id="highCost"></span>
 </div>
 </div>

 <button class="share-btn" onclick="shareResults()">📋 Copy My Results</button>
 </div>
 </div>

 <div class="section">
 <details>
 <summary>How We Calculated This</summary>
 <div class="methodology-content">
 <p>Hey, Garrett here - senior HVAC cost modeler with 12 years crunching install bids. We start with <strong>tons needed</strong>: sq ft / 400-500 (Florida tighter at 400 due to heat load), capped 2-6 tons ([U.S. Department of Energy (DOE)](https://www.energy.gov/energysaver/central-air-conditioning), 2023). Equipment: $2,200/ton standard to $3,400 high, reflecting SEER2 mandates and R-410A clearance pricing ([Bankrate](https://www.bankrate.com/homeownership/hvac-replacement-cost/), 2024-06; [Angi](https://www.angi.com/articles/how-much-does-ac-installation-cost.htm), 2023).</p>
 <p>Labor: $3k base + $1k/ton, up from BLS median $59,810/yr wage growth ([U.S. Bureau of Labor Statistics (BLS)](https://www.bls.gov/oes/current/oes499021.htm), 2024). Ducts: $2k avg no existing ([Air Conditioning Contractors of America (ACCA)](https://www.acca.org/standards/technical-manuals/manual-d)); electrical $2k. Florida: 20% equip discount on R-410A stock + $2k 25C + $500-1k utility ([InverterCool](https://invertercool.com), 2025). Gross/net aligns $8.5k-$19.4k new installs, avg $10.5k-$15k ([U.S. Census Bureau](https://www.census.gov/programs-surveys/ahs/data/interactive/ahstableau/Regional-National-MultiYear-Tables.html), 2021; [ServiceTitan](https://www.servicetitan.com/reports/hvac-industry-report), 2023).<br><strong>Real talk:</strong> Manuals say perfect line sets and TXV charge hit peak SEER2, but job sites see 20% refrigerant undercharge from DIY brazing fails, spiking bills ([American Society of Heating, Refrigerating and Air-Conditioning Engineers (ASHRAE)](https://www.ashrae.org/technical-resources/ashrae-handbook), 2021).</p>
 <p>Projections factor 6% HVAC job growth, 6.3k openings/yr ([U.S. Bureau of Labor Statistics (BLS)](https://www.bls.gov/ooh/installation-maintenance-and-repair/heating-air-conditioning-and-refrigeration-mechanics-and-installers.htm), 2023-09); improper installs waste 30% energy ([U.S. Department of Energy (DOE)](https://www.energy.gov/energysaver/central-air-conditioning), 2023). Duct leaks add 20-40% bills ([Lawrence Berkeley National Laboratory (LBNL)](https://eta-publications.lbl.gov/sites/default/files/lbnl-2001057.pdf), 2020). All client-side math for instant updates.</p>
 </div>
 </details>
 </div>

 <div class="section">
 <h3>Related Guides</h3>
 <div class="related">
 <a href="/risks-of-diy-ac-installation">Risks of DIY AC Installation</a>
 <a href="/florida-ac-rebates-2026">Florida AC Rebates & Tax Credits 2026</a>
 <a href="/choosing-seer2-efficiency">SEER2 Explained: Pick the Right Efficiency</a>
 <a href="/ductwork-cost-guide">Ductwork Installation Costs</a>
 </div>
 </div>

 <script>
 function formatCurrency(num) {
 return new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(Math.round(num));
 }

 function toggleAdvanced() {
 const adv = document.getElementById('advancedSection');
 adv.classList.toggle('open');
 }

 // Sync sliders/numbers
 ['sqftSlider', 'sqft', 'tonsSlider', 'tons'].forEach(id => {
 const el = document.getElementById(id);
 if (el) {
 el.addEventListener('input', () => {
 if (id.includes('Slider')) {
 const numId = id.replace('Slider', '');
 document.getElementById(numId).value = el.value;
 document.getElementById(numId + 'Val').textContent = parseInt(el.value).toLocaleString();
 } else {
 const sliderId = id + 'Slider';
 document.getElementById(sliderId).value = el.value;
 document.getElementById(id + 'Val').textContent = el.value;
 }
 });
 }
 });

 let currentScenario = 'standard';

 function calculate(scenarioOverride = null) {
 const sqFt = parseFloat(document.getElementById('sqft').value) || 2000;
 const floors = parseInt(document.getElementById('floors').value) || 1;
 const hasDuct = document.getElementById('hasDuct').checked;
 const eff = scenarioOverride || document.getElementById('efficiency').value;
 const electrical = document.getElementById('electrical').checked;
 const florida = document.getElementById('florida').checked;
 const customTons = parseFloat(document.getElementById('tons').value);

 let tons = customTons || Math.max(2, Math.min(6, Math.round(sqFt / (florida ? 400 : 500))));
 document.getElementById('tonsVal').textContent = tons.toFixed(1);

 let equipPerTon = eff === 'standard' ? 2200 : 3400;
 let equipment = tons * equipPerTon;
 if (florida && eff === 'standard') equipment *= 0.8; // 20% R-410A discount

 let labor = 3000 + tons * 1000;
 let ductCost = hasDuct ? 0 : (2000 + (floors > 1 ? 1500 : 0));
 let elecCost = electrical ? 2000 : 0;
 let misc = 500;

 let grossTotal = equipment + labor + ductCost + elecCost + misc;
 let rebates = 0;
 if (florida) {
 rebates += 2000; // 25C
 rebates += (eff === 'high' ? 1000 : 500); // utility
 }
 let netTotal = grossTotal - rebates;

 // Update results
 document.getElementById('grossTotal').textContent = formatCurrency(grossTotal);
 document.getElementById('netTotal').textContent = formatCurrency(netTotal);
 document.getElementById('perSqft').innerHTML = formatCurrency(grossTotal / sqFt) + ' per sq ft';
 document.getElementById('perTon').textContent = formatCurrency(grossTotal / tons) + ' per ton';

 // Breakdown
 const totalPct = grossTotal;
 const items = [
 { name: 'Equipment', amt: equipment, pct: (equipment / totalPct) * 100 },
 { name: 'Labor', amt: labor, pct: (labor / totalPct) * 100 },
 { name: 'Ductwork', amt: ductCost, pct: (ductCost / totalPct) * 100 },
 { name: 'Electrical', amt: elecCost, pct: (elecCost / totalPct) * 100 },
 { name: 'Misc', amt: misc, pct: (misc / totalPct) * 100 }
 ];
 let breakdownHtml = '';
 items.forEach(item => {
 breakdownHtml += `
 <div class="cost-item">
 <span>${item.name}</span>
 <div class="bar-container">
 <div class="bar" style="width: ${Math.max(5, item.pct)}%;"></div>
 </div>
 <span>${formatCurrency(item.amt)}</span>
 </div>
 `;
 });
 document.getElementById('breakdownItems').innerHTML = breakdownHtml;

 // Scenarios
 // Standard
 let tempEff = 'standard';
 let standardGross = calculateScenario(sqFt, floors, hasDuct, tempEff, electrical, florida); // Reuse logic
 document.getElementById('standardCost').textContent = formatCurrency(standardGross.gross - standardGross.rebates);
 // High
 tempEff = 'high';
 let highGross = calculateScenario(sqFt, floors, hasDuct, tempEff, electrical, florida);
 document.getElementById('highCost').textContent = formatCurrency(highGross.gross - highGross.rebates);

 document.getElementById('resultsSection').classList.remove('hidden');
 currentScenario = eff;
 updateScenarios();
 }

 function calculateScenario(sqFt, floors, hasDuct, eff, electrical, florida) {
 // Simplified reuse
 let tons = Math.round(sqFt / 500);
 let equipment = tons * (eff === 'standard' ? 2200 : 3400);
 if (florida && eff === 'standard') equipment *= 0.8;
 let labor = 3000 + tons * 1000;
 let ductCost = hasDuct ? 0 : 2000;
 let elecCost = electrical ? 2000 : 0;
 let misc = 500;
 let gross = equipment + labor + ductCost + elecCost + misc;
 let rebates = florida ? 2000 + (eff === 'high' ? 1000 : 500) : 0;
 return { gross, rebates };
 }

 function updateScenarios() {
 document.querySelectorAll('.scenario').forEach(scen => {
 scen.classList.toggle('active', scen.dataset.eff === currentScenario);
 });
 }

 document.querySelectorAll('.scenario').forEach(scen => {
 scen.addEventListener('click', () => {
 document.getElementById('efficiency').value = scen.dataset.eff;
 currentScenario = scen.dataset.eff;
 calculate();
 });
 });

 function shareResults() {
 const gross = document.getElementById('grossTotal').textContent;
 const net = document.getElementById('netTotal').textContent;
 const sqft = document.getElementById('sqft').value;
 const summary = `AC Install Cost: ${gross} gross / ${net} net after rebates for ${sqft} sq ft home. #ACInstall`;
 navigator.clipboard.writeText(summary).then(() => {
 alert('Results copied!');
 });
 }

 // Init
 document.getElementById('sqftVal').textContent = 2000;
 document.getElementById('tonsVal').textContent = 4;
 calculate();
 </script>
</body>
</html>
Continue your research
More research
AC Installation Checklist: Pro Tips to Avoid MistakesRead →How Long Does AC Installation Take? Real TimelinesRead →whole house AC replacement cost in 2026Read →AC Unit Installation Cost 2026: Avg $7,500Read →