{"id":13075,"date":"2026-11-04T08:18:57","date_gmt":"2026-11-04T08:18:57","guid":{"rendered":"https:\/\/aiper.com\/blogs\/pool-resurfacing-cost-calculator\/"},"modified":"2026-11-12T04:42:31","modified_gmt":"2026-11-12T04:42:31","slug":"pool-resurfacing-cost-calculator","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/pool-resurfacing-cost-calculator\/","title":{"rendered":"Pool Resurfacing Cost Calculator"},"content":{"rendered":"<style>\n.aiper-new-tool,.aiper-new-tool *,.aiper-new-tool *::before,.aiper-new-tool *::after{box-sizing:border-box}\n.aiper-new-tool{max-width:960px;margin:20px auto;color:#2d3748;font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Arial,sans-serif;line-height:1.6}\n.aiper-new-tool form{background:#fff;border:1px solid #e2e8f0;border-top:4px solid #1ecad3;border-radius:16px;padding:28px;box-shadow:0 4px 24px rgba(0,0,0,.07);margin:24px 0}\n.aiper-new-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:20px}\n.aiper-new-tool label{display:block;font-size:15px;font-weight:600;color:#2d3748}\n.aiper-new-tool input{display:block;width:100%;min-width:0;padding:13px 14px;border:2px solid #e2e8f0;background:#f8fafc;border-radius:10px;margin-top:7px;font:inherit;color:#2d3748;transition:border-color .2s,box-shadow .2s}\n.aiper-new-tool input:focus{outline:none;border-color:#1ecad3;box-shadow:0 0 0 3px rgba(30,202,211,.15);background:#fff}\n.aiper-new-tool button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:13px 24px;border:2px solid #1ecad3;border-radius:10px;font:inherit;font-size:15px;font-weight:600;cursor:pointer;margin:24px 10px 0 0;transition:background .2s,box-shadow .2s}\n.aiper-new-tool button[type=submit]{background:#1ecad3;color:#fff;box-shadow:0 4px 12px rgba(30,202,211,.25)}\n.aiper-new-tool button[type=submit]:hover{background:#17a8b0;border-color:#17a8b0;box-shadow:0 6px 16px rgba(30,202,211,.3)}\n.aiper-new-tool button[type=reset]{background:#fff;color:#5a6c7d;border-color:#e2e8f0;box-shadow:none}\n.aiper-new-tool button[type=reset]:hover{background:#f8fafc;border-color:#cbd5e1}\n.aiper-new-tool button:focus-visible{outline:3px solid #169fa6;outline-offset:3px}\n.aiper-new-result{background:#e8fafa;border:1px solid #bceff1;border-radius:12px;padding:22px;margin:24px 0;overflow-wrap:anywhere}\n.aiper-new-result p{margin:8px 0}\n.aiper-new-tool a{color:#0b6e77;text-underline-offset:3px}\n@media(max-width:600px){.aiper-new-tool form{padding:18px 16px}.aiper-new-grid{grid-template-columns:minmax(0,1fr);gap:16px}.aiper-new-tool button{padding:12px 20px}}\n<\/style>\n<div class=\"aiper-new-tool\">\n<p>For rectangular pools: measure the interior, then build a low-to-high budget from contractor unit prices.<\/p>\n<form id=\"aiper-new-tool\" data-mode=\"pool-resurfacing-cost-calculator\">\n<div class=\"aiper-new-grid\"><label>Pool length (ft)<input name=\"length\" type=\"number\" min=\"0\" step=\"any\" required value=\"30\"><\/label><label>Pool width (ft)<input name=\"width\" type=\"number\" min=\"0\" step=\"any\" required value=\"15\"><\/label><label>Shallow depth (ft)<input name=\"shallow\" type=\"number\" min=\"0\" step=\"any\" required value=\"3\"><\/label><label>Deep depth (ft)<input name=\"deep\" type=\"number\" min=\"0\" step=\"any\" required value=\"6\"><\/label><label>Additional steps, benches and spa area (sq ft)<input name=\"extra\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Finish installed price, low per sq ft<input name=\"low\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Finish installed price, high per sq ft<input name=\"high\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Preparation and repairs allowance<input name=\"prep\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Waterline tile price per linear ft<input name=\"tile\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Other project allowances<input name=\"other\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Refill water\/sewer cost per 1,000 US gallons<input name=\"rate\" type=\"number\" min=\"0\" step=\"any\" required value=\"0\"><\/label><label>Contingency (%)<input name=\"cont\" type=\"number\" min=\"0\" step=\"any\" required value=\"10\"><\/label><\/div>\n<p><button type=\"submit\">Calculate<\/button><button type=\"reset\">Reset<\/button><\/form>\n<div id=\"aiper-new-result\" class=\"aiper-new-result\" aria-live=\"polite\">Enter your values and calculate.<\/div>\n<h2>How the estimate works<\/h2>\n<p>For a rectangular pool, the interior includes the sloped floor, both long walls and both end walls. Add measured steps, benches or spa area separately. The simplified straight slope does not model a hopper or complex shell. Supply local contractor prices; zero price inputs show geometry only and are not a free-work estimate. Structural work, access, permits and startup must be included in your allowances where applicable.<\/p>\n<p>Do not drain a pool solely because of an estimate. Groundwater, shell and liner conditions can make draining unsafe. Arrange a qualified local assessment before a large drain.<\/p>\n<h2>Related pool guides<\/h2>\n<ul>\n<li><a href=\"https:\/\/aiper.com\/blogs\/pool-resurfacing-vs-replastering\/\">Pool resurfacing vs replastering<\/a><\/li>\n<li><a href=\"https:\/\/aiper.com\/blogs\/how-to-repair-pool-plaster\/\">How to repair pool plaster<\/a><\/li>\n<li><a href=\"https:\/\/aiper.com\/blogs\/pool-surfaces-tiles-finishes\/\">Pool surfaces tiles finishes<\/a><\/li>\n<\/ul>\n<h2>More pool tools<\/h2>\n<p><a href=\"https:\/\/aiper.com\/blogs\/pool-volume-calculator\/\">Pool volume calculator<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/pool-turnover-rate-calculator\/\">Pump runtime and turnover<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/pool-salt-calculator\/\">Pool salt calculator<\/a> \u00b7 <a href=\"https:\/\/aiper.com\/blogs\/tools\/\">All calculators<\/a><\/p>\n<p>Keep your finished pool clean: <a href=\"https:\/\/aiper.com\/blogs\/best-aiper-pool-cleaner\/\">compare Aiper pool cleaners<\/a>.<\/p>\n<h2>Units and assumptions<\/h2>\n<p>Volume uses US gallons; dimensions use feet and inches. All budget inputs use the same currency chosen by you. Replace demonstration values with measurements and quotes. Calculations are planning estimates, not equipment specifications or contractor offers.<\/p>\n<p>Unit reference: <a href=\"https:\/\/www.nist.gov\/pml\/special-publication-811\">NIST SI conversion guidance<\/a>.<\/p>\n<\/div>\n<p><script>function calculatePoolTool(mode,v){\nconst n=k=>{if(v[k]===undefined||v[k]===null||String(v[k]).trim()==='')throw Error('Enter a value for '+k);let x=Number(v[k]);if(!Number.isFinite(x)||x<0)throw Error('Enter a non-negative number for '+k);return x};const pos=k=>{let x=n(k);if(x<=0)throw Error(k+' must be greater than zero');return x};let o={};\nif(mode==='pool-maintenance-cost-calculator'){let m=pos('months'),h=n('hours');if(m>12||h>24)throw Error('Months must be 1\u201312 and hours no more than 24');let pump=n('watts')\/1000*h*n('electric')*365.25\/12,water=n('water')*365.25\/84*n('rate')\/1000;let active=n('chem')+n('service')+n('heat')+pump+water;let reserve=n('reserve');o={'Active-month operating cost':active,'Annual operating cost':active*m+n('season'),'Annual repair reserve':reserve,'Annual budget including reserve':active*m+n('season')+reserve,'Average 12-month budget':(active*m+n('season')+reserve)\/12,'Pump electricity per active month':pump,'Top-up water per active month':water};}\nif(mode==='pool-resurfacing-cost-calculator'){let l=pos('length'),w=pos('width'),a=pos('shallow'),b=pos('deep');if(b<a)throw Error('Deep depth must be at least shallow depth');let area=w*Math.hypot(l,b-a)+2*l*(a+b)\/2+w*(a+b)+n('extra'),per=2*(l+w),gal=l*w*(a+b)\/2*7.48051948;let low=n('low'),high=n('high');if(high<low)throw Error('High unit price must be at least low');let fixed=n('prep')+per*n('tile')+n('other')+gal\/1000*n('rate'),c=1+n('cont')\/100;o={'Interior area (sq ft)':area,'Waterline perimeter (ft)':per,'Estimated refill (US gallons)':gal,'Budget low (custom prices)':(area*low+fixed)*c,'Budget high (custom prices)':(area*high+fixed)*c};}\nif(mode==='pool-dilution-calculator'){let V=pos('volume'),c=n('current'),t=n('target'),f=n('fill'),s=pos('stages');if(!Number.isInteger(s)||s>20)throw Error('Use 1\u201320 whole-number stages');if(t>=c)return {'Replacement needed (US gallons)':0};if(f>t)throw Error('Target is below replacement-water concentration and is unreachable by dilution');let fraction=(c-t)\/(c-f);if(f===t&&s>1)throw Error('Reaching fill-water concentration requires one complete theoretical replacement');let r=f===t?1:1-Math.pow((t-f)\/(c-f),1\/s),each=V*r,total=each*s;o={'One-stage replacement (%)':fraction*100,'Each selected stage (%)':r*100,'Water per selected stage (US gallons)':each,'Total water used (US gallons)':total,'Water cost (custom rate)':total\/1000*n('rate')};if(n('area')>0)o['Level drop per stage (inches)']=each\/7.48051948\/n('area')*12;}\nif(mode==='salt-chlorine-generator-calculator'){let V=pos('volume'),loss=n('loss'),h=pos('hours'),m=pos('max');if(h>24||m>100)throw Error('Hours must be no more than 24 and output no more than 100%');let demand=V*3.785411784*loss\/453592.37,required=demand*24\/h\/(m\/100);o={'Daily chlorine demand (lb)':demand,'Minimum rated cell output (lb per 24h)':required};let rated=n('rated');if(rated>0){let setting=demand*24\/h\/rated*100;o['Existing cell required setting (%)']=setting;o['Existing cell at 100% adds (ppm\/day)']=rated*h\/24*453592.37\/(V*3.785411784);o['Existing cell capacity adequate']=setting<=100?'Yes at stated conditions':'No at stated conditions';}}\nif(mode==='pool-deck-calculator'){let l=pos('length'),w=pos('width'),d=pos('deck'),area=(l+2*d)*(w+2*d)-l*w-n('cut');if(area<=0)throw Error('Excluded area must be smaller than deck ring');let waste=1+n('waste')\/100,low=n('low'),high=n('high');if(high<low)throw Error('High price must be at least low');o={'Net deck area (sq ft)':area,'Material area including waste (sq ft)':area*waste,'Concrete including waste (cubic yards)':area*n('thick')\/12\/27*waste,'Outside perimeter (ft)':2*(l+w+4*d),'Installed budget low':area*low,'Installed budget high':area*high};}if(['pool-deck-calculator','pool-resurfacing-cost-calculator'].includes(mode)&&n('low')===0&&n('high')===0){for(let key of Object.keys(o))if(\/budget\/i.test(key))o[key]='Enter local low and high unit prices to estimate cost';}return o;}\nif(typeof module!=='undefined')module.exports=calculatePoolTool;\nif(typeof document!=='undefined'){let form=document.getElementById('aiper-new-tool');form.addEventListener('submit',e=>{e.preventDefault();let result=document.getElementById('aiper-new-result');try{let v=Object.fromEntries(new FormData(form));let o=calculatePoolTool(form.dataset.mode,v);result.replaceChildren();for(let [k,val]of Object.entries(o)){let d=document.createElement('p');d.textContent=k+': '+(typeof val==='number'?val.toLocaleString(undefined,{maximumFractionDigits:3}):val);result.appendChild(d);}}catch(err){result.textContent=err.message;}});form.addEventListener('reset',()=>{document.getElementById('aiper-new-result').textContent='Enter your values and calculate.';});}<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>For rectangular pools: measure the interior, then build a low-to-high budget from contractor unit prices. Pool length (ft)Pool width (ft)Shallow depth (ft)Deep depth (ft)Additional steps, benches and spa area (sq ft)Finish installed price, low per sq ftFinish installed price, high per sq ftPreparation and repairs allowanceWaterline tile price per linear ftOther project allowancesRefill water\/sewer cost [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"aiper_reading_time":2,"aiper_last_reviewed":"","aiper_reviewer":0,"aiper_related_ids":[],"aiper_layout":"","footnotes":""},"class_list":["post-13075","page","type-page","status-publish","hentry"],"lang":"en","translations":{"en":13075,"es":13215,"fr":13196,"de":13147},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13075","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/comments?post=13075"}],"version-history":[{"count":2,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13075\/revisions"}],"predecessor-version":[{"id":13129,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/13075\/revisions\/13129"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=13075"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}