Roof Damage Repair Cost Estimator
ANA›Life Services Authority›National Calculator Authority›Roof Damage Repair 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; } }
Roof Damage Repair Cost Estimator
Estimate the total cost to repair roof damage based on the affected area, roofing material type, damage severity, and local labor rates.
Damaged Area (square feet)
Roofing Material
Asphalt Shingles Metal Roofing Clay / Concrete Tile Wood Shake / Shingles Flat / TPO / EPDM Slate
Damage Severity
Minor (surface damage, a few missing shingles) Moderate (partial section damage, some decking affected) Severe (large section loss, structural decking damage)
Local Labor Rate ($/hour)
Number of Stories
1 Story 2 Stories 3+ Stories
Roof Pitch
Low Pitch (0/12 – 4/12) Medium Pitch (5/12 – 9/12) Steep Pitch (10/12+)
Replace Roof Decking / Sheathing?
No Yes
Calculate Repair Cost
function rooCalc() { var resultDiv = document.getElementById('roo-result');
// --- Inputs --- var area = parseFloat(document.getElementById('roo-damage-area').value); var material = document.getElementById('roo-material').value; var severity = document.getElementById('roo-severity').value; var laborRate = parseFloat(document.getElementById('roo-labor-rate').value); var stories = parseInt(document.getElementById('roo-stories').value); var pitch = document.getElementById('roo-pitch').value; var decking = document.getElementById('roo-decking').value;
// --- Validation --- if (isNaN(area) || area 10000) { resultDiv.innerHTML = 'Please enter a valid damaged area between 1 and 10,000 sq ft.'; return; } if (isNaN(laborRate) || laborRate 300) { resultDiv.innerHTML = 'Please enter a valid labor rate between $20 and $300 per hour.'; return; }
// --- Material Base Cost ($/sq ft of material only) --- // Sources: HomeAdvisor, Angi, RSMeans 2023 averages var materialCostPerSqFt = { asphalt: 1.50, // $1.00–$2.00 metal: 5.00, // $3.50–$6.50 tile: 4.50, // $3.00–$6.00 wood: 3.50, // $2.50–$4.50 flat: 3.00, // $2.00–$4.00 slate: 15.00 // $10.00–$20.00 };
// --- Labor Hours per 100 sq ft by material --- var laborHoursPer100SqFt = { asphalt: 3.0, metal: 4.5, tile: 5.5, wood: 4.0, flat: 3.5, slate: 7.0 };
// --- Severity Multiplier (affects both material waste & labor) --- var severityMultiplier = { minor: 1.00, moderate: 1.35, severe: 1.75 };
// --- Story Height Surcharge (% added to labor cost) --- var storyLaborSurcharge = { 1: 0.00, 2: 0.15, 3: 0.30 };
// --- Pitch Difficulty Multiplier (labor only) --- var pitchLaborMultiplier = { low: 1.00, medium: 1.15, steep: 1.35 };
// --- Decking Replacement Cost ($/sq ft, material + labor) --- // OSB/plywood sheathing: ~$1.50–$2.50/sq ft installed var deckingCostPerSqFt = 2.00;
// ============================================================ // FORMULA // ============================================================ // 1. Material Cost // = area × materialCostPerSqFt[material] × severityMultiplier[severity] // // 2. Labor Hours // = (area / 100) × laborHoursPer100SqFt[material] × severityMultiplier[severity] // × pitchLaborMultiplier[pitch] // // 3. Labor Cost // = laborHours × laborRate × (1 + storyLaborSurcharge[stories]) // // 4. Decking Cost (if selected) // = area × deckingCostPerSqFt // // 5. Subtotal = Material Cost + Labor Cost + Decking Cost // // 6. Waste & Miscellaneous Factor = 10% of Subtotal // (underlayment, fasteners, flashing, disposal) // // 7. Total Repair Cost = Subtotal × 1.10 // ============================================================
var sevMult = severityMultiplier[severity]; var pitchMult = pitchLaborMultiplier[pitch]; var storySurch = storyLaborSurcharge[stories];
// 1. Material Cost var materialCost = area * materialCostPerSqFt[material] * sevMult;
// 2. Labor Hours var laborHours = (area / 100) * laborHoursPer100SqFt[material] * sevMult * pitchMult;
// 3. Labor Cost var laborCost = laborHours * laborRate * (1 + storySurch);
// 4. Decking Cost var deckingCost = (decking === 'yes') ? area * deckingCostPerSqFt : 0;
// 5. Subtotal var subtotal = materialCost + laborCost + deckingCost;
// 6. Waste & Misc (10%) var wasteMisc = subtotal * 0.10;
// 7. Total var total = subtotal + wasteMisc;
// Low / High range ±20% var totalLow = total * 0.80; var totalHigh = total * 1.20;
// Cost per sq ft var costPerSqFt = total / area;
// --- Format helpers --- function fmt(n) { return '$' + n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); } function fmtH(n) { return n.toFixed(1); }
var materialLabels = { asphalt: 'Asphalt Shingles', metal: 'Metal Roofing', tile: 'Clay / Concrete Tile', wood: 'Wood Shake / Shingles', flat: 'Flat / TPO / EPDM', slate: 'Slate' }; var severityLabels = { minor: 'Minor', moderate: 'Moderate', severe: 'Severe' }; var pitchLabels = { low: 'Low (0/12–4/12)', medium: 'Medium (5/12–9/12)', steep: 'Steep (10/12+)' };
resultDiv.innerHTML = '### Estimated Roof Repair Cost ' + '' + 'Damaged Area' + area.toLocaleString() + ' sq ft' + 'Material' + materialLabels[material] + '' + 'Damage Severity' + severityLabels[severity] + ' (×' + sevMult.toFixed(2) + ')' + 'Roof Pitch' + pitchLabels[pitch] + ' (labor ×' + pitchMult.toFixed(2) + ')' + 'Stories Surcharge' + (storySurch * 100).toFixed(0) + '%' + 'Estimated Labor Hours' + fmtH(laborHours) + ' hrs' + 'Material Cost' + fmt(materialCost) + '' + 'Labor Cost' + fmt(laborCost) + '' + (decking === 'yes' ? 'Decking Replacement' + fmt(deckingCost) + '' : '') + 'Waste & Misc (10%)' + fmt(wasteMisc) + '' + 'Estimated Total' + fmt(total) + '' + 'Cost per Sq Ft' + fmt(costPerSqFt) + ' / sq ft' + 'Typical Range' + fmt(totalLow) + ' – ' + fmt(totalHigh) + '' + '' + '* Estimates are for budgeting purposes. Obtain multiple contractor quotes for accurate pricing.
'; }
#### Formula
Material Cost = Damaged Area (sq ft) × Material Unit Cost ($/sq ft) × Severity Multiplier
Labor Hours = (Damaged Area ÷ 100) × Labor Hours per 100 sq ft × Severity Multiplier × Pitch Multiplier
Labor Cost = Labor Hours × Hourly Rate × (1 + Story Surcharge)
Decking Cost = Damaged Area × $2.00/sq ft (if selected)
Subtotal = Material Cost + Labor Cost + Decking Cost
Total Repair Cost = Subtotal × 1.10 (+10% for waste, underlayment, fasteners, flashing & disposal)
Typical Range = Total ± 20%
#### Assumptions & References
- Material unit costs are mid-range 2023–2024 averages: Asphalt $1.50/sq ft, Metal $5.00/sq ft, Tile $4.50/sq ft, Wood Shake $3.50/sq ft, Flat/TPO $3.00/sq ft, Slate $15.00/sq ft (HomeAdvisor, Angi, RSMeans).
- Labor hours per 100 sq ft: Asphalt 3.0 hrs, Metal 4.5 hrs, Tile 5.5 hrs, Wood 4.0 hrs, Flat 3.5 hrs, Slate 7.0 hrs.
- Severity multiplier: Minor ×1.00, Moderate ×1.35, Severe ×1.75 — accounts for additional tear-off, material waste, and complexity.
- Story surcharge: 2-story +15%, 3+ story +30% on labor — reflects additional safety equipment and time.
- Pitch multiplier: Low ×1.00, Medium ×1.15, Steep ×1.35 — steeper pitches require more safety measures and slow production.
- Decking replacement (OSB/plywood sheathing) estimated at $2.00/sq ft installed.
- 10% waste & miscellaneous covers underlayment, ice & water shield, roofing nails, flashing, drip edge, and debris disposal.
More Calculators
- Performance Rating Distribution Calculator
- Goal Attainment Score Calculator
- CVE CVSS Score Interpreter & Risk Calculator
- Pathfinder Encounter CR Calculator
- Pathfinder Character XP & Leveling Calculator
- Pesticide Dilution Calculator
- Pathfinder Skill Check Probability Calculator
- Wood Quantity Calculator
- Building Permit Cost Estimator
- OSHA Penalty Calculator
- Contractor License Fee Calculator
- Workplace Incident Rate Calculator (TRIR & DART)