Window Replacement Cost Estimator

ANALife Services AuthorityNational 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

More Calculators

Read Next

Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...

References