Window Replacement Cost Estimator
ANA›Life Services Authority›National Calculator Authority›Window Replacement Cost Estimator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Window Replacement Cost Estimator
Estimate the total cost of replacing windows in your home based on window type, size, quantity, frame material, and installation complexity.
Number of Windows
Window Type
Single-Hung Double-Hung Casement Sliding Bay / Bow Picture / Fixed Skylight Egress
Window Size
Small (up to 24" × 36") Medium (24"–48" × 36"–60") Large (48"–72" × 60"–84") Oversized (72"+ × 84"+)
Frame Material
Vinyl Wood Aluminum Fiberglass Composite
Glazing Type
Single Pane Double Pane (Low-E) Triple Pane
Installation Type
Insert / Retrofit (existing frame stays) Full-Frame Replacement
Stories / Access Difficulty
Single-Story (ground level) Two-Story Three-Story or Higher
Region / Labor Market
Low Cost (rural / Midwest) Mid Cost (suburban / Southeast) High Cost (urban / Northeast / West Coast)
Include Old Window Disposal?
Yes No
Calculate
function winCalc() { // ── Inputs ────────────────────────────────────────────────────────────── var numWindows = parseInt(document.getElementById('win-num-windows').value); var winType = document.getElementById('win-type').value; var winSize = document.getElementById('win-size').value; var winFrame = document.getElementById('win-frame').value; var winGlazing = document.getElementById('win-glazing').value; var installType= document.getElementById('win-install').value; var story = parseInt(document.getElementById('win-story').value); var region = document.getElementById('win-region').value; var disposal = document.getElementById('win-disposal').value;
// ── Validation ─────────────────────────────────────────────────────────── var errors = []; if (isNaN(numWindows) || numWindows 100) { errors.push("Number of windows must be between 1 and 100."); } if (errors.length > 0) { document.getElementById('win-result').style.display = 'block'; document.getElementById('win-result').innerHTML = '⚠ ' + errors.join('') + ''; return; }
// ── Base Material Cost per Window by Type ($) ──────────────────────────── // Source: HomeAdvisor / Angi 2024 national averages var typeCost = { single_hung : 300, double_hung : 450, casement : 500, sliding : 420, bay_bow : 1500, picture : 350, skylight : 900, egress : 700 }; var baseMaterial = typeCost[winType];
// ── Size Multiplier ────────────────────────────────────────────────────── var sizeMult = { small: 0.80, medium: 1.00, large: 1.30, oversized: 1.70 }; var sizeM = sizeMult[winSize];
// ── Frame Material Multiplier ──────────────────────────────────────────── var frameMult = { vinyl: 1.00, aluminum: 1.10, wood: 1.45, composite: 1.35, fiberglass: 1.55 }; var frameM = frameMult[winFrame];
// ── Glazing Adder per Window ($) ───────────────────────────────────────── var glazingAdder = { single: 0, double: 80, triple: 180 }; var glazingAdd = glazingAdder[winGlazing];
// ── Material Cost per Window ───────────────────────────────────────────── var materialPerWindow = (baseMaterial * sizeM * frameM) + glazingAdd;
// ── Base Labor Cost per Window ($) ────────────────────────────────────── // Insert retrofit: ~$150–$300; Full-frame: ~$300–$600 var baseLaborInsert = 220; // mid-point insert var baseLaborFullFrame = 450; // mid-point full-frame var baseLabor = (installType === 'full') ? baseLaborFullFrame : baseLaborInsert;
// ── Story / Access Multiplier on Labor ────────────────────────────────── var storyMult = { 1: 1.00, 2: 1.20, 3: 1.45 }; var storyM = storyMult[story];
// ── Regional Labor Multiplier ──────────────────────────────────────────── var regionMult = { low: 0.85, mid: 1.00, high: 1.35 }; var regionM = regionMult[region];
// ── Labor Cost per Window ──────────────────────────────────────────────── var laborPerWindow = baseLabor * storyM * regionM;
// ── Disposal Cost per Window ($) ──────────────────────────────────────── var disposalPerWindow = (disposal === 'yes') ? 25 : 0;
// ── Per-Window Total ───────────────────────────────────────────────────── var costPerWindow = materialPerWindow + laborPerWindow + disposalPerWindow;
// ── Project Totals ─────────────────────────────────────────────────────── var totalMaterial = materialPerWindow * numWindows; var totalLabor = laborPerWindow * numWindows; var totalDisposal = disposalPerWindow * numWindows; var subtotal = costPerWindow * numWindows;
// ── Permit Fee (flat, required for full-frame in most jurisdictions) ────── var permitFee = 0; if (installType === 'full') { permitFee = (numWindows 0) ? (grandTotal / annualSavings).toFixed(1) : null;
// ── Format helpers ─────────────────────────────────────────────────────── function fmt(n) { return '$' + n.toFixed(0).replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
// ── Labels ─────────────────────────────────────────────────────────────── var typeLabel = { single_hung:'Single-Hung', double_hung:'Double-Hung', casement:'Casement', sliding:'Sliding', bay_bow:'Bay/Bow', picture:'Picture/Fixed', skylight:'Skylight', egress:'Egress' }; var frameLabel = { vinyl:'Vinyl', wood:'Wood', aluminum:'Aluminum', fiberglass:'Fiberglass', composite:'Composite' }; var glazeLabel = { single:'Single Pane', double:'Double Pane (Low-E)', triple:'Triple Pane' }; var installLabel= { insert:'Insert/Retrofit', full:'Full-Frame Replacement' }; var regionLabel = { low:'Low-Cost Region', mid:'Mid-Cost Region', high:'High-Cost Region' };
// ── Output ─────────────────────────────────────────────────────────────── var html = '### Estimated Window Replacement Cost '; html += '';
var rows = [ ['Number of Windows', numWindows], ['Window Type', typeLabel[winType]], ['Size Category', winSize.charAt(0).toUpperCase()+winSize.slice(1)], ['Frame Material', frameLabel[winFrame]], ['Glazing', glazeLabel[winGlazing]], ['Installation Type', installLabel[installType]], ['Region', regionLabel[region]], ['─── Cost Breakdown ───', ''], ['Material Cost (per window)', fmt(materialPerWindow)], ['Labor Cost (per window)', fmt(laborPerWindow)], ['Disposal (per window)', fmt(disposalPerWindow)], ['Total Material', fmt(totalMaterial)], ['Total Labor', fmt(totalLabor)], ['Total Disposal', fmt(totalDisposal)], ['Permit Fee', permitFee > 0 ? fmt(permitFee) : 'N/A (insert)'], ['Contingency (10%)', fmt(contingency)], ];
rows.forEach(function(r) { var isSep = r[0].startsWith('─'); html += '' + '' + r[0] + '' + '' + r[1] + '' + ''; });
html += '' + 'Estimated Total Cost' + '' + fmt(grandTotal) + '' + ''; html += '';
html += '' + '📊 Estimated Range: ' + fmt(lowEst) + ' – ' + fmt(highEst) + ' (±15% based on contractor variability)
';
if (payback) { html += '' + '💡 Estimated Energy Savings: ~' + fmt(annualSavings) + '/year | Simple Payback: ~' + payback + ' years
'; }
document.getElementById('win-result').style.display = 'block'; document.getElementById('win-result').innerHTML = html; }
#### Formula
Cost per Window = (Base Material Cost × Size Multiplier × Frame Multiplier + Glazing Adder) + (Base Labor × Story Multiplier × Region Multiplier) + Disposal Cost
Project Subtotal = Cost per Window × Number of Windows
Grand Total = Subtotal + Permit Fee + Contingency (10%)
Estimated Range = Grand Total × 0.85 to Grand Total × 1.15
Energy Payback = Grand Total ÷ Annual Energy Savings
#### Assumptions & References
- Base material costs sourced from HomeAdvisor / Angi 2024 national averages: single-hung $300, double-hung $450, casement $500, bay/bow $1,500, skylight $900, egress $700.
- Size multipliers: Small ×0.80, Medium ×1.00, Large ×1.30, Oversized ×1.70.
- Frame multipliers: Vinyl ×1.00 (baseline), Aluminum ×1.10, Composite ×1.35, Wood ×1.45, Fiberglass ×1.55.
- Glazing adders per window: Single pane +$0, Double pane Low-E +$80, Triple pane +$180 (ENERGY STAR guidelines).
- Labor: Insert/retrofit ~$220/window; Full-frame ~$450/window (mid-market baseline).
- Story multipliers on labor: 1-story ×1.00, 2-story ×1.20, 3-story ×1.45 (scaffolding / lift costs).
- Regional labor multipliers: Low-cost ×0.85, Mid-cost ×1.00, High-cost ×1.35 (RSMeans 2024).
- Disposal: ~$25/window when selected (landfill + hauling fees).
- Permit fee applies to full-frame replacements only: $150 (1–5 windows), $250 (6–15), $400 (16+).
- Contingency of 10% accounts for unforeseen structural repairs, trim work, or caulking.
- Energy savings estimated at ~$35/window/year (double pane) and ~$55/window/year (triple pane) per U.S. DOE / ENERGY STAR data.
More Calculators
- DIY vs Professional Exterminator Cost Comparison Calculator
- Regression to the Mean Calculator: BABIP and Strand Rate Normalization
- Fence Line Length and Grade Slope Calculator
- Fence Installation Cost Estimator
- Fence Repair vs Replace Cost Calculator
- Investment Growth Calculator: Compound Interest Over Time
- Lawn Fertilizer Calculator
- Irrigation Water Usage Estimator
- Sod & Lawn Installation Calculator
- Attorney Fee Estimator
- Case Timeline Estimator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...