{"id":1392,"date":"2026-05-07T02:47:53","date_gmt":"2026-05-07T02:47:53","guid":{"rendered":"https:\/\/aiper.com\/blogs\/?page_id=1392"},"modified":"2026-10-21T09:17:51","modified_gmt":"2026-10-21T09:17:51","slug":"pool-ph-calculator","status":"publish","type":"page","link":"https:\/\/aiper.com\/blogs\/pool-ph-calculator\/","title":{"rendered":"Pool pH Calculator"},"content":{"rendered":"\n<!-- Pool pH Calculator Wrapper -->\n<div id=\"ppc-app\" class=\"ppc-main-wrapper\">\n    <div class=\"ppc-container\">\n       \n\n        <div class=\"ppc-body\">\n            <!-- 1. Unit Selection -->\n            <div class=\"ppc-section\">\n                <label class=\"ppc-label\">Measurement Units<\/label>\n                <div class=\"ppc-unit-toggle\" id=\"ppc-unit-toggle\">\n                    <button class=\"ppc-unit-btn ppc-active\" data-unit=\"imperial\">Imperial (gal\/oz)<\/button>\n                    <button class=\"ppc-unit-btn\" data-unit=\"metric\">Metric (L\/ml)<\/button>\n                <\/div>\n            <\/div>\n\n            <!-- 2. Pool Type Selection -->\n            <div class=\"ppc-section\">\n                <label class=\"ppc-label\">Pool Type<\/label>\n                <div class=\"ppc-type-toggle\" id=\"ppc-type-toggle\">\n                    <button class=\"ppc-type-btn\" data-type=\"above-ground\">Above Ground<\/button>\n                    <button class=\"ppc-type-btn ppc-active-type\" data-type=\"in-ground\">In-ground<\/button>\n                <\/div>\n            <\/div>\n\n            <!-- 3. Volume Input -->\n            <div class=\"ppc-section\">\n                <div class=\"ppc-label-group\">\n                    <label>Pool Volume<\/label>\n                <\/div>\n                <div class=\"ppc-input-with-unit\">\n                    <input type=\"number\" id=\"ppc-volume\" value=\"15000\" class=\"ppc-input\">\n                    <span id=\"ppc-vol-unit-tag\" class=\"ppc-unit-tag\">gal<\/span>\n                <\/div>\n            <\/div>\n\n            <!-- 4. pH Inputs -->\n            <div class=\"ppc-section\">\n                <div class=\"ppc-label-group\">\n                    <label>Current pH<\/label>\n                    <input type=\"number\" id=\"ppc-cur-num\" value=\"8.0\" step=\"0.1\" min=\"0\" max=\"14\" class=\"ppc-inline-input ppc-blue-border\">\n                <\/div>\n                <input type=\"range\" id=\"ppc-cur-ph\" min=\"6.0\" max=\"8.6\" step=\"0.1\" value=\"8.0\" class=\"ppc-range ppc-range-ph\">\n            <\/div>\n\n            <div class=\"ppc-section\">\n                <div class=\"ppc-label-group\">\n                    <label>Target pH<\/label>\n                    <input type=\"number\" id=\"ppc-tar-num\" value=\"7.4\" step=\"0.1\" min=\"0\" max=\"14\" class=\"ppc-inline-input ppc-green-border\">\n                <\/div>\n                <input type=\"range\" id=\"ppc-tar-ph\" min=\"7.0\" max=\"7.8\" step=\"0.1\" value=\"7.4\" class=\"ppc-range ppc-range-target\">\n            <\/div>\n\n            <!-- 5. Chemical Select -->\n            <div class=\"ppc-section\">\n                <label class=\"ppc-label\">Chemical Type<\/label>\n                <select id=\"ppc-chem-select\" class=\"ppc-select\"><\/select>\n            <\/div>\n\n            <!-- 6. Advanced (TA) -->\n            <div class=\"ppc-section ppc-advanced-wrap\">\n                <label class=\"ppc-toggle\">\n                    <input type=\"checkbox\" id=\"ppc-adv-toggle\">\n                    <span class=\"ppc-slider\"><\/span>\n                    Advanced: Include Total Alkalinity\n                <\/label>\n                <div id=\"ppc-adv-panel\" class=\"ppc-hidden\">\n                    <label class=\"ppc-sub-label\" style=\"display:block; margin-bottom:5px; font-size:0.8rem; font-weight:bold;\">TA (ppm)<\/label>\n                    <input type=\"number\" id=\"ppc-ta\" value=\"100\" class=\"ppc-input ppc-sm\">\n                <\/div>\n            <\/div>\n\n            <!-- 7. Result Display -->\n            <div id=\"ppc-result-card\" class=\"ppc-result-card\">\n                <div class=\"ppc-res-label\">Recommended Dosage<\/div>\n                <div id=\"ppc-res-amount\" class=\"ppc-res-val\">&#8212;<\/div>\n                <div id=\"ppc-res-note\" class=\"ppc-res-note\">Ready to calculate<\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n<style>\n\/* CSS Reset & Scope Control *\/\n.ppc-main-wrapper {\n    --ppc-primary: #0284c7;\n    --ppc-bg: #f8fafc;\n    --ppc-white: #ffffff;\n    --ppc-text: #1e293b;\n    --ppc-border: #e2e8f0;\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n    max-width: 480px;\n    margin: 20px auto;\n    color: var(--ppc-text);\n    line-height: 1.5;\n}\n\n.ppc-container { background: var(--ppc-white); border-radius: 16px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); overflow: hidden; border: 1px solid var(--ppc-border); }\n.ppc-header { background: linear-gradient(135deg, #075985 0%, #0284c7 100%); color: white; padding: 20px; text-align: center; }\n.ppc-header h2 { margin: 0; color: white; font-size: 1.4rem; }\n.ppc-header p { margin: 5px 0 0; font-size: 0.85rem; opacity: 0.9; }\n\n.ppc-body { padding: 20px; }\n.ppc-section { margin-bottom: 22px; }\n\n.ppc-label { display: block; font-weight: 700; font-size: 0.9rem; margin-bottom: 10px; }\n.ppc-label-group { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; font-weight: 700; font-size: 0.9rem; }\n\n\/* Pool Type Toggle *\/\n.ppc-type-toggle { display: flex; gap: 10px; }\n.ppc-type-btn { flex: 1; padding: 10px; border: 2px solid var(--ppc-border); border-radius: 8px; background: white; cursor: pointer; font-weight: 600; font-size: 0.85rem; transition: 0.2s; color: #64748b; }\n.ppc-type-btn.ppc-active-type { border-color: var(--ppc-primary); color: var(--ppc-primary); background: #f0f9ff; }\n\n\/* Input Styling *\/\n.ppc-input-with-unit { position: relative; display: flex; align-items: center; }\n.ppc-input { width: 100%; padding: 12px; border: 2px solid var(--ppc-border); border-radius: 8px; font-size: 1rem; box-sizing: border-box; font-weight: 600; outline: none; }\n.ppc-input:focus { border-color: var(--ppc-primary); }\n.ppc-unit-tag { position: absolute; right: 12px; color: #94a3b8; font-weight: 700; font-size: 0.8rem; }\n\n.ppc-inline-input { width: 65px; padding: 4px 8px; border-radius: 6px; border: 2px solid #cbd5e1; font-weight: 800; text-align: center; font-size: 1rem; outline: none; }\n.ppc-blue-border { color: #0284c7; border-color: #bae6fd; background: #f0f9ff; }\n.ppc-green-border { color: #16a34a; border-color: #bbf7d0; background: #f0fdf4; }\n\n\/* Unit Toggle *\/\n.ppc-unit-toggle { display: flex; background: #f1f5f9; padding: 4px; border-radius: 10px; }\n.ppc-unit-btn { flex: 1; border: none; padding: 8px; border-radius: 8px; cursor: pointer; font-weight: 600; background: transparent; color: #64748b; font-size: 0.85rem; }\n.ppc-unit-btn.ppc-active { background: white; color: var(--ppc-primary); box-shadow: 0 2px 5px rgba(0,0,0,0.05); }\n\n\/* Range Sliders *\/\n.ppc-range { width: 100%; height: 8px; border-radius: 5px; appearance: none; background: #e2e8f0; margin-top: 10px; outline: none; }\n.ppc-range::-webkit-slider-thumb { appearance: none; width: 24px; height: 24px; background: white; border: 3px solid var(--ppc-primary); border-radius: 50%; cursor: pointer; box-shadow: 0 2px 6px rgba(0,0,0,0.15); }\n.ppc-range-ph { background: linear-gradient(to right, #ef4444, #eab308, #22c55e, #3b82f6); }\n\n.ppc-select { width: 100%; padding: 12px; border: 2px solid var(--ppc-border); border-radius: 8px; font-size: 1rem; background: #fff; cursor: pointer; font-weight: 600; outline: none; }\n\n\/* Advanced & Result *\/\n.ppc-toggle { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 0.85rem; font-weight: 600; color: #64748b; }\n.ppc-slider { position: relative; width: 34px; height: 18px; background: #cbd5e1; border-radius: 20px; transition: .3s; }\n.ppc-slider:before { position: absolute; content: \"\"; height: 14px; width: 14px; left: 2px; bottom: 2px; background: white; transition: .3s; border-radius: 50%; }\ninput:checked + .ppc-slider { background: var(--ppc-primary); }\ninput:checked + .ppc-slider:before { transform: translateX(16px); }\n.ppc-toggle input { display: none; }\n\n#ppc-adv-panel { margin-top: 12px; padding: 12px; background: #f8fafc; border-radius: 8px; border: 1px dashed #cbd5e1; }\n.ppc-result-card { background: #f0f9ff; border: 2px solid #bae6fd; border-radius: 12px; padding: 20px; text-align: center; transition: 0.3s; }\n.ppc-res-label { font-size: 0.75rem; font-weight: 800; color: #0369a1; text-transform: uppercase; letter-spacing: 0.05em; }\n.ppc-res-val { font-size: 2rem; font-weight: 900; color: #0c4a6e; margin: 8px 0; }\n.ppc-res-note { font-size: 0.85rem; color: #64748b; font-weight: 500; }\n.ppc-hidden { display: none; }\n<\/style>\n\n<script>\n(function() {\n    const CHEMS = {\n        lower: [\n            { id: 'mur_31', name: 'Muriatic Acid (31.4%)', rate: 1.3 },\n            { id: 'dry_93', name: 'Dry Acid (93%)', rate: 1.5 }\n        ],\n        raise: [\n            { id: 'soda_ash', name: 'Soda Ash', rate: 1.2 },\n            { id: 'borax', name: 'Borax', rate: 2.4 }\n        ]\n    };\n\n    const state = { \n        unit: 'imperial', \n        type: 'in-ground',\n        vol: 15000, \n        cur: 8.0, \n        tar: 7.4, \n        ta: 100 \n    };\n\n    const dom = {\n        vol: document.getElementById('ppc-volume'),\n        curRange: document.getElementById('ppc-cur-ph'),\n        curNum: document.getElementById('ppc-cur-num'),\n        tarRange: document.getElementById('ppc-tar-ph'),\n        tarNum: document.getElementById('ppc-tar-num'),\n        ta: document.getElementById('ppc-ta'),\n        chem: document.getElementById('ppc-chem-select'),\n        resAmount: document.getElementById('ppc-res-amount'),\n        resNote: document.getElementById('ppc-res-note'),\n        advToggle: document.getElementById('ppc-adv-toggle'),\n        advPanel: document.getElementById('ppc-adv-panel'),\n        volUnitTag: document.getElementById('ppc-vol-unit-tag')\n    };\n\n    function calculate() {\n        const diff = state.cur - state.tar;\n        const isLowering = diff > 0;\n        const absDiff = Math.abs(diff);\n\n        \/\/ \u6838\u5fc3\u4fee\u6b63\uff1a\u5f53\u8c03\u8282\u65b9\u5411\u6539\u53d8\u65f6\u5207\u6362\u836f\u5242\u5217\u8868\n        const currentDir = isLowering ? 'lower' : 'raise';\n        if (dom.chem.dataset.dir !== currentDir) {\n            const list = CHEMS[currentDir];\n            dom.chem.innerHTML = list.map(c => `<option value=\"${c.id}\">${c.name}<\/option>`).join('');\n            dom.chem.dataset.dir = currentDir;\n        }\n\n        const selectedChemId = dom.chem.value;\n        const list = CHEMS[currentDir];\n        const selectedChem = list.find(c => c.id === selectedChemId) || list[0];\n        \n        \/\/ 1. \u5982\u679c pH \u5df2\u5e73\u8861\n        if (absDiff < 0.05) {\n            dom.resAmount.innerText = \"Balanced\";\n            dom.resNote.innerText = \"pH is at the target level.\";\n            return;\n        }\n\n        \/\/ 2. \u57fa\u7840\u5242\u91cf\u8ba1\u7b97 (\u57fa\u4e8e 10k \u52a0\u4ed1\/0.1 pH)\n        \/\/ \u7edf\u4e00\u8f6c\u6362\u4e3a\u52a0\u4ed1\u8fdb\u884c\u5185\u90e8\u903b\u8f91\u8ba1\u7b97\n        let volInGal = (state.unit === 'imperial') ? state.vol : state.vol * 0.264172;\n        let amount = (volInGal \/ 10000) * (absDiff \/ 0.1) * selectedChem.rate;\n\n        \/\/ 3. \u78b1\u5ea6\u4fee\u6b63\n        if (dom.advToggle.checked) {\n            const taFactor = state.ta \/ 100;\n            amount *= (0.85 + (taFactor * 0.15));\n        }\n\n        \/\/ 4. \u5355\u4f4d\u8f93\u51fa\n        let finalVal, label;\n        if (state.unit === 'imperial') {\n            finalVal = amount;\n            label = 'oz';\n        } else {\n            \/\/ \u516c\u5236\uff1a\u6db2\u4f53\u9178\u7528 ml\uff0c\u56fa\u4f53\u7c89\u672b\u7528 g\n            const isLiquid = selectedChem.id.includes('mur');\n            finalVal = isLiquid ? amount * 29.5735 : amount * 28.3495;\n            label = isLiquid ? 'ml' : 'g';\n        }\n\n        dom.resAmount.innerText = `${Math.round(finalVal * 10) \/ 10} ${label}`;\n        dom.resNote.innerText = `To ${currentDir === 'lower' ? 'lower' : 'raise'} ${state.type.replace('-', ' ')} from ${state.cur} to ${state.tar}`;\n    }\n\n    \/\/ \u4e8b\u4ef6\u7ed1\u5b9a\uff1a\u5355\u4f4d\u5207\u6362 (\u542b\u6570\u503c\u81ea\u52a8\u8f6c\u6362)\n    document.querySelectorAll('.ppc-unit-btn').forEach(btn => {\n        btn.onclick = () => {\n            if (state.unit === btn.dataset.unit) return;\n            document.querySelector('.ppc-unit-btn.ppc-active').classList.remove('ppc-active');\n            btn.classList.add('ppc-active');\n            \n            \/\/ \u81ea\u52a8\u8f6c\u6362\u4f53\u79ef\u6570\u503c\n            if (btn.dataset.unit === 'metric') {\n                state.vol = Math.round(state.vol * 3.78541);\n            } else {\n                state.vol = Math.round(state.vol \/ 3.78541);\n            }\n            \n            state.unit = btn.dataset.unit;\n            dom.vol.value = state.vol;\n            dom.volUnitTag.innerText = state.unit === 'imperial' ? 'gal' : 'L';\n            calculate();\n        };\n    });\n\n    \/\/ \u4e8b\u4ef6\u7ed1\u5b9a\uff1a\u6c60\u5b50\u7c7b\u578b\n    document.querySelectorAll('.ppc-type-btn').forEach(btn => {\n        btn.onclick = () => {\n            document.querySelector('.ppc-active-type').classList.remove('ppc-active-type');\n            btn.classList.add('ppc-active-type');\n            state.type = btn.dataset.type;\n            calculate();\n        };\n    });\n\n    \/\/ \u8f93\u5165\u540c\u6b65\u4e0e\u8ba1\u7b97\u89e6\u53d1\n    dom.curRange.oninput = (e) => { state.cur = parseFloat(e.target.value); dom.curNum.value = state.cur.toFixed(1); calculate(); };\n    dom.curNum.oninput = (e) => { state.cur = parseFloat(e.target.value) || 0; dom.curRange.value = state.cur; calculate(); };\n    dom.tarRange.oninput = (e) => { state.tar = parseFloat(e.target.value); dom.tarNum.value = state.tar.toFixed(1); calculate(); };\n    dom.tarNum.oninput = (e) => { state.tar = parseFloat(e.target.value) || 0; dom.tarRange.value = state.tar; calculate(); };\n    dom.vol.oninput = (e) => { state.vol = parseFloat(e.target.value) || 0; calculate(); };\n    dom.ta.oninput = (e) => { state.ta = parseFloat(e.target.value) || 100; calculate(); };\n    dom.chem.onchange = calculate;\n    dom.advToggle.onchange = (e) => { \n        dom.advPanel.classList.toggle('ppc-hidden', !e.target.checked); \n        calculate(); \n    };\n\n    \/\/ \u521d\u59cb\u8fd0\u884c\n    calculate();\n})();\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\">How to Calculate &amp; Balance Pool pH<\/h2>\n\n\n\n<div class=\"schema-how-to wp-block-yoast-how-to-block\"><p class=\"schema-how-to-description\">Follow these 5 professional steps to restore your pool&#8217;s water chemistry.<\/p> <ol class=\"schema-how-to-steps\"><li class=\"schema-how-to-step\" id=\"how-to-step-1778122249022\"><strong class=\"schema-how-to-step-name\">Test the Current Water Level<\/strong> <p class=\"schema-how-to-step-text\">Use a high-quality liquid test kit or digital tester to measure the current pH level. For the most accurate calculation, also test your <strong>Total Alkalinity (TA)<\/strong>, as it stabilizes the pH.<\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1778122399740\"><strong class=\"schema-how-to-step-name\">Determine Your Pool Volume<\/strong> <p class=\"schema-how-to-step-text\">Identify how many gallons (or liters) of water your pool holds. If you aren&#8217;t sure, measure the length, width, and average depth to estimate the volume before using the <a href=\"https:\/\/aiper.com\/blogs\/pool-shock-calculator\/\">calculator<\/a>.<\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1778122432009\"><strong class=\"schema-how-to-step-name\">Input Data into the Calculator<\/strong> <p class=\"schema-how-to-step-text\">Enter your <strong>Current pH<\/strong> and your <strong>Target pH<\/strong> (ideally 7.4). Select your chemical type (e.g., Muriatic Acid to lower pH, or Soda Ash to raise it) to see the exact dosage required.<\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1778122448752\"><strong class=\"schema-how-to-step-name\">Distribute Chemicals Safely<\/strong> <p class=\"schema-how-to-step-text\">With the pool pump running, pour the chemicals into the water. For acid, pour it near the return jets in the deep end. For powder-based balancers, pre-dissolve them in a bucket of pool water first.<\/p> <\/li><li class=\"schema-how-to-step\" id=\"how-to-step-1778122462778\"><strong class=\"schema-how-to-step-name\">Re-test and Circulate<\/strong> <p class=\"schema-how-to-step-text\">Allow the water to circulate for at least <strong>4 to 6 hours<\/strong>. Re-test the pH level to ensure it has reached your target. Avoid adding large amounts of chemicals all at once; it&#8217;s better to adjust in increments.<\/p> <\/li><\/ol><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Pool pH Calculator FAQs<\/h2>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1778121743338\"><strong class=\"schema-faq-question\">Why is pH balance so important for my pool?<\/strong> <p class=\"schema-faq-answer\">pH levels measure how acidic or basic your water is. If pH is too low (acidic), it can corrode pool equipment and sting swimmers&#8217; eyes. If it&#8217;s too high (basic), it causes scale buildup and reduces the effectiveness of chlorine, leading to cloudy water.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1778121861255\"><strong class=\"schema-faq-question\"><strong>What is the ideal pH range for a swimming pool?<\/strong><\/strong> <p class=\"schema-faq-answer\">The &#8220;sweet spot&#8221; for pool water is between\u00a0<strong>7.2 and 7.6<\/strong>. Keeping it in this range ensures maximum bather comfort and optimal chlorine performance.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1778121881928\"><strong class=\"schema-faq-question\"><strong>Should I adjust pH or Total Alkalinity (TA) first?<\/strong><\/strong> <p class=\"schema-faq-answer\">Always check and adjust\u00a0<strong>Total Alkalinity first<\/strong>. TA acts as a &#8220;buffer&#8221; for pH. If TA is out of range, your pH levels will &#8220;bounce&#8221; or be very difficult to stabilize.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1778121894044\"><strong class=\"schema-faq-question\"><strong>How often should I test my pool&#8217;s pH?<\/strong><\/strong> <p class=\"schema-faq-answer\">For residential pools, you should test the pH at least\u00a0<strong>2-3 times a week<\/strong>. During periods of heavy rain or high bather load, daily testing is recommended.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1778121907833\"><strong class=\"schema-faq-question\"><strong>How long should I wait to swim after adding chemicals?<\/strong><\/strong> <p class=\"schema-faq-answer\">It is generally safe to swim\u00a0<strong>45 minutes to 1 hour<\/strong>\u00a0after adding pH adjusters, provided the pump is running to circulate the water. However, always re-test the water before jumping in.<\/p> <\/div> <\/div>\n\n\n<!-- aiper-tool-links -->\n<div class=\"aiper-tool-links\">\n  <div class=\"aiper-tl-section\">\n    <div class=\"aiper-tl-heading\">More Tools<\/div>\n    <div class=\"aiper-tl-tags\">\n      <a href=\"https:\/\/aiper.com\/blogs\/pool-fill-time-calculator\/\" class=\"aiper-tl-tag\">Pool Fill Time Calculator<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/pool-turnover-rate-calculator\/\" class=\"aiper-tl-tag\">Pool Turnover Rate Calculator<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/pool-saturation-index-calculator\/\" class=\"aiper-tl-tag\">Pool Saturation Index Calculator<\/a>\n    <\/div>\n  <\/div>\n  <div class=\"aiper-tl-section\">\n    <div class=\"aiper-tl-heading\">Related Articles<\/div>\n    <div class=\"aiper-tl-tags\">\n      <a href=\"https:\/\/aiper.com\/blogs\/pool-alkalinity-vs-ph\/\" class=\"aiper-tl-tag\">Pool Alkalinity vs pH: How They Interact and Which to Fix First<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/how-to-raise-ph-in-pool\/\" class=\"aiper-tl-tag\">How to Raise pH in a Pool Using Soda Ash (Step-by-Step)<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/how-to-balance-ph-in-pool\/\" class=\"aiper-tl-tag\">The Complete Guide To Pool pH: What It Is, Why It Drifts, And How To Stabilize It<\/a>\n<a href=\"https:\/\/aiper.com\/blogs\/how-to-lower-alkalinity-in-pool\/\" class=\"aiper-tl-tag\">How to Lower Alkalinity in a Pool (and When You Actually Need To)<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n\n<style>\n.aiper-tool-links{margin:2.5rem 0 1.5rem;padding:1.5rem 1.75rem;background:linear-gradient(135deg,rgba(148,134,247,.04),rgba(30,202,211,.04));border-radius:12px;border:1px solid rgba(148,134,247,.10)}\n.aiper-tl-section{margin-bottom:1.25rem}\n.aiper-tl-section:last-child{margin-bottom:0}\n.aiper-tl-heading{font-size:.75rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8899aa;margin:0 0 .65rem}\n.aiper-tl-tags{display:flex;flex-wrap:wrap;gap:.5rem}\n.aiper-tl-tag{display:inline-block;padding:.4rem .95rem;font-size:.82rem;font-weight:500;line-height:1.35;color:#9486f7;background:rgba(148,134,247,.055);border:1px solid rgba(30,202,211,.25);border-radius:22px;text-decoration:none;transition:all .18s}\n.aiper-tl-tag:hover{background:#1ecad3;color:#fff;border-color:#1ecad3;box-shadow:0 2px 10px rgba(30,202,211,.22)}\n<\/style>","protected":false},"excerpt":{"rendered":"<p>Measurement Units Imperial (gal\/oz) Metric (L\/ml) Pool Type Above Ground In-ground Pool Volume gal Current pH Target pH Chemical Type Advanced: Include Total Alkalinity TA (ppm) Recommended Dosage &#8212; Ready to calculate How to Calculate &amp; Balance Pool pH Pool pH Calculator FAQs More Tools Pool Fill Time Calculator Pool Turnover Rate Calculator Pool Saturation&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-1392","page","type-page","status-publish","hentry"],"lang":"en","translations":{"en":1392,"es":1727,"de":1720,"fr":1724},"_links":{"self":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/1392","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=1392"}],"version-history":[{"count":14,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/1392\/revisions"}],"predecessor-version":[{"id":11919,"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/pages\/1392\/revisions\/11919"}],"wp:attachment":[{"href":"https:\/\/aiper.com\/blogs\/wp-json\/wp\/v2\/media?parent=1392"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}