Exact chlorine, bromine and biguanide (Baquacil) doses for any volume of water — a 250-gallon inflatable spa and a 40,000-gallon pool are the same input. The dose re-solves live as you type. Free, no sign-up, no tracking.
Your water
Any volume — never gated below 1,000 gal.
A parameter you set — not a locked mode.
Always editable — 9.6% Javel is just a number.
Chlorine products are refused on a biguanide (Baquacil) pool — mixing them is a chemical-safety hazard. This is a fact of chemistry, not a missing feature.
Today’s test readings
Bends the chlorine target — FC = f(CYA).
Add now
Enter your sanitizer reading — the dose solves live as you type.
—SHOCK
Water balance (CSI): needs pH, TA & CH readings
Always follow your product’s label and confirm against your own test kit. This calculator supports your dosing decisions; it isn’t medical or professional advice.
This page is today’s dose. The app is your pool’s whole history.
PoolDose for iPhone is the full instrument this calculator is a slice of — the same honest chemistry, plus the record that compounds:
A test log that stays yours — every reading and dose in a plain local file. Export to JSON anytime; moving phones is a file, not a login.
It learns your pool — measures your own sanitizer demand, pH drift and CYA/salt creep from your logs, and bends today’s dose accordingly.
Saved bodies of water — the hot tub, the pool and the Baquacil pool, each with its own products, targets and ledger.
Editable targets & products — your real product strengths, your target bands, salt/SWG cell specs.
One-time unlock, restore-safe — no subscription, no account. Restore Purchases is built in; export is always free.
Free to download — today’s dose for one body of water is free forever in the app too. The compounding ledger is a one-time $19.99 unlock. No subscription.
How the dose is computed
The math is the same engine as the PoolDose iPhone app — honest mass-balance chemistry, not a lookup table:
Sanitizer dose: grams of active ingredient = ppm to raise × gallons × 3.785 ÷ 1000, divided by your product’s real strength %. Rendered in fl oz, oz, grams or mL to match the product.
Chlorine target = f(CYA): the free-chlorine band is low = max(2, CYA × 0.075), high = max(low + 1.5, CYA × 0.12) — a stabilized pool gets an honestly higher target.
Shock detection: a sanitizer reading below 40% of the band low means a top-up won’t clear demand — the calculator sizes a shock-level dose and says so.
pH dose: acid/base demand scales with total alkalinity (buffering), so the same pH reading needs more acid in a high-TA spa.
Side effects are computed, not hidden: trichlor adds 0.6 ppm CYA per ppm of FC; liquid chlorine adds salt. You see it before you pour.
Water balance (CSI): a continuous saturation index over pH, alkalinity, calcium, stabilizer, temperature and TDS — hedged honestly when readings are missing, never a fake “balanced.”
Common questions
How much bromine do I add to my hot tub?
Enter your tub’s volume and today’s total-bromine reading above. The calculator doses to the middle of the 3–5 ppm working band: a 340-gallon tub reading 2.0 ppm needs about 2.6 g of 98% bromine granules to reach 4.0 ppm. Small volumes get gram precision — the difference between a right dose and an over-shocked spa.
Can I dose a Baquacil (biguanide) pool with this?
Yes — select Biguanide as the sanitizer. Most pool calculators refuse this chemistry entirely; this one doses biguanide toward its 30–50 ppm band, and it refuses chlorine products on biguanide water, because that mix is a genuine hazard.
Does it handle a tiny inflatable spa?
Volume is one continuous number. 250 gallons, 340 gallons, 40,000 gallons — same input, no minimum, no “spa mode” upsell.
Why is my chlorine target higher than 3 ppm?
Because stabilizer (CYA) binds chlorine. The working target is a function of CYA, not a fixed number — at CYA 60 the honest band is 4.5–7.2 ppm. Enter your CYA reading and the target moves with it.
What does the app add over this free page?
The record. The iPhone app keeps every test in a local file that’s yours forever, measures your pool’s own dynamics from that history (sanitizer demand per day, pH drift, CYA creep), supports multiple saved bodies of water, and works fully offline. One-time unlock, no subscription, restore-safe.