Where every number in your plan comes from, and why. Each answer starts in plain words; open “The details” for the formulas. The example tables are worked out by the same code as the calculator, so they always match it.
When can I swim?
When free chlorine (FC) is between the minimum for your stabilizer (CYA) level and the SLAM level, and pH is between 7.0 and 8.2. The chlorine levels are the widely used ones for your CYA; the pH limits are SwimYet’s. Between 7.0–7.2 and 7.8–8.2 it’s still safe, but may sting eyes, so you get a warning rather than a “no”.
If the plan can fix it, you get “Not yet” with a time: 30 minutes of mixing for each pH or chlorine dose before the water is swimmable. If FC is above SLAM, you get “Wait”, timed from how fast your pool has been losing chlorine (from your log), when that’s known and under a week.
The details
FC below the minimum is “Not yet” even though it isn’t an immediate health risk: it means the water isn’t protected against algae and germs.
Swimming during a SLAM is fine up to the SLAM level itself.
Above 10 ppm FC, chlorine bleaches the dye in pH tests, so the pH reading isn’t trusted.
Without FC, pH and CYA readings the answer is “unknown”, never “yes”.
Readings are compared at 0.1, the way test kits report them.
No time is given when a drain comes first: that takes hours to days.
The 30 minutes is SwimYet’s rule of thumb.
Why add three quarters, then retest?
Because the dose is only as good as what goes into it, and pH is easy to overshoot. Most owners estimate their pool’s volume, and being off by 10–20% is common. A pH test reads in steps of 0.1–0.2, so on a 0.4 move a misread of one step is a quarter of the dose. And going too far is worse than not far enough: too much acid means adding soda ash to come back up, which also raises alkalinity.
So every pH step, in every pool, says to add about three quarters, circulate for 30 minutes, retest, and only then add the rest.
Why is my pH dose different from other calculators?
Mostly because of stabilizer (CYA). Near pool pH, stabilizer acts as a buffer: part of any acid you add reacts with it instead of lowering pH. The more stabilizer, the more acid it takes to move pH by the same amount, and the same goes for soda ash in the other direction.
SwimYet includes that effect, and two smaller ones: calcium holds some carbonate back, so harder water takes a little more acid, and salt takes a little less. Other calculators often use a formula with no stabilizer in it, which gives about the dose for a pool without stabilizer, whatever its CYA. So SwimYet agrees with them at CYA 0 and asks for more as CYA rises: around 15% more at CYA 30, and 25–40% more at CYA 70, where salt water pools usually run.
These doses aren’t a guess: they’re checked against PHREEQC, the US Geological Survey’s water-chemistry program, used by scientists and engineers worldwide, and agree with it within 2%.
CYA
31.45% acid, fl oz
14.5% acid, fl oz
Compared with CYA 0
0
8.5
19.8
same
30
9.8
23.0
+16%
50
10.7
25.1
+27%
70
11.7
27.3
+38%
90
12.6
29.4
+49%
Muriatic acid to lower pH from 8.0 to 7.6 in 10,000 gal at TA 80 and CH 400. A calculator without CYA in its formula gives about the CYA 0 dose at every CYA.
Weaker acid adds a little more on top. Acid strength is a percentage by weight, and 14.5% acid is also lighter than 31.45% (about 1.07 g/mL against 1.16), so a fluid ounce of it holds less acid than the label percentage alone suggests: about 8% more is needed than a straight conversion gives.
The details
SwimYet treats the water as a charge balance of carbonate, cyanurate (from stabilizer), borate, hydroxide and hydrogen ions, with calcium and sodium pairing with carbonate, corrected for salt and for water temperature. Every product is described by what it adds (acid, carbonate, alkalinity, stabilizer, borate, calcium), and the new pH is solved from that balance. One model covers acid, soda ash, borax, baking soda, tablets and stabilizer, so the plan and the what-if tool always agree.
Its doses are checked on every change against PHREEQC, the US Geological Survey’s water-chemistry program: acid, dry acid, soda ash and borax agree within 2% across stabilizer, alkalinity, calcium, salt, borates and temperature, and the pH drop from stabilizer within 0.01.
That common formula is a curve fit: a function of pH times (TA + 13.91), with no stabilizer, calcium or salt in it. It lines up with PHREEQC for water without stabilizer. It does correct for borates, as SwimYet does.
Neither SwimYet nor PHREEQC as used here predicts carbon dioxide leaving the water, which makes pH drift back up over the days after adding acid, faster with waterfalls and spa jets. Which dose matches real pools best is something only real before-and-after tests can settle, and the three-quarters advice covers the difference in the meantime.
Why is there no pH step at 7.5?
The ideal range is 7.6–7.8, and SwimYet leaves pH alone from about 7.5 up to 7.8. pH drifts up on its own in most pools, so 7.5 will be in range soon without any product. Outside that band the plan aims for 7.6, or the pH goal you set. The wider acceptable range is 7.2–8.0.
How is my chlorine target chosen?
From your stabilizer (CYA) level. Stabilizer protects chlorine from sunlight, but it also holds on to it, so the more stabilizer in the pool, the more chlorine you need for the same effect. These are the levels of the widely used FC/CYA chart.
CYA
Minimum
Target range
SLAM
Salt cell minimum
Salt cell target
30
2
5–6
12
2
5
40
3
6–7
16
2
6
50
4
7–8
20
2
7
60
5
8–9
24
3
8
70
5
9–10
28
3
8
80
6
10–11
31
4
9
90
7
11–12
35
4
10
Free chlorine in ppm. Pools on liquid chlorine or tablets aim for the top of the target range; salt cell pools aim for the middle, since the cell tops it up every day.
The details
Minimum: 7.5% of CYA + 0.7 (4.5% of CYA + 0.7 with a salt cell), rounded down, at least 1.
Target range: CYA ÷ 10 + 2.5 to CYA ÷ 10 + 3.5 (from 7.5% of CYA + 1.5 with a salt cell), rounded down, at least 3.
SLAM: 39.3% of CYA, rounded to the nearest whole number, at least 10.
These are the chart’s own formulas. The plan sizes chlorine to the CYA the pool will have after the plan’s other steps, so adding stabilizer raises the chlorine dose too.
What’s a SLAM?
Shock Level And Maintain: a widely used way to clear algae or cloudy water. You raise FC to the SLAM level for your CYA and keep it there, re-adding as it drops, until the water is clear, combined chlorine (CC) is 0.5 or less, and FC drops by 1 ppm or less overnight. SwimYet plans a SLAM when CC is above 0.5.
I have a salt cell. Why raise its output instead of adding chlorine?
Your cell makes chlorine every day. When FC drops below your target range but is still at or above the minimum, turning the cell’s output up a notch, or running the pump longer, closes the gap in a day or two, with nothing to buy or carry. Adding liquid chlorine by hand is faster, so the plan offers that too.
Below the minimum a cell is too slow, so the plan says to add chlorine by hand now, then raise the cell’s output so FC holds. A SLAM is always done by hand.
Why are the steps in this order?
Because products affect more than one reading. The plan goes: drain if needed (only draining lowers stabilizer, calcium, salt and borates), then raise calcium, stabilizer, borates and salt, then alkalinity, then pH, then chlorine.
Each step is worked out on the water the steps before it leave behind. Stabilizer is an acid, so it lowers pH; baking soda nudges pH up; borates shift pH. Doing pH after those means the pH dose accounts for them (stabilizer is a special case, below). Lowering alkalinity takes several rounds of acid and aeration, so the steps after it start from the lower alkalinity. Chlorine goes last because it’s sized to the final stabilizer level.
Why won’t it fix pH while I’m adding stabilizer?
Stabilizer takes 2–7 days to dissolve, and it lowers pH as it does. Raising CYA from 20 to 45 takes pH from 8.6 to about 7.6 (at TA 70). If the plan dosed acid for today’s high pH, the stabilizer would then carry pH too low. So when pH is high or fine today, the plan skips pH and tells you what to expect; retest once the stabilizer has dissolved and adjust then.
When pH is already low today, the stabilizer would only take it lower, so the plan raises pH now, dosed for where it will end up. Until the stabilizer has dissolved, pH reads higher than the target; that’s expected, so retest after it has dissolved before adding the rest.
Why do chlorine strengths need converting?
Labels mean two different things. Up to 9% (household bleach), the percentage is by weight, and bleach is a little denser than water, so 100 mL holds slightly more than the label number in grams. Above 9% (pool chlorine), it’s usually “trade percent”: grams of chlorine per 100 mL already. SwimYet converts them the way other pool calculators do, so the doses match.
Label
Reads as
Chlorine per 100 mL
FC from 1 gal
6%
weight percent
6.2 g
+6.2 ppm
8.25%
weight percent
8.6 g
+8.6 ppm
10%
trade percent
10.0 g
+10.0 ppm
12.5%
trade percent
12.5 g
+12.5 ppm
Free chlorine added by 1 gallon in 10,000 gal.
Chlorine also weakens in storage, faster when warm, so a jug that’s been in the garage all summer is weaker than its label. If your FC rises less than expected, that’s a common reason, along with chlorine being used up by algae or sunlight, or a pool volume that’s off.
What are CSI and LSI?
Both say whether your water tends to deposit scale (positive) or dissolve plaster and grout (negative). SwimYet shows the CSI (calcite saturation index), with −0.3 to +0.3 marked as balanced; the LSI (Langelier index) is shown under it for comparison with pool shop readings.
The details
The CSI formula is the one common to pool calculators. It uses pH, calcium, temperature, salt, and carbonate alkalinity: total alkalinity minus the part that comes from stabilizer and borates, which doesn’t protect plaster. When salt isn’t tracked it assumes 1000 ppm, as other calculators do.
The LSI is the pool industry’s table-based form (temperature, calcium and alkalinity factors, less a TDS factor), with the factors interpolated rather than rounded to the table. Its alkalinity is corrected for stabilizer and borates the same way.
Vinyl and fiberglass don’t etch the way plaster does, so a low CSI matters most for plaster and pebble. A high CSI can leave scale on any surface, and in heaters and salt cells.
Why does the water behind the page change colour?
On the calculator, it shows your readings. It’s clear blue while your water is in range, turns green as free chlorine falls below the minimum, and goes milky when combined chlorine is above 0.5 or pH is outside 7.2–8.0. Tap it for a ripple. With reduced motion turned on, it stays still.
Where are my readings stored?
Only on your device, in your browser’s storage. There are no accounts, and SwimYet never sends your readings, your log or your pool’s details anywhere. SwimYet counts visits with Cloudflare Web Analytics, which uses no cookies and doesn’t follow you to other sites.
Clearing your browser’s data for this site deletes your log. On an iPhone or iPad, the browser also deletes it if you don’t visit for 7 days, unless you’ve added SwimYet to your Home Screen (do that before you start logging: the Home Screen app keeps its own log, separate from the browser’s). Use “Export CSV” under History now and then to keep a copy.
How do the numbers compare with other calculators?
Closely, except where this page says otherwise. Every change to SwimYet is checked against a widely used pool calculator: chlorine, calcium, stabilizer, salt and borate doses and the FC/CYA levels all match within 2%, and the CSI within 0.01. Where SwimYet differs on purpose, it’s for the reasons below.
Every deliberate difference
pH doses include stabilizer, calcium and salt (above), checked against PHREEQC.
14.5% acid uses its real density, about 8% more.
Soda ash and borax on large pH rises (0.5 or more): 20–25% more, because both add buffer as they go in, so each extra ounce moves pH a little less.
Baking soda: about 4.5% less, from the chemistry of how much it takes to raise alkalinity by 1 ppm (that calculator’s own table of effects agrees).
The swim verdict’s pH limits and timing, leaving pH alone from 7.5 to 7.8, not adjusting a high pH while stabilizer dissolves, and a higher alkalinity range for tablet pools (80–120) are SwimYet’s own calls.
How do you know the numbers are right?
Every change to SwimYet’s code is checked before it reaches this site, in three ways:
pH doses against PHREEQC, the US Geological Survey’s water-chemistry program: over a hundred pools, with different stabilizer, alkalinity, calcium, salt, borate and temperature. Acid, dry acid, soda ash and borax agree within 2%.
Everything else (chlorine, calcium, stabilizer, salt and borate doses, the FC/CYA levels and the CSI) against a widely used pool calculator, within 2%, except the deliberate differences listed above.
Whole seasons of made-up logs, including a salt pool, an algae outbreak and a heat wave, imported and read back, so the history and chlorine-use figures come out as the season was built.
What no model knows is your pool: its real volume, how fast carbon dioxide leaves it (which slowly pushes pH back up after acid), and how precise your test kit is. That’s why every pH step says to add three quarters and retest.