PoolSolver

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.

What you give the calculatorYour poolpool volumegallons · litres · m³your pHfrom your test kityour TAppm CaCO₃Your acidCORRmuriaticstrength chip31.45% (20° Bé)industry default28.3%common big-box14.5% (low-fume)needs ~2.35× volumeCustom %1–40% — interpolatedPick a strength → engine scales the dose by 10 ÷ NF14 · acid safety — unconditional1 · NEVER mix acid with chlorine — produces toxic chlorine gas.2 · Always add acid TO water, never water to acid.3 · Dose into return-flow area or pre-dilute; never onto plaster or down the skimmer.
Four inputs total: gallons (or litres / m³), your latest pH reading, your latest TA reading, and the acid you actually own. The strength chip is the difference between "a quart" and "two and a quarter quarts" for the same effect — the calculator does the 10 ÷ N scaling for you. Safety strip at the bottom is non-negotiable and ships on every result panel.
Pool pH calculator input diagram — pool volume, current pH, current TA, acid type and strength, plus the unconditional acid-safety strip.

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? Get it from the pool volume calculator and come back with ?gal= prefilled.

From your test kit. 7.4–7.6 is the ideal band.

Required to lower pH — the dose targets TA, not pH directly.

80120 is the typical band; SWG / plaster pools often run the low end.

Acid type
Muriatic strength

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.

pH is the needle. Alkalinity is the absorber.pH gauge (qualitative)low pHcorrosiveideal band7.4 – 7.6high pHscalingTotal alkalinity (the absorber)acid eats coils(neutralises HCO₃⁻)The reframeYou don't dose pH.You dose the buffer.Acid eats alkalinity;the needle follows.
The pH gauge moves only because the spring weakened. Every time you pour acid in, the chemistry doesn't move the needle directly — it eats coils of bicarbonate, and the weaker spring lets the needle sit lower. That's why "how much acid to lower pH by 0.2" is unanswerable without knowing how strong your absorber is to start with.
Total alkalinity as a shock absorber holding pH in place; acid eats coils of the spring and the needle drops as the absorber weakens.

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.

The CO₂ hinge(schematic — shape only · no numeric y-values)time →(qualitative)beforedosenext daysettledacid addedTA — stays downpH — reboundsCO₂ trapped(temporary dip)CO₂ off-gasses(surface movement helps)
Schematic — the shape is the point, the numbers aren't. The acid pushes bicarbonate into dissolved CO₂; that CO₂ makes the water temporarily more acidic than the carbonate system wants, then off-gasses over a day or two and pH climbs back. Your TA is permanently lower (good, if that was the goal). The rebound is the system settling, not a failure.
Schematic plot showing how pH dips sharply after an acid dose, then rebounds as dissolved CO2 off-gasses; TA steps down once and stays put.

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 lever to reach forread across: where pH × TA actually sit → what to useTA too highTA in rangeTA too lowpH too highpH in rangepH too lowAcidfixes bothAcidtarget TA; let pH settleBaking soda firstdon't acidify a weak bufferAcid + aeratedrop TA, walk pH backNothingleave itBaking sodaraise buffer aloneAerateoff-gas CO₂; TA laterAeratereturns up; TA staysSoda ashraises both
Read your column from your TA reading, your row from your pH reading, and the cell tells you what to reach for. Acid down, air up. Soda ash raises both. Baking soda raises the buffer alone. The do-nothing cell exists — most weeks, that's the right answer if you'd only stop poking it.
Lever selection matrix for pool pH and total alkalinity — three-by-three grid mapping pH state and TA state to the recommended chemical or physical adjustment.

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.

Same neutralizing power. Different residue.equal-height bars — the asymmetry lives in the ledger belowneutralizing power (eq)equaleq-for-eqmuriatic (HCl)+ chloridelow concern — salt pools run ~3,000 ppm by designeq-for-eqdry acid (NaHSO₄)+ sulfate (accumulates)salt-cell and plaster concern at sustained-high levels
Eq-for-eq the two acids do the same job — same drop in TA, same temporary pH dip. The honest difference is the residue: muriatic leaves chloride a salt-pool already runs by the truckload, while dry acid leaves sulfate that has nowhere to go. If you run a salt cell or care about plaster, that sulfate ledger is the part of the choice nobody talks about.
Muriatic versus dry acid: equal neutralizing power, asymmetric side-effect ledger; muriatic leaves chloride, dry acid leaves accumulating sulfate.
Muriatic acid versus dry acid (sodium bisulfate): handling, dose, residue
Muriatic (HCl)Dry acid (NaHSO₄)
FormLiquid, fumes, harsher to handleGranular, easier and safer to handle
Dose (eq-for-eq)Identical neutralizing powerIdentical
ResidueChloride (low concern in pool water)Sulfate — accumulates
Best forMost pools; SWG owners avoiding sulfate buildupSpas, 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.

  1. 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).

  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.

  3. 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.

  4. Step 4 · volume

    Litres from gallons (NIST exact): VL = Vgal × 3.78541.

  5. 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.

  6. 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.

fl oz of muriatic acid required to drop total alkalinity 10 ppm, by pool size and acid strength
Pool size (gal)31.45% (20° Bé)28.3%14.5% (low-fume)
5,00012.814.530.0
10,00025.628.960.0
15,00038.443.490.1
20,00051.257.8120.1
25,00063.972.3150.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.

Target bands for pH and total alkalinity in pool water
ParameterIdealAcceptableNotes
pH7.47.67.27.8Below 7.2 corrosive; above 7.8 scaling + weak chlorine.
Total alkalinity (ppm)8012060180Lower end (60–80) for SWG/plaster; vinyl/fiberglass tolerate higher.
CDC MAHC public-pool bandpending — MAHC PDFPublic-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.

Lever selection by pH state and TA state
TA too highTA in rangeTA too low
pH too highAcid (fixes both)Acid (target TA; pH settles)Baking soda first (don't acidify weak buffer)
pH in rangeAcid + aerate (drop TA, walk pH back)Nothing — leave itBaking soda (raise buffer alone)
pH too lowAerate (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?
Multiply 0.0075648 by your ΔTA (ppm) and your pool gallons — the result is mL of 31.45% muriatic. For 10 ppm drop in 10,000 gal that's ~756 mL (25.6 fl oz); the T1 table above gives this for every common pool size and acid strength. Always stage anything over a quart and retest between rounds.
Why does my pool pH keep rising / coming back up after I add acid?
Because adding acid converts bicarbonate into dissolved CO₂; that CO₂ makes the water temporarily more acidic than the carbonate system "wants," so your one-hour test reads a deep dip. Then the CO₂ off-gasses over the next day or two and pH climbs back. Your TA stayed lower (good); your pH rebounded (that was always going to happen). If TA is now in range, you're done — stop dosing. The bounce-back IS the system working.
How do I lower alkalinity without lowering pH?
You can't avoid the dip — acid hits both at once. But you can put pH back for free afterwards. Dose acid to your TA target (it will pull pH down temporarily); then aerate (returns up, fountains on, jets at the surface). CO₂ off-gasses and pH climbs back while TA stays at its new lower level. Acid down, air up. The signature move.
How do I raise pool pH?
Three options, picked by where TA is. If TA is fine: aerate — pH climbs without adding anything. If TA is also low: soda ash raises both. If you want pH up but TA flat-ish: borax. Aeration is the only lever that moves pH alone, and it's free.
Muriatic acid or dry acid — which is better?
Equal neutralizing power eq-for-eq. The difference is the residue: muriatic leaves chloride (low concern in pool water — a salt pool already runs ~3,000 ppm), while dry acid leaves sulfate that accumulates. SWG / salt-cell owners and plaster pools have the strongest reason to prefer muriatic. Indoor handling, fume sensitivity, and spas often tip the other way. We will not call dry acid "sulfate-free" or "safer chemistry" — it's safer handling, period.
How much muriatic acid to lower pH by 0.2?
Unanswerable without knowing your total alkalinity, and any calculator that answers it anyway is guessing. The same 0.2 pH drop takes a tablespoon of acid at TA 50 and a small jugful at TA 200. We reframe the question on purpose — give us TA and we'll give you a precise number for that, and pH will follow. That is the only honest way to do this math.
Is it safe to add acid and chlorine at the same time?
No. Never. Concentrated acid + concentrated chlorine produces chlorine gas, which is acutely toxic. Stage them apart — dose one, circulate for at least four hours, retest, dose the other. Never pour them down the skimmer near each other or directly onto plaster. The F14 banner above is unconditional.
What pH and alkalinity should a pool be?
Conventions, not laws: pH 7.4–7.6 ideal (7.2–7.8 acceptable); TA 80–120 ppm typical (lower end 60–80 for SWG and plaster; higher end OK for vinyl and fiberglass). The numbers come from PHTA/APSP industry consensus. The CDC MAHC names a public-pool band; we don't publish that specific number here until the PDF is verified.

Related calculators

Next in Pool Chemistry: Pool Alkalinity Calculator.

All Pool Chemistry calculators: browse the hub.