Water Damage and Moisture Intrusion Calculator

ANALife Services AuthorityNational Calculator Authority›Water Damage and Moisture Intrusion Calculator

.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; } }

Water Damage and Moisture Intrusion Calculator

Estimate restoration costs, drying time, and damage severity for water-damaged areas based on affected square footage, water contamination category, and material types.

Affected Area (sq ft)

Standing Water Depth (inches, 0 if none)

Water Category

Category 1 – Clean Water (burst pipe, rain) Category 2 – Grey Water (appliance overflow, toilet overflow w/o feces) Category 3 – Black Water (sewage, floodwater)

Water Damage Class

Class 1 – Slow evaporation (partial room, hard materials) Class 2 – Fast evaporation (entire room, carpet affected) Class 3 – Fastest evaporation (walls, ceilings, insulation) Class 4 – Specialty drying (hardwood, concrete, plaster)

Ambient Relative Humidity (%)

Ambient Temperature (°F)

Primary Flooring Material

Carpet & Pad Hardwood Laminate Tile / Concrete Vinyl / LVP

Wall Material Affected

None Drywall Plaster Concrete / Masonry

Affected Wall Height (inches, 0 if none)

Room Perimeter (linear ft)

Calculate

function watCalc() { // --- Grab inputs --- var area = parseFloat(document.getElementById('wat-area').value); var depth = parseFloat(document.getElementById('wat-depth').value); var category = parseInt(document.getElementById('wat-category').value); var dmgClass = parseInt(document.getElementById('wat-class').value); var humidity = parseFloat(document.getElementById('wat-humidity').value); var temp = parseFloat(document.getElementById('wat-temp').value); var flooring = document.getElementById('wat-flooring').value; var walls = document.getElementById('wat-walls').value; var wallHeight = parseFloat(document.getElementById('wat-wall-height').value); var perimeter = parseFloat(document.getElementById('wat-perimeter').value);

var resultDiv = document.getElementById('wat-result'); resultDiv.style.display = 'block';

// --- Validation --- var errors = []; if (isNaN(area) || area 100) errors.push("Relative humidity must be between 1% and 100%."); if (isNaN(temp) || temp 120) errors.push("Temperature must be between 32°F and 120°F."); if (isNaN(wallHeight)|| wallHeight 0) errors.push("Wall height entered but wall material is 'None'. Please select a wall material.");

if (errors.length > 0) { resultDiv.className = 'calc-result calc-error'; resultDiv.innerHTML = 'Please fix the following:' + errors.map(function(e){ return ''; }).join('') + ''; return; }

// ============================================================ // 1. WATER VOLUME (gallons) // Volume (gal) = Area (ft²) × Depth (in) × 0.0833 (ft/in) × 7.48052 (gal/ft³) // ============================================================ var waterVolume = area * depth * 0.0833 * 7.48052; // gallons

// ============================================================ // 2. DRYING TIME ESTIMATE (days) // Base drying days by class (IICRC S500 guidance): // Class 1: 2–3 days, Class 2: 3–5 days, // Class 3: 5–7 days, Class 4: 7–14 days // Humidity adjustment factor: if RH > 60%, add penalty // humidityFactor = 1 + (RH - 60) / 100 [only when RH > 60] // Temperature adjustment: optimal drying 70–90°F // tempFactor = 1 + |temp - 80| / 80 // ============================================================ var baseDryDays = [0, 2.5, 4, 6, 10.5][dmgClass]; // midpoints var humidityFactor = humidity > 60 ? 1 + (humidity - 60) / 100 : 1.0; var tempFactor = 1 + Math.abs(temp - 80) / 80; var dryingDays = baseDryDays * humidityFactor * tempFactor;

// ============================================================ // 3. EQUIPMENT NEEDED // Dehumidifiers: 1 unit per 500 sq ft (IICRC guideline) // Air movers: 1 unit per 50–100 sq ft (use 1 per 75 sq ft) // Air scrubbers: required for Category 2 & 3 // ============================================================ var dehumidifiers = Math.ceil(area / 500); var airMovers = Math.ceil(area / 75); var airScrubbers = category >= 2 ? Math.ceil(area / 1000) : 0;

// ============================================================ // 4. MOISTURE INTRUSION SEVERITY INDEX (0–100) // Weighted score: // Category weight: Cat1=10, Cat2=30, Cat3=50 // Class weight: Cls1=5, Cls2=15, Cls3=25, Cls4=20 // Humidity weight: (RH / 100) × 15 // Depth weight: min(depth, 12) / 12 × 10 // Total max = 50+25+15+10 = 100 // ============================================================ var catScore = [0, 10, 30, 50][category]; var classScore = [0, 5, 15, 25, 20][dmgClass]; var humScore = (humidity / 100) * 15; var depthScore = (Math.min(depth, 12) / 12) * 10; var severityIndex = catScore + classScore + humScore + depthScore; var severityLabel, severityColor; if (severityIndex 60% AND temp > 60°F AND drying days > 2 // Risk Score = (RH - 60)/40 × 40 + (temp - 60)/60 × 20 + min(dryingDays,14)/14 × 40 // Clamped 0–100 // ============================================================ var moldRH = humidity > 60 ? ((humidity - 60) / 40) * 40 : 0; var moldTemp = temp > 60 ? ((temp - 60) / 60) * 20 : 0; var moldDry = (Math.min(dryingDays, 14) / 14) * 40; var moldRisk = Math.min(100, Math.max(0, moldRH + moldTemp + moldDry)); var moldLabel, moldColor; if (moldRisk 0 && perimeter > 0) ? perimeter * (wallHeight / 12) : 0; var wallCostPerSqft = {none:0, drywall:3.50, plaster:7.00, concrete:5.00}[walls]; var wallRepairCost = wallSqft * wallCostPerSqft;

var extractionCost = Math.max(150, waterVolume * 0.25);

var equipCost = (dehumidifiers * 75 + airMovers * 35 + airScrubbers * 100) * Math.ceil(dryingDays);

// Category 3 requires antimicrobial treatment: $0.50/sqft var antimicrobialCost = category === 3 ? area * 0.50 : 0;

var totalCost = remediationCost + flooringReplace + wallRepairCost + extractionCost + equipCost + antimicrobialCost; var totalCostLow = totalCost * 0.85; var totalCostHigh = totalCost * 1.20;

// ============================================================ // 7. STRUCTURAL DRYING CAPACITY CHECK // Dehumidifier capacity needed (pints/day): // Using AHAM formula: Capacity = Area × 0.0007 × (RH - 50) × tempFactor // where tempFactor = temp / 70 (normalized to 70°F baseline) // Standard residential dehumidifier: 70 pints/day // ============================================================ var dehCapacityNeeded = area * 0.0007 * Math.max(0, humidity - 50) * (temp / 70); var dehUnitsNeeded = Math.ceil(dehCapacityNeeded / 70); dehUnitsNeeded = Math.max(dehUnitsNeeded, dehumidifiers); // take the larger

// ============================================================ // OUTPUT // ============================================================ resultDiv.className = 'calc-result'; resultDiv.innerHTML = '### Water Damage Assessment Results ' +

'' +

'' + 'Severity Index' + '' + severityIndex.toFixed(1) + '/100' + '' + severityLabel + '' + '' +

'' + 'Mold Risk Score' + '' + moldRisk.toFixed(1) + '/100' + '' + moldLabel + '' + '' +

'' +

'' + '📐 Scope of Damage' + 'Affected Floor Area' + area.toLocaleString() + ' sq ft' + 'Affected Wall Area' + wallSqft.toFixed(0) + ' sq ft' + 'Estimated Water Volume' + waterVolume.toFixed(0) + ' gallons' +

'⏱ Drying Timeline' + 'Estimated Drying Time' + dryingDays.toFixed(1) + ' days' + 'Humidity Adjustment Factor×' + humidityFactor.toFixed(2) + '' + 'Temperature Adjustment Factor×' + tempFactor.toFixed(2) + '' +

'🔧 Equipment Required' + 'Dehumidifiers (70 pt/day units)' + dehUnitsNeeded + ' unit(s)' + 'Dehumidification Capacity Needed' + dehCapacityNeeded.toFixed(0) + ' pints/day' + 'Air Movers' + airMovers + ' unit(s)' + (airScrubbers > 0 ? 'Air Scrubbers (HEPA)' + airScrubbers + ' unit(s)' : '') +

'💰 Cost Estimate' + 'Water Extraction$' + extractionCost.toFixed(0) + '' + 'Remediation & Drying$' + remediationCost.toFixed(0) + '' + 'Equipment Rental (' + Math.ceil(dryingDays) + ' days)$' + equipCost.toFixed(0) + '' + 'Flooring Replacement$' + flooringReplace.toFixed(0) + '' + (wallRepairCost > 0 ? 'Wall Repair$' + wallRepairCost.toFixed(0) + '' : '') + (antimicrobialCost > 0 ? 'Antimicrobial Treatment$' + antimicrobialCost.toFixed(0) + '' : '') + 'Estimated Total Cost Range$' + totalCostLow.toFixed(0) + ' – $' + totalCostHigh.toFixed(0) + '' + '' +

(moldRisk >= 60 ? '⚠️ Mold Warning: Conditions indicate high mold growth probability. Professional mold remediation assessment is strongly recommended within 24–48 hours.' : '') + (category === 3 ? '⚠️ Biohazard Alert: Category 3 (Black Water) requires professional remediation with proper PPE. Do not attempt DIY cleanup.' : ''); }

#### Formulas Used

Water Volume (gal): Area (ft²) × Depth (in) × 0.0833 (ft/in) × 7.48052 (gal/ft³)

Drying Time (days): BaseDaysclass × HumidityFactor × TempFactor where HumidityFactor = 1 + max(0, RH − 60) / 100  |  TempFactor = 1 + |T − 80°F| / 80

Severity Index (0–100): CategoryScore + ClassScore + (RH/100 × 15) + (min(depth,12)/12 × 10)

Mold Risk Score (0–100): max(0, (RH−60)/40 × 40) + max(0, (T−60)/60 × 20) + (min(days,14)/14 × 40)

Dehumidifier Capacity (pints/day): Area × 0.0007 × max(0, RH − 50) × (T / 70)  [AHAM Standard]

Total Cost: Extraction + Remediation (Area × BaseCost/ft² × ClassMultiplier) + Equipment Rental + Flooring + Wall Repair + Antimicrobial

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