Pool pH Calculator
The exact acid dose to drop your buffer, the honest pH-trajectory mechanism, and the lever to reach for when acid isn't the right answer.
Hook
You add acid. The pH drops. Two days later it's right back where it started, and you have no idea why.
Here's the part the dosing charts never tell you: you're not really adjusting pH at all. You're adjusting total alkalinity, and pH just follows along behind it.
Promise
This calculator gives you the exact dose of muriatic acid (or dry acid, or soda ash to go the other way) to put your water where you want it — and it shows you the one thing that actually controls pool pH: the carbonate buffer. You'll see why pH bounces, when to reach for the acid jug versus when to just turn your returns up and walk away, and how to lower alkalinity without wrecking everything else. Real chemistry, every number derived on the page.
Here's the deal: pH tells you how acidic the water is right now. Total alkalinity is the shock absorber that resists that change. When people say "my pH keeps creeping up," the real story is almost always about alkalinity and dissolved carbon dioxide. Get those two straight and pH stops being a weekly fight.
What you'll give us
Four numbers and a chip: your pool volume, your latest pH and TA readings, and the strength of the acid you actually own. The safety strip at the bottom is the rule that overrides everything else and ships on every dose.
The calculator
Pick a mode, fill the fields, hit calculate. The F14 banner pins above the acid selector when you're in LOWER mode. TA is required for an acid dose — without it the page refuses the question and tells you why.
Acid safety — unconditional
- 1. NEVER mix acid with chlorine — produces toxic chlorine gas. Wait 4+ hours between any acid and chlorine doses; circulate between them.
- 2. Always add acid TO water, never water TO acid. Wear eye protection and gloves.
- 3. Dose into return-flow area or pre-dilute in a bucket of pool water. Never pour neat acid down the skimmer near other chemicals, or onto plaster.
Don't know your gallons? Pool volume calculator — two minutes, any shape, deep-links straight back here with ?gal= prefilled.
pH is the symptom. Total alkalinity is the disease.
This is the one reframe that turns pH from a weekly fight into a once-or-twice-a-season adjustment. Read it slowly.
High pH · high TA
Acid fixes both. You're really targeting TA; pH comes along for the ride. The calculator above gives you the exact dose — and tells you to stage it.
High pH · low TA
Acid is the wrong tool — it'll crater an already-weak buffer and make pH wildly unstable. Aerate to off-gas CO₂, or rebuild the buffer with baking soda first. The lever matrix below maps the call.
"How much to drop pH 0.2?"
Unanswerable without knowing TA. That question is what every clone calculator answers anyway, and that answer is a guess. We refuse it on purpose — the right answer needs your buffer, not your pH.
Why your pH bounces back — the CO₂ hinge
This is the part the dosing charts never explain. If you've repeat-searched "pool pH keeps rising" — this section is why we built the page.
When you pour in acid, it turns bicarbonate into dissolved CO₂. That CO₂ makes the water temporarily more acidic than it "wants" to be — so your test strip reads a big pH drop an hour later. But dissolved CO₂ doesn't stay. It off-gasses into the air, especially with any surface movement, and as it leaves, pH climbs back up.
Your alkalinity stayed down — that's permanent. Your pH rebounded — that was always going to happen. The shock absorber is weaker; the needle now sits where the new, weaker absorber says it should.
pH rebounded · TA now in range
You're done. Stop chasing it.The rebound is the system settling, not a failure. This is the most common "why won't pH stay down" case.
pH rebounded · TA still high
You under-dosed. Add more acid, staged, targeting the TA number — and let pH do what it does. Keep your eye on the buffer, not the needle.
Want pH up without touching TA?
Aerate. Returns up, fountains on. CO₂ off-gasses, pH climbs, TA stays put. No chemical involved. The only lever that moves pH alone.
Pick the right lever for where you actually are
Read your column from your TA reading, your row from your pH reading. The cell tells you what to reach for. Acid down, air up.
The shorthand
- Acid — drops both pH and TA. Targets TA; pH comes along.
- Aerate — raises pH alone (CO₂ off-gasses). TA untouched. The only single-action lever.
- Soda ash — raises pH AND TA strongly. Use only when both are low.
- Baking soda — raises TA mostly. Use when the buffer is the actual problem.
- Borax — raises pH with a smaller TA bump. Niche but useful.
The do-nothing cell
Center cell of the matrix: pH 7.2–7.8, TA 80–120. Nothing.Don't chase a 7.5 reading toward 7.4. Most weeks the right answer is to put the test kit down. The page exists partly to grant you permission to do that.
Muriatic vs dry acid — the honest trade-off
Eq-for-eq they do the same job. The difference is the ledger they leave behind.
| Muriatic (HCl) | Dry acid (NaHSO₄) | |
|---|---|---|
| Form | Liquid, fumes, harsher to handle | Granular, easier and safer to handle |
| Dose (eq-for-eq) | Identical neutralizing power | Identical |
| Residue | Chloride (low concern in pool water) | Sulfate — accumulates |
| Best for | Most pools; SWG owners avoiding sulfate buildup | Spas, indoor handling, fume-sensitive users |
Dry acid is easier to handle. We'll say that out loud. But every dose leaves sulfate behind that has nowhere to go — and over a salt-pool season, that sulfate ledger adds up. We don't publish a hard ppm threshold for "too much sulfate" here because the agreed numbers are thin; that's a verify-build item for later. Do not let anyone tell you dry acid is "sulfate-free" or safer chemistry — it's safer handling, period.
Where the number comes from — the master derivation
The coefficient the calculator multiplies by isn't a chart — it's derived. Here's the path, step by step. Hover over each step in the worked example and you'll see the same numbers in the calculator's own breakdown.
Step 1 · alkalinity basis
Total alkalinity is reported as ppm CaCO₃. By the APHA Standard Methods titration: 1 meq/L of acid-neutralizing capacity = 50.04 ppm as CaCO₃ (equivalent weight of CaCO₃ = MW 100.09 ÷ 2).
Step 2 · 1:1 stoichiometry
Strong acid neutralizes alkalinity one equivalent at a time:
H⁺ + HCO₃⁻ → H₂CO₃* → CO₂ + H₂O
So to drop TA by ΔTA ppm you must add ΔTA ÷ 50.04 meq of H⁺ per litre.Step 3 · the acid's strength
31.45% muriatic (20° Bé) is the clean anchor: density 1.16 g/mL × 0.3145 ÷ 36.46 g/mol HCl = 10.0 mol/L = 10 meq/mL. This nice round number is why the whole engine is tidy. Other strengths use density × percent ÷ 36.46 and the engine scales by 10 ÷ N.
Step 4 · volume
Litres from gallons (NIST exact): VL = Vgal × 3.78541.
Step 5 · put it together
mL of 31.45% muriatic = (ΔTA ÷ 50.04) × (Vgal × 3.78541) ÷ 10 = 0.0075648 × ΔTA × Vgal.
One coefficient. Two physical constants and a unit conversion. That's the whole engine.
Step 6 · sanity check
10,000 gal, drop TA 10 ppm → 0.0075648 × 10 × 10,000 = 756 mL = 25.6 fl oz. The pool-store rule of thumb is "about 25 fl oz." We agree with the chart — we just showed you where the chart came from.
Worked examples — eight common scenarios
Every number below comes from the same coefficient — the calculator above renders the same answer. The takeaway is what you'd tell a friend who showed up at your pool with a test kit.
Example 1
How much muriatic acid to lower alkalinity (the big-dose teaching case)
15,000 gal · TA 150 → 100 (ΔTA = 50) · 31.45% muriatic.
5,674 mL = 191.8 fl oz ≈ 6.0 quarts (1.50 gal)
0.0075648 × 50 × 15,000 = 5,674 mL of acid.
That's a lot of acid — do not dump it in at once. Add ~1 quart, circulate, wait 30 minutes, retest; repeat. A single 1.5-gallon slug will tank pH dangerously and almost always overshoots.
Example 2
Muriatic acid dosage calculator: mid-range pool
10,000 gal · TA 120 → 90 (ΔTA = 30) · 31.45%.
2,269 mL = 76.7 fl oz ≈ 2.4 quarts (0.60 gal)
0.0075648 × 30 × 10,000 = 2,269 mL.
Two-and-a-half quarts, staged. Retest before the final quart — water rarely behaves exactly to spec, and overshoot is much worse than undershoot.
Example 3
Why pH won't stay down (the bounce-back, fully worked)
15,000 gal · acid dosed "for high pH" · TA 110 → 95 · pH read 7.0 one hour later · climbed to 7.6 over two days.
Nothing wrong — that IS the chemistry working
Acid converted bicarbonate to CO₂ → deep temporary pH dip to ~7.0; CO₂ off-gassed and pH rebounded to ~7.6; TA stayed at the new 95. TA in range, pH in range → done.
The rebound is the system working. Chasing the 7.0 reading with more acid is how people destroy their alkalinity. Step away from the test kit.
Example 4
Dry acid equivalent (sodium bisulfate)
10,000 gal · ΔTA = 30 · dry acid 93% purity.
6.46 lb ≈ 103.3 oz
Eq-for-eq with E2's muriatic. Engine math: 22.7 eq × 120.06 g/mol ÷ 0.93 ÷ 453.6 g/lb = 6.46 lb of dry acid. Same neutralizing power, but it leaves ~that much sulfate behind permanently.
Easier and safer to handle than liquid acid — but if you run a salt cell, that recurring sulfate load is the cost. We won't call dry acid "safe" chemistry. It's safer handling.
Example 5
Pool ph calculator in litres (metric example)
50 m³ = 50,000 L (≈ 13,209 gal) · ΔTA = 40 · 31.45% muriatic.
3,997 mL ≈ 4.0 L of acid
Metric is cleaner: grams H⁺ needed = (40 ÷ 50.04) × 50,000 L = ~40,000 meq; ÷ 10 meq/mL gives ~4,000 mL = 4.0 L.
Stage in roughly litre increments. EU/AU pools use this path; metric users get the same coefficient via the unit toggle.
Example 6
Hot tub / small volume (the overdose-risk case)
400 gal spa · TA 90 → 70 (ΔTA = 20) · 31.45% muriatic.
61 mL ≈ 2.0 fl oz
0.0075648 × 20 × 400 = 61 mL. The calculator flags this case automatically — at spa volumes a careless glug is a massive overdose.
Two ounces. Pre-dilute in a bucket of spa water and add a fraction at a time. Circulate hard and retest before the rest.
Example 7
Lowering alkalinity when pH is already fine (the coupling trap)
20,000 gal · TA 160 (too high) · pH 7.5 (perfect) · want TA down without wrecking pH.
9,078 mL ≈ 2.40 gal of acid, staged hard
Dose acid to the TA target (160 → 100, ΔTA = 60). pH will dip during dosing — that's unavoidable, acid hits both. Then aerate to walk pH back to 7.5 while TA stays at its new 100.
You can't lower TA without temporarily moving pH — but you can put pH back for free with aeration. Acid down, air up. The signature move of this page.
Example 8
Raising pH: soda ash vs aeration (lever selection)
15,000 gal · pH 7.1 (low) · TA 85 (in range).
Aerate — no chemical needed
Don't reach for soda ash here — it would shove TA up out of range along with pH. pH low and TA fine → aerate (returns up, run features); pH climbs to ~7.5 over a day, TA untouched. For reference: if TA were ALSO low, baking soda raises 1.40lb per 10 ppm in 10k gal — but that's not this case.
Match the lever to the problem. Aeration raises pH alone; soda ash raises both; baking soda raises TA mostly; borax raises pH with a smaller TA bump. The matrix above is the cheat sheet.
Reference tables
Three crawlable tables, CC BY 4.0. Cite us, link back. Every cell is regenerated from the same coefficient — no static numbers in this file.
T1 · Muriatic acid to drop TA by 10 ppm (fl oz)
Multiply this number by your ΔTA ÷ 10 for the full dose. Stage anything > 32 fl oz.
| Pool size (gal) | 31.45% (20° Bé) | 28.3% | 14.5% (low-fume) |
|---|---|---|---|
| 5,000 | 12.8 | 14.5 | 30.0 |
| 10,000 | 25.6 | 28.9 | 60.0 |
| 15,000 | 38.4 | 43.4 | 90.1 |
| 20,000 | 51.2 | 57.8 | 120.1 |
| 25,000 | 63.9 | 72.3 | 150.1 |
T2 · Target bands (the defaults, labeled as conventions)
PHTA/APSP convention; CDC MAHC names the public-pool band but the specific number stays off this page until the PDF is verified — same discipline as the chlorine page F13.
| Parameter | Ideal | Acceptable | Notes |
|---|---|---|---|
| pH | 7.4 – 7.6 | 7.2 – 7.8 | Below 7.2 corrosive; above 7.8 scaling + weak chlorine. |
| Total alkalinity (ppm) | 80 – 120 | 60 – 180 | Lower end (60–80) for SWG/plaster; vinyl/fiberglass tolerate higher. |
| CDC MAHC public-pool band | pending — MAHC PDF | — | Public-pool number stays off until the MAHC PDF is verified. |
T3 · Lever selection quick table
Same data the LeverMatrix SVG renders — here as a crawlable table for LLM citation.
| TA too high | TA in range | TA too low | |
|---|---|---|---|
| pH too high | Acid (fixes both) | Acid (target TA; pH settles) | Baking soda first (don't acidify weak buffer) |
| pH in range | Acid + aerate (drop TA, walk pH back) | Nothing — leave it | Baking soda (raise buffer alone) |
| pH too low | Aerate (off-gas CO₂; TA later) | Aerate (returns up) | Soda ash (raises both) |
All three tables released under CC BY 4.0. Attribute PoolSolver and link back.
Sources & methodology
Every number derives from primary chemistry, not pool-store charts. Here's where each piece comes from.
Alkalinity titration and the CaCO₃-equivalent basis come from Standard Methods for the Examination of Water and Wastewater (APHA) — the same source family the salt calculator uses for the ppm definition. The equivalent weight 50.04 ppm = 1 meq/L is the textbook number; it is also the only sane way to compare an acid dose to an alkalinity reading.
Carbonate-system equilibria, the pKa1 ≈ 6.35 at 25 °C, the CO₂ / bicarbonate ratio that controls pH, and the off-gassing dynamics trace to Stumm & Morgan, Aquatic Chemistry — the canonical primary reference for natural-water carbonate equilibria. Every pH-vs-TA assertion on this page (the bounce-back, the aeration mechanism, the dry-acid sulfate trade-off) follows from that text and is consistent with it.
Muriatic acid density and the strength-to-normality table derive from CRC HCl density tables. Density × weight-fraction ÷ 36.46 g/mol gives normality directly. We use 31.45% (20° Bé) as the chemistry anchor because it rounds to exactly 10 mol/L — the rest of the engine scales by 10 ÷ N. If a manufacturer SDS is dropped into docs/research/specs/ we cross-check; otherwise CRC is the citation.
Target bands (pH 7.4–7.6 ideal, TA 80–120 ppm typical) are PHTA / APSP conventions, not laws. The CDC Model Aquatic Health Code names a public-pool range; we don't publish that specific number here until the MAHC PDF is verified in our specs/ folder — same "verified or omitted" discipline as the chlorine page F13.
Dry acid (NaHSO₄) chemistry uses MW 120.06 and typical 93% commercial purity (CRC; standard pool-chemistry references). We do not publish a specific sulfate-accumulation ppm threshold because the agreed numbers vary across sources and manufacturers; that threshold is a verify-build item.
F14 acid safety ships unconditionally — never mix acid with chlorine, always add acid to water, dose into a return flow. The wording does not soften pending citation work. Public-health and chemical-safety sources are unanimous on this; verification work is about which exact source citation to print, not whether the warning belongs on the page.
The honesty paragraph — print it on a sticker
The acid dose to a TA target is precise. The pure stoichiometry of H⁺ neutralizing alkalinity ignores temperature and CO₂ partial pressure — neither matters for the dose. The final pH after dosing is not precise because it depends on dissolved CO₂ and the aeration the pool experiences in the next 24 hours, neither of which we can estimate from a form field. We give you the mechanism and the direction; we refuse to give you a decimal final pH because that would be a lie. Every clone calculator that does is guessing.
The shared engine. The dose math lives in lib/dosing/acidbase.ts — one file, one coefficient (0.0075648), one CaCO₃ equivalent weight (50.04). The alkalinity calculator (now shipped) and the LSI calculator (shipping in a later phase) import the same functions; they cannot disagree with this page by construction. The build pipeline asserts the LOWER-dose identity between this page and the alkalinity page on every push.
Frequently asked questions
How much muriatic acid do I need to lower my pool's alkalinity?
Why does my pool pH keep rising / coming back up after I add acid?
How do I lower alkalinity without lowering pH?
How do I raise pool pH?
Muriatic acid or dry acid — which is better?
How much muriatic acid to lower pH by 0.2?
Is it safe to add acid and chlorine at the same time?
What pH and alkalinity should a pool be?
Related calculators
Next in Pool Chemistry: Pool Alkalinity Calculator.
All Pool Chemistry calculators: browse the hub.