Window Repair Material Estimator

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

#### 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