Hardwood Floor Refinishing Cost Calculator
ANA›Life Services Authority›National Calculator Authority›Hardwood Floor Refinishing Cost 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; } }
Hardwood Floor Refinishing Cost Calculator
Estimate the total cost to sand, stain, and refinish hardwood floors based on square footage, floor condition, finish type, number of coats, and your region.
Floor Area (sq ft)
Floor Condition
Good – light scratches, minor wear Fair – moderate scratches, some stains Poor – deep gouges, heavy staining, cupping
Finish Type
Oil-Based Polyurethane Water-Based Polyurethane Hardwax Oil Acid-Cure / Swedish Finish
Number of Finish Coats
2 coats 3 coats (recommended) 4 coats
Add Stain?
No – natural / clear Yes – custom stain color
Region / Labor Market
Low cost (rural / Midwest / South) Mid cost (suburban / average US) High cost (NYC, SF, Boston, Seattle)
Furniture Moving?
No – room already empty Yes – contractor moves furniture
Calculate Cost
function harCalc() { // ── Collect inputs ────────────────────────────────────────────── var sqft = parseFloat(document.getElementById('har-sqft').value); var condition = document.getElementById('har-condition').value; var finish = document.getElementById('har-finish').value; var coats = parseInt(document.getElementById('har-coats').value); var stain = document.getElementById('har-stain').value; var region = document.getElementById('har-region').value; var furniture = document.getElementById('har-furniture').value;
// ── Validation ────────────────────────────────────────────────── var errors = []; if (isNaN(sqft) || sqft === '') { errors.push('Please enter the floor area.'); } else if (sqft 10000) { errors.push('Floor area cannot exceed 10,000 sq ft.'); }
if (errors.length > 0) { document.getElementById('har-result').style.display = 'block'; document.getElementById('har-result').innerHTML = '' + errors.join('') + '
'; return; }
// ── Base labor rate ($/sq ft) by region ──────────────────────── // Sources: HomeAdvisor, Angi, NWFA 2023 cost surveys var laborBase = { low: 2.50, mid: 3.50, high: 5.00 }[region];
// ── Condition surcharge ($/sq ft) ────────────────────────────── // Poor condition requires extra sanding passes and possible board repair var conditionAdder = { good: 0.00, fair: 0.40, poor: 1.10 }[condition];
// ── Finish material cost ($/sq ft per coat) ──────────────────── // Oil-based poly ~$0.15/sqft/coat; water-based ~$0.20; hardwax ~$0.30; acid-cure ~$0.35 var finishCostPerCoat = { polyurethane: 0.15, water_poly: 0.20, hardwax: 0.30, acid_cure: 0.35 }[finish];
// ── Finish application labor adder ($/sq ft per coat) ────────── // Each additional coat adds buffing + application labor var finishLaborPerCoat = 0.25;
// ── Stain cost ($/sq ft) ─────────────────────────────────────── var stainCost = (stain === 'yes') ? 0.75 : 0.00; // material + extra labor
// ── Furniture moving flat fee ────────────────────────────────── var furnitureFee = (furniture === 'yes') ? Math.min(150 + sqft * 0.10, 600) : 0;
// ── Minimum job fee ──────────────────────────────────────────── var minimumFee = { low: 300, mid: 400, high: 600 }[region];
// ── Core formula ─────────────────────────────────────────────── // Total = sqft × (laborBase + conditionAdder + stainCost // + coats × (finishCostPerCoat + finishLaborPerCoat)) // + furnitureFee // Then apply minimum job fee.
var perSqFt = laborBase + conditionAdder + stainCost + coats * (finishCostPerCoat + finishLaborPerCoat);
var rawTotal = sqft * perSqFt + furnitureFee; var total = Math.max(rawTotal, minimumFee);
// ── Low / High range (±15%) ──────────────────────────────────── var low = total * 0.85; var high = total * 1.15;
// ── Cost per sq ft (effective) ───────────────────────────────── var effectivePerSqFt = total / sqft;
// ── Duration estimate ────────────────────────────────────────── // Typical crew (2 people) does ~400 sq ft/day; drying adds 1 day per coat var workDays = Math.ceil(sqft / 400); var dryDays = coats; // 1 day dry time per coat var totalDays = workDays + dryDays;
// ── Helpers ──────────────────────────────────────────────────── function fmt(n) { return '$' + n.toFixed(2).replace(/\B(?=(\d{3})+(?!\d))/g, ','); } function fmtR(n){ return '$' + Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ','); }
var conditionLabel = { good:'Good', fair:'Fair', poor:'Poor' }[condition]; var finishLabel = { polyurethane:'Oil-Based Polyurethane', water_poly:'Water-Based Polyurethane', hardwax:'Hardwax Oil', acid_cure:'Acid-Cure / Swedish Finish' }[finish]; var regionLabel = { low:'Low-cost region', mid:'Mid-cost region', high:'High-cost region' }[region];
// ── Output ───────────────────────────────────────────────────── var html = '### Estimated Refinishing Cost ' + '' + 'Floor Area' + sqft.toLocaleString() + ' sq ft' + 'Condition' + conditionLabel + '' + 'Finish Type' + finishLabel + '' + 'Finish Coats' + coats + '' + 'Stain' + (stain==='yes'?'Yes':'No') + '' + 'Region' + regionLabel + '' + 'Base Labor Rate' + fmt(laborBase) + ' / sq ft' + 'Condition Surcharge' + fmt(conditionAdder) + ' / sq ft' + 'Finish Cost (' + coats + ' coats)' + fmt(coats * finishCostPerCoat) + ' / sq ft' + 'Finish Application Labor' + fmt(coats * finishLaborPerCoat) + ' / sq ft' + (stain==='yes' ? 'Stain (material + labor)' + fmt(stainCost) + ' / sq ft' : '') + 'Effective Rate' + fmt(effectivePerSqFt) + ' / sq ft' + (furniture==='yes' ? 'Furniture Moving Fee' + fmtR(furnitureFee) + '' : '') + (rawTotal Minimum Job Fee Applied' + fmtR(minimumFee) + '' : '') + 'Estimated Total' + fmtR(total) + '' + 'Typical Range' + fmtR(low) + ' – ' + fmtR(high) + '' + 'Estimated Project Duration~' + totalDays + ' days (incl. dry time)' + '';
document.getElementById('har-result').style.display = 'block'; document.getElementById('har-result').innerHTML = html; }
#### Formula
Per-sq-ft rate = Labor Base Rate + Condition Surcharge + Stain Cost + Coats × (Finish Material Cost/coat + Finish Application Labor/coat)
Raw Total = Floor Area (sq ft) × Per-sq-ft rate + Furniture Moving Fee
Final Total = max(Raw Total, Minimum Job Fee)
Typical Range = Final Total × 0.85 to Final Total × 1.15
Project Duration = ⌈Area ÷ 400⌉ work days + 1 dry day per coat
#### Assumptions & References
More Calculators
- Fence Panel Quantity Calculator
- Disaster Recovery Cost Estimator
- Emergency Supply Duration Calculator
- Fence Cost Estimator
- Estate Tax Liability Estimator
- Beneficiary Inheritance Tax Estimator
- Flooring Square Footage Calculator
- Subcontractor vs Employee Cost Comparison Calculator
- Circuit Breaker Size Calculator
- Transformer KVA Sizing Calculator
- Labor Cost Estimator for Electrical Jobs
- Empire State Prevailing Wage Calculator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...