Number of Coats and Drying Time Calculator

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

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

Read Next

Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...

References