Number of Coats and Drying Time Calculator
ANA›Life Services Authority›National Calculator Authority›Number of Coats and Drying Time 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; } }
Number of Coats and Drying Time Calculator
Estimate how many coats of paint you need and the total drying time based on your surface condition, paint type, and desired opacity.
Surface Condition
New / Bare Surface Lightly Worn (good existing paint) Moderately Worn Heavily Worn / Stained Dark to Light Color Change
Paint Type
Primer Latex / Water-Based Oil-Based Acrylic Enamel Chalk Paint
Desired Finish Quality
Basic (functional coverage) Standard (good coverage) Premium (flawless finish)
Apply Primer First?
Yes No
Ambient Temperature (°F)
Relative Humidity (%)
Calculate
function numCalc() { var surface = document.getElementById('num-surface').value; var paintType = document.getElementById('num-paint-type').value; var finish = document.getElementById('num-finish').value; var primer = document.getElementById('num-primer').value; var tempVal = document.getElementById('num-temp').value; var humidVal = document.getElementById('num-humidity').value; var resultDiv = document.getElementById('num-result');
// --- Input Validation --- if (tempVal === '' || humidVal === '') { resultDiv.innerHTML = 'Please fill in all fields.'; return; } var temp = parseFloat(tempVal); var humid = parseFloat(humidVal);
if (isNaN(temp) || temp 120) { resultDiv.innerHTML = 'Temperature must be between 32°F and 120°F.'; return; } if (isNaN(humid) || humid 100) { resultDiv.innerHTML = 'Humidity must be between 0% and 100%.'; return; }
// ------------------------------------------------------- // STEP 1: Base coats from surface condition // ------------------------------------------------------- // surfaceBaseCoats: minimum paint coats needed (excluding primer) var surfaceBaseCoats = { new: 2, light: 1, moderate: 2, heavy: 3, dark: 3 }[surface];
// ------------------------------------------------------- // STEP 2: Paint-type coverage factor // Higher coverage factor = fewer coats needed // coverageFactor: 1.0 = standard, 1 = great coverage (fewer coats) // ------------------------------------------------------- var coverageFactor = { primer: 1.0, latex: 1.0, oil: 1.1, acrylic: 1.05, enamel: 1.15, chalk: 0.85 // chalk paint typically needs more coats }[paintType];
// ------------------------------------------------------- // STEP 3: Finish quality multiplier // ------------------------------------------------------- var finishMultiplier = { basic: 1.0, standard: 1.0, premium: 1.5 // premium finish adds ~50% more coats (rounded up) }[finish];
// ------------------------------------------------------- // STEP 4: Calculate paint coats // Formula: paintCoats = ceil( surfaceBaseCoats * finishMultiplier / coverageFactor ) // ------------------------------------------------------- var rawCoats = (surfaceBaseCoats * finishMultiplier) / coverageFactor; var paintCoats = Math.ceil(rawCoats);
// Primer coats (always 1 if selected, 2 for heavy/dark surfaces) var primerCoats = 0; if (primer === 'yes') { primerCoats = (surface === 'heavy' || surface === 'dark') ? 2 : 1; }
var totalCoats = paintCoats + primerCoats;
// ------------------------------------------------------- // STEP 5: Base dry-to-touch and recoat times (hours) per paint type // ------------------------------------------------------- var dryTimes = { primer: { touch: 0.5, recoat: 3 }, latex: { touch: 1, recoat: 4 }, oil: { touch: 6, recoat: 24 }, acrylic: { touch: 0.5, recoat: 2 }, enamel: { touch: 2, recoat: 8 }, chalk: { touch: 0.25, recoat: 1 } }[paintType];
var primerDryTimes = { touch: 0.5, recoat: 3 };
// ------------------------------------------------------- // STEP 6: Environmental adjustment factor // Based on temperature and humidity deviations from ideal (70°F, 50% RH) // // tempFactor: drying slows below 50°F or above 90°F // factor = 1 + 0.02 * |temp - 70| / 10 (simplified linear model) // Capped: very cold (90°F) adds significant delay // // humidFactor: high humidity slows drying (especially water-based paints) // factor = 1 + 0.015 * max(0, humid - 50) / 10 // ------------------------------------------------------- var tempDelta = Math.abs(temp - 70); var tempFactor = 1 + (0.02 * tempDelta / 10); if (temp 90) tempFactor += 0.15; // heat can also cause issues
var humidExcess = Math.max(0, humid - 50); var humidFactor = 1 + (0.015 * humidExcess / 10); if (humid > 85) humidFactor += 0.25; // very high humidity adds major delay
var envFactor = tempFactor * humidFactor;
// ------------------------------------------------------- // STEP 7: Adjusted dry times // adjustedRecoat = baseRecoat * envFactor // ------------------------------------------------------- var adjPaintTouch = (dryTimes.touch * envFactor).toFixed(2); var adjPaintRecoat = (dryTimes.recoat * envFactor).toFixed(2); var adjPrimerTouch = (primerDryTimes.touch * envFactor).toFixed(2); var adjPrimerRecoat = (primerDryTimes.recoat * envFactor).toFixed(2);
// ------------------------------------------------------- // STEP 8: Total project drying time // = (primerCoats * primerRecoatTime) + (paintCoats * paintRecoatTime) // Last coat does NOT need recoat wait, but needs full cure (~24h for latex, ~7 days for oil) // The calculator reports recoat-based total (time until you can apply next coat or finish) // ------------------------------------------------------- var totalDryHours = 0; if (primerCoats > 0) { totalDryHours += primerCoats * parseFloat(adjPrimerRecoat); } totalDryHours += paintCoats * parseFloat(adjPaintRecoat);
// Full cure time (separate from recoat time) var fullCureHours = { primer: 24, latex: 168, // ~7 days oil: 168, acrylic: 72, enamel: 168, chalk: 24 }[paintType]; var adjFullCure = (fullCureHours * envFactor).toFixed(0);
- // Format hours nicely
- function fmtHours(h) {
- h = parseFloat(h);
- if (h 1
- ? '⚠️ Conditions extend drying time by ~' + envPct + '% vs. ideal (70°F, 50% RH).'
- '✅ Conditions are near ideal for drying.';
- resultDiv.innerHTML =
- '### Results
- ' +
- '' +
- 'Primer Coats' + primerCoats + (primerCoats === 0 ? ' (skipped)' : '') + '' +
- 'Paint Coats' + paintCoats + '' +
- 'Total Coats' + totalCoats + '' +
- '' +
- (primerCoats > 0
- ? 'Primer Dry-to-Touch' + fmtHours(adjPrimerTouch) + '' +
- 'Primer Recoat Time' + fmtHours(adjPrimerRecoat) + ' per coat'
- '') + 'Paint Dry-to-Touch' + fmtHours(adjPaintTouch) + '' + 'Paint Recoat Time' + fmtHours(adjPaintRecoat) + ' per coat' + 'Total Project Drying Time' + fmtHours(totalDryHours) + '' + 'Full Cure Time (last coat)' + fmtHours(adjFullCure) + '' + '' + envNote + '' + ''; }
#### Formulas Used
Paint Coats: paintCoats = ⌈ (surfaceBaseCoats × finishMultiplier) / coverageFactor ⌉
- surfaceBaseCoats: New=2, Light=1, Moderate=2, Heavy/Dark=3
- coverageFactor: Oil=1.10, Enamel=1.15, Acrylic=1.05, Latex=1.0, Chalk=0.85
- finishMultiplier: Basic=1.0, Standard=1.0, Premium=1.5
Environmental Adjustment Factor: tempFactor = 1 + 0.02 × |T − 70| / 10 (+0.30 if T < 50°F, +0.15 if T > 90°F) humidFactor = 1 + 0.015 × max(0, RH − 50) / 10 (+0.25 if RH > 85%) envFactor = tempFactor × humidFactor
Adjusted Dry Times: adjustedTime = baseDryTime × envFactor
Total Project Drying Time: totalDryTime = (primerCoats × primerRecoatTime) + (paintCoats × paintRecoatTime)
#### Assumptions & References
More Calculators
- Door Swing Clearance Calculator
- Door Rough Opening Size Calculator
- Mediation Session Cost Calculator
- Richter Scale Energy Calculator
- Cannabis Tax & Compliance Cost Calculator
- Hydro Jetting Pressure & Flow Rate Calculator
- Yahtzee Probability Calculator
- EPA 608 Certification Practice Score Estimator
- Airflow CFM Calculator — Blower and Ventilation Requirements
- HVAC System Lifespan & Replacement Cost Calculator
- Airflow CFM Calculator — Fan and Vent Sizing
- Refrigerant Charge Calculator — Superheat and Subcooling
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...