Window Repair Material Estimator
ANA›Life Services Authority›National Calculator Authority›Window Repair Material 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 Repair Material Estimator
Estimate the materials needed to repair a window, including replacement glass, glazing compound, weatherstripping, and caulk based on window dimensions and repair type.
Window Width (inches)
Window Height (inches)
Number of Panes
Glass Type
Single Pane (3/16" thick) Double Pane (insulated unit) Tempered Safety Glass Laminated Glass
Repair Type
Glass Replacement Only Full Repair (Glass + Glazing + Weatherstrip + Caulk) Weatherstripping & Caulk Only Glazing Compound Only
Frame Perimeter Override (inches, optional)
Waste / Overage Factor (%)
Calculate Materials
function winCalc() { var resultDiv = document.getElementById("win-result");
// --- Inputs --- var width = parseFloat(document.getElementById("win-width").value); var height = parseFloat(document.getElementById("win-height").value); var panes = parseInt(document.getElementById("win-panes").value); var glassType = document.getElementById("win-glass-type").value; var repairType = document.getElementById("win-repair-type").value; var perimOver = document.getElementById("win-frame-perimeter").value; var wastePct = parseFloat(document.getElementById("win-waste-pct").value);
// --- Validation --- if (isNaN(width) || width 120) { resultDiv.innerHTML = "Please enter a valid window width between 6 and 120 inches.
"; return; } if (isNaN(height) || height 120) { resultDiv.innerHTML = "Please enter a valid window height between 6 and 120 inches.
"; return; } if (isNaN(panes) || panes 12) { resultDiv.innerHTML = "Number of panes must be between 1 and 12.
"; return; } if (isNaN(wastePct) || wastePct 50) { resultDiv.innerHTML = "Waste factor must be between 0% and 50%.
"; return; }
var wasteFactor = 1 + wastePct / 100;
// --- Derived Geometry --- // Each pane shares the total window area divided equally var paneWidth = width / (panes > 1 ? Math.ceil(panes / 2) : 1); // approximate pane width var paneHeight = height / (panes > 1 ? Math.floor(panes / 2) : 1); // approximate pane height // For simplicity: total glass area = full window area (panes subdivide it) var totalGlassAreaSqIn = width * height; // in² var totalGlassAreaSqFt = totalGlassAreaSqIn / 144; // ft² var glassAreaWithWaste = totalGlassAreaSqFt * wasteFactor;
// Perimeter of the window frame (for weatherstripping & caulk) var perimeter; if (perimOver !== "" && !isNaN(parseFloat(perimOver)) && parseFloat(perimOver) > 0) { perimeter = parseFloat(perimOver); } else { perimeter = 2 * (width + height); // inches } var perimeterFt = perimeter / 12; // linear feet
// Glazing bead / compound perimeter: sum of all pane perimeters // Each pane perimeter = 2*(paneW + paneH); total = panes * that var singlePanePerimIn = 2 * (paneWidth + paneHeight); var totalGlazingPerimIn = panes * singlePanePerimIn; var totalGlazingPerimFt = totalGlazingPerimIn / 12;
// --- Material Calculations ---
// 1. GLASS // Glass sold in sq ft; add waste var glassSqFt = 0; var glassLabel = ""; if (repairType === "glass_only" || repairType === "full") { glassSqFt = glassAreaWithWaste; var glassTypeNames = { single: "Single Pane Glass (3/16")", double: "Double-Pane Insulated Unit", tempered: "Tempered Safety Glass", laminated: "Laminated Glass" }; glassLabel = glassTypeNames[glassType]; }
// 2. GLAZING COMPOUND // Rule of thumb: 1 lb of glazing compound covers ~10 linear feet of glazing channel // (standard 3/8" bead depth × 3/8" width) var glazingLbs = 0; if (repairType === "glazing_only" || repairType === "full") { var GLAZING_COVERAGE_FT_PER_LB = 10; // ft per lb glazingLbs = (totalGlazingPerimFt / GLAZING_COVERAGE_FT_PER_LB) * wasteFactor; // Sold in 1-lb containers; round up glazingLbs = Math.ceil(glazingLbs * 10) / 10; }
// 3. WEATHERSTRIPPING // V-strip or foam tape sold by linear foot; cover full frame perimeter var weatherstripFt = 0; if (repairType === "weatherstrip_caulk" || repairType === "full") { weatherstripFt = perimeterFt * wasteFactor; }
// 4. CAULK // 1 tube (10 oz / ~29 mL) covers ~25 linear feet at 1/4" bead // Window perimeter caulk: exterior seal var caulkTubes = 0; if (repairType === "weatherstrip_caulk" || repairType === "full") { var CAULK_COVERAGE_FT_PER_TUBE = 25; caulkTubes = (perimeterFt * wasteFactor) / CAULK_COVERAGE_FT_PER_TUBE; caulkTubes = Math.ceil(caulkTubes * 10) / 10; }
// 5. GLAZING POINTS (for single-pane putty glazing) // ~2 points per linear foot of pane perimeter; sold in boxes of 100 var glazingPointsCount = 0; var glazingPointBoxes = 0; if ((repairType === "glass_only" || repairType === "full") && glassType === "single") { glazingPointsCount = Math.ceil(totalGlazingPerimFt * 2 * wasteFactor); glazingPointBoxes = Math.ceil(glazingPointsCount / 100); }
// --- Build Output --- var rows = "";
if (glassSqFt > 0) { rows += "" + glassLabel + "" + glassSqFt.toFixed(2) + " sq ft"; } if (glazingLbs > 0) { rows += "Glazing Compound" + glazingLbs.toFixed(1) + " lb(s)"; } if (glazingPointsCount > 0) { rows += "Glazing Points" + glazingPointsCount + " points (" + glazingPointBoxes + " box[es] of 100)"; } if (weatherstripFt > 0) { rows += "Weatherstripping" + weatherstripFt.toFixed(1) + " linear ft"; } if (caulkTubes > 0) { rows += "Exterior Caulk (10 oz tubes)" + caulkTubes.toFixed(1) + " tube(s)"; }
if (rows === "") { resultDiv.innerHTML = "No materials calculated. Please check your inputs.
"; return; }
resultDiv.innerHTML = "### Estimated Materials " + "Window: " + width + "" W × " + height + "" H | " + panes + " pane(s) | Frame perimeter: " + perimeterFt.toFixed(1) + " ft | Waste: " + wastePct + "%
" + "" + "MaterialQuantity Needed" + "" + rows + "" + "" + "Quantities include the selected " + wastePct + "% waste/overage factor. Purchase in standard retail units accordingly.
"; }
#### Formulas Used
- Glass Area (sq ft) = (Width × Height) ÷ 144 × (1 + Waste%/100)
- Frame Perimeter (ft) = 2 × (Width + Height) ÷ 12 [or user override]
- Glazing Compound (lbs) = Total Pane Perimeter (ft) ÷ 10 ft/lb × Waste Factor [rounded up to 0.1 lb]
- Glazing Points = Total Pane Perimeter (ft) × 2 points/ft × Waste Factor [single-pane only]
- Weatherstripping (ft) = Frame Perimeter (ft) × Waste Factor
- Caulk (tubes) = Frame Perimeter (ft) × Waste Factor ÷ 25 ft/tube [rounded up to 0.1 tube]
#### Assumptions & References
- Glazing compound coverage of 10 linear ft per lb assumes a standard 3/8" × 3/8" triangular bead (DAP 33 / Sarco Dual Glaze product data).
- Caulk coverage of 25 linear ft per 10 oz tube at a 1/4" bead diameter (standard silicone/latex caulk manufacturer data).
- Glazing points: 2 points per linear foot of pane perimeter, spaced ~6" apart (glazing industry standard practice).
- References: Glazing Manual (GANA), DAP product data sheets, This Old House window repair guides.
More Calculators
- Expected Value by Draft Position Calculator
- Draft Pick Trade Value Calculator
- Draft Class Strength Rating Calculator
- Ohm's Law Calculator
- Transformer KVA Calculator
- Power Factor Correction Calculator
- Surplus Value Calculator: Contract Cost vs. Draft Slot Production
- Lawn Mowing Time Estimator
- Grass Seed Coverage Calculator
- Lawn Weed Control & Herbicide Rate Calculator
- Lawn Aeration Cost Calculator
- Weed Control & Herbicide Dosage Calculator
Read Next
Study Time Planner ANA › Life Services Authority › National Calculator Authority › Study Time Planner .calc-container { max-width: 640px; margin:...