PoolSolver

Pool LSI Calculator

The Langelier Saturation Index, computed the rigorous way — full saturation equation, continuous temperature and TDS, and the cyanurate correction every naive tool skips. Every fix it identifies routes to a shipped, engine-backed calculator.

Hook

Your test kit says everything's in range — pH 7.5, alkalinity 100, calcium 300. A naive balance calculator gives you a green light.

But you run 80 ppm of cyanuric acid, and that quietly drags your water corrosive without changing a single number on your test strip. Most calculators never catch it. This one does.

Promise

This calculator computes your pool's Langelier Saturation Index from the full saturation equation — pH, alkalinity, calcium, temperature, and total dissolved solids — and then does the correction almost every other tool skips: it subtracts the cyanurate share of your alkalinity, because the stabilizer that protects your chlorine doesn't protect your plaster. You'll get an honest balance verdict and the single most effective number to change — with a live calculator behind each fix. Every term derived on the page.

Here's the deal: water balance isn't about hitting five numbers individually — it's about whether, together, they leave your water hungry for calcium (corrosive) or oversaturated with it (scaling). The Langelier index rolls all five into one. We compute it the rigorous way, correct it for cyanuric acid, and tell you which lever moves it fastest.

What you'll give us

Six inputs: pH, total alkalinity, calcium hardness, cyanuric acid, water temperature, and total dissolved solids. The CYA input is the one most calculators skip — and the one that produces the wedge this page exists to surface.

Five inputs in, one verdict outpH · TA · CH · temperature · TDS — plus the cyanuric input the clones ignorepH6.8 – 8.6TAppm CaCO₃CHppm CaCO₃Temp°F or °CTDSppm (salt pool ~3,500)CYA (the wedge)cyanurate reads as alkalinity but doesn't buffer CaCO₃Corrosive← LSI ≤ −0.3Balanced±0.3ScalingLSI ≥ +0.3 →LSI
Five dials feed one verdict. The cyanuric input is the sixth — the input most calculators skip — because cyanurate reads as alkalinity in the titration but doesn't buffer CaCO₃ saturation. The LSI meter at the bottom rolls all six into one tendency: corrosive (left, calcium-hungry), balanced (center, ±0.3 of zero), scaling (right, calcium-falling-out).
LSI input diagram: five dials plus CYA feeding a corrosive-to-scaling meter.

The calculator

Fill the fields, pick your surface, hit Calculate. The result shows your LSI as one decimal + a verdict word (never false precision); under that, the cyanurate-correction callout shows how much of your “alkalinity” is actually carbonate. The result URL is shareable — your inputs encode into a deep link.

Ideal band 7.47.6; acceptable 7.27.8.

Typical band 80120 ppm; acceptable 60180.

Plaster 250350; vinyl/FG 150250; typical 200400.

Drives the cyanurate correction. Typical band 3080. Blank computes at 0 with a stabilized-state warning.

Seasonal lever — not dosable, but the engine's B term moves with it.

Pool surface

The cyanurate correction — why your “balanced” pool is corrosive

The page's reason to exist. Read slowly — this single correction is what makes the difference between a calculator that says “you're fine” and one that catches the etching nobody else explains.

Your alkalinity is 100. The part that counts is 75.pH 7.5 · CYA 80 · cyanurate factor 0.313 (the pH-dependent “⅓ rule”, computed exactly)Total alkalinity (titrated): 100 ppm100 ppmCarbonate 75 ppmcounts for LSICyanurate 25doesn't buffer CaCO₃carbonate_alk = TA − CYA × factor(pH) = 100 − 80 × 0.313 = 74.98 ppmNaive (uses raw TA)+0.02Calls this water “balanced”Corrected (carbonate alk)-0.10Actually corrosiveThe swing: 0.13 LSI units. The gap between “balanced” and “quietly etching your plaster.”
E2 inputs — pH 7.5, TA 100, CH 300, 80 °F, TDS 1000, plus CYA 80. The total alkalinity reads 100 ppm in the titration, but 25 ppm of that is cyanurate (which doesn't buffer CaCO₃ saturation). The carbonate share — the part the LSI's D term actually wants — is 75 ppm. Naive calculators plug 100 in and report a balanced verdict; the corrected math says the water is corrosive. Same chemistry, different math.
Cyanurate-correction visual showing the total-alkalinity bar split into carbonate and cyanurate shares at the E2 inputs, with the naive-versus-corrected LSI swing.

Here's what almost every balance calculator gets wrong. When you titrate total alkalinity, cyanuric acid answers the call — a chunk of what reads as “alkalinity” is actually cyanurate, not carbonate. But CaCO₃ saturation only cares about carbonatealkalinity. So if you run 80 ppm of CYA and plug your total alkalinity straight into an LSI calculator, it overstates your buffering and tells you the water's balanced when it's actually pulling calcium out of your plaster.

The worked proof. Identical pool: pH 7.5, TA 100, CH 300, 80 °F, TDS 1000. With CYA 0 → LSI +0.02 (balanced). With CYA 80 → carbonate alkalinity is really 75 ppm, and LSI is -0.10 (corrosive). A naive tool reports +0.02 in both cases and never sees it. That 0.13swing is the gap between “your water's fine” and “your water is quietly etching your pool.”

What cyanurate alkalinity is

Cyanuric acid (HCY) has a pKa near pool pH. Part of your CYA exists in solution as the cyanurate anion (CY⁻), which titrates AS alkalinity in your test kit. But it's not bicarbonate — it doesn't buffer the carbonate equilibrium that controls CaCO₃ saturation. The titration counts it; the saturation chemistry doesn't.

Why the factor depends on pH

Cyanurate's share of your CYA — the part that reads as alkalinity — rises with pH (Henderson–Hasselbalch). We compute it exactly from the pKa: pH 7.2 → factor 0.262, pH 7.5 → 0.313, pH 8.0 → 0.360. Other calculators that use one rounded factor get it wrong at both ends of the range.

Reconciliation to the pool-world rule

At pH 7.5 our exact factor is 0.313— almost exactly the “subtract a third of your CYA” rule the careful pool-chemistry sources have been printing for years. We agree with that rule. We just compute it across the real pH range instead of using a single rounded number.

The wedge audience — the one looking specifically for “LSI with cyanuric acid” — should know this is also the math the cyanuric acid calculator treats as the trade-off for stabilization. Stabilizer protects your chlorine; it doesn't protect your plaster. The LSI correction is how you see the cost.

What the number means — corrosive, balanced, scaling

LSI is a number line, not a single threshold. Where you sit on it tells you the chemistry tendency; how far from zero tells you how strong the tendency is.

The LSI number line±0.3 around zero is balanced. Outside that, water trends corrosive (etching) or scaling (depositing).Corrosive(calcium-hungry · etches plaster)Balanced(±0.3 of zero)Scaling(deposits scale)-1.2-0.9-0.6-0.30.0+0.3+0.6LSIE5 (-1.04)E7 (-0.58)E6 cold (-0.23)E3 (-0.11)E2 (-0.10)E1 (+0.02)E6 hot (+0.09)E8 (+0.14)E4 (+0.61)
Every tick above the bar is a worked-example LSI computed by the engine — E2's −0.10 sits in the corrosive zone next to E3's salt-pool −0.11, E1's baseline +0.02 sits in the middle of the balanced band, and E4's scaling pool at +0.61 lives well outside the green stripe. The band is wide because LSI predicts tendency, not certain damage on day one.
Horizontal LSI scale with the worked examples plotted at their computed engine values.

A negative LSI means your water is calcium-hungry — it will dissolve calcium out of plaster, grout, and the cement around tile, and it goes after metal too (heater cores fail this way). A positive LSI means the opposite: calcium is falling out of solution, coating your surfaces, your heater's heat exchanger, and your salt cell with scale. Zero (within ±0.3) means the water is at peace with its calcium — neither taking nor leaving.

The ±0.3 band is wide on purpose. LSI predicts a tendency, not a guarantee — a verdict at −0.1 doesn't mean your plaster is etching tonight, and +0.4 doesn't mean your heater scales by Friday. The band exists because the chemistry has real noise: test-kit precision, temperature drift, TDS guesswork. Take the verdict seriously when the index sits outside it; expect to see the consequence in weeks-to-months, not hours.

The temperature insight

The SAME water can be balanced in spring and scaling in summer, because warmer water holds less calcium in solution. This is why “I didn't change anything and now it's cloudy” happens — the season changed it. The SeasonSwing visual further down shows this directly for one fixed-chemistry pool.

What we don't do

We report LSI to one decimal + a verdict word. Not three decimals — the ±0.3 band makes a third decimal meaningless. We compute LSI only; we don't fake a CSI or Ryznar value if you came looking for those. And we don't add a borate correction without a borate input.

Which lever to pull — every fix routes to a shipped calculator

The capstone payoff. When LSI is off, the calculator above doesn't just tell you the number; it tells you which input is actually the lever, and it links you to the dosing tool that handles it.

Five levers — every dosable one points at a shipped calculatorThe capstone payoff: this page is the hub; the chemistry cluster pages are the spokesParameterHealthy bandLSI behaviourFix atpH7.4–7.6Fastest LSI lever; least durable→ pH calcTotal alkalinity80–120 ppmBuffer behind pH; durable→ alkalinity calcCalcium hardness200–400 ppmSlow but durable lever→ calcium calcCyanuric acid30–80 ppmWedge input; subtracts from alkalinity→ cyanuric calcTemperatureseasonalNot dosable; expect the swingno route — seasonal
Every adjustable lever on this page routes to a shipped, engine-backed calculator — the chemistry cluster closes here. Temperature is the only lever you can't dose, and the right move when temperature drives a verdict is to expect the seasonal swing and re-test in-season, not to chase it with chemicals.
Five LSI levers — pH, TA, CH, CYA, temperature — with their healthy bands and the calculator routes that fix them.

LSI moves one-for-one with pH — it's the leading term in the equation, which makes pH the fastest correction. But pH is also the bounciest number in your pool (the carbonate system snaps back when you push it), so a pH fix may not hold. Calcium and alkalinity move LSI more slowly (they're logarithmic terms), but they stay put. The right lever depends on which of your inputs is actually out of its own healthy range.

That's the rule the “what to fix” output uses: don't fix a balance problem by pushing a healthy number to an unhealthy place. If your LSI is corrosive and your CH is below its band while everything else is in-band, the answer is to raise calcium — not to shove pH up out of its band. If multiple inputs are out, you get them in priority order, each with a live link to its dosing calculator.

pH

Fastest LSI lever; least durable. The pool pH calculator walks the acid + aeration sequence honestly.

Total alkalinity

The buffer behind pH. The pool alkalinity calculator handles the precise baking-soda dose and the acid + aeration sequence on the other side.

Calcium hardness

Slow but durable. The calcium hardness calculator covers the calcium-chloride dose and the dilution math when CH is too high.

Cyanuric acid

The wedge input. If your LSI is corrosive and your CYA is above its band, reducing it lifts your effective carbonate alkalinity directly. The cyanuric acid calculator handles the dilution math (no chemical reduces CYA, same one-way-ratchet rule as calcium).

TDS

High TDS nudges LSI corrosive. The pool salt calculator covers the salt-side TDS context; dilution is the same lever you use for high CYA or high CH.

Temperature

Not dosable. Seasonal. The fix when temperature drives a verdict is to expect the swing — your spring-balanced pool will read warmer-leaning-scaling in August. Re-test in-season.

Where the index comes from — the saturation equation

Most LSI calculators use lookup tables — pre-rounded factors for temperature, calcium, and alkalinity that you add together. We compute from the saturation equation directly. That's how we handle the cyanurate correction at all, and how we stay continuous with temperature.

  1. Step 1 · the definition

    LSI = pH − pHs, where pHs is the pH at which the water would be saturated with calcium carbonate. Negative LSI = water below its saturation pH = water wants to dissolve calcium. Positive LSI = water above saturation = calcium falls out of solution as scale.

  2. Step 2 · the full form

    pHs = 9.3 + A + B − C − D. The 9.3is the empirical anchor from Langelier's 1936 derivation; A is the TDS term, B is the temperature term, C is the calcium term, and D is the carbonate-alkalinity term. The simplified pool “factor tables” you see in pool books (TF, CF, AF) ARE these terms — pre-computed for a few values. We compute them continuously.

  3. Step 3 · the four terms

    • A (TDS): A = (log₁₀(TDS) − 1) ÷ 10. Higher TDS = higher pHs = LSI slightly more corrosive. Salt pools live here.
    • B (temperature): B = −13.12 × log₁₀(°C + 273.15) + 34.55. Warmer water = higher B = LSI scaling. This is why your spring-balanced pool can scale by August.
    • C (calcium): C = log₁₀(CH) − 0.4. The minus sign is there because C SUBTRACTS in pHs — more calcium pulls pHs down, pushes LSI up. Slow but durable.
    • D (carbonate alkalinity): D = log₁₀(carbonate_alk). Same direction as C — more carbonate alk pulls pHs down. The carbonate-alk caveat is the entire reason this page exists.
  4. Step 4 · the cyanurate correction (the wedge)

    Naive calculators put raw TA into D. We don't. Carbonate alkalinity = TA − CYA × factor(pH), where factor(pH) = (50.04 ÷ 129.07) × the ionized fraction of CYA at your pH. The 50.04 is the same CaCO₃-equivalent constant the alkalinity calculator uses; the 129.07 is the cyanuric acid molecular weight (imported from the chlorine calculator's chemicals module). One source, two correct numbers.

  5. Step 5 · sanity check

    Balanced baseline (pH 7.5, TA 100, CH 300, CYA 0, 80 °F, TDS 1000) → A = 0.200, B = 2.054, C = 2.077, D = 2.000, pHs = 7.48, LSI = +0.02. These are the numbers every pool book calls “balanced,” and the equation agrees. That's how you know it's right.

The bridge to the lookup tables: those classic pool-book charts aren't magic, they're just log₁₀ values rounded to a chart row. We do the log directly instead of rounding. That precision matters most exactly where the lookup tables are weakest: high CYA (which they don't correct for), edge temperatures, and TDS outside the 500–2000 lookup range. For the math behind the dosing levers you might pull from here, the alkalinity calculator and the calcium hardness calculator share these same constants by construction.

Worked examples — eight common scenarios

Every LSI below is computed by the engine. Where the cyanurate correction matters (E2, E3), the naive-ignoring-CYA value is shown alongside — that's the wedge made visible.

Example 1

The balanced baseline (the reference)

pH 7.5, TA 100, CH 300, CYA 0, 80 °F, TDS 1000

+0.02 · Balanced

The textbook target, and proof the equation is right — these are the numbers every pool book calls 'balanced,' and the index agrees.

Example 2

The cyanurate wedge (THE example)

Same pool — but with 80 ppm of CYA

-0.10 · Balanced

Naive (ignoring CYA): +0.02 — calls this water balanced. Gap = 0.13 LSI units.

Nothing on your test strip changed, but 80 ppm of stabilizer pulled your water corrosive — and only a calculator that subtracts cyanurate alkalinity will tell you.

Example 3

Salt pool with high CYA — the double corrosive push

pH 7.6, TA 80, CH 350, CYA 80, 82 °F, TDS 3500 (salt pool)

-0.11 · Balanced

Naive (ignoring CYA): +0.06 — calls this water balanced. Gap = 0.17 LSI units.

Salt pools get hit twice — high TDS nudges LSI down, and salt systems often run high CYA, which the correction catches. This is why salt-pool plaster etches when the test kit looks fine.

Example 4

Scaling pool (the cloudy-water diagnosis)

pH 7.8, TA 120, CH 450, CYA 30, 88 °F, TDS 1500

+0.61 · Strongly scaling

High pH, high calcium, and warm water together push calcium out of solution — onto your heater, your cell, your tile line. Drop pH first (fastest lever).

pool pH calculator

Example 5

Corrosive cold-open (the spring pool-opening case)

pH 7.2, TA 60, CH 150, CYA 40, 65 °F, TDS 1000

-1.04 · Strongly corrosive

Cold water plus low pH, low alkalinity, low calcium is aggressively calcium-hungry — exactly the state a neglected pool opens in, and exactly when plaster damage happens. Raise calcium and alkalinity before chasing anything else.

calcium hardness calculator

Example 6

Same pool, two seasons (the temperature wedge)

pH 7.6, TA 90, CH 300, CYA 50, TDS 1200 — at 60 °F vs 90 °F

-0.23 · Balanced

90 °F: +0.09 · Balanced

The same chemistry reads corrosive in spring and balanced (heading toward scaling) in summer. 'I didn't touch anything and it went cloudy' is the season talking.

Example 7

Which lever fixes it (the hub payoff, worked)

pH 7.4, TA 70, CH 180, CYA 50, 78 °F, TDS 1000

-0.58 · Strongly corrosive

The fix isn't to shove pH up (it's already healthy) — it's to raise CH and TA back into their own ranges, which moves LSI back toward zero AND fixes the underlying low numbers. Don't fix a balance problem by pushing a healthy number to an unhealthy place.

calcium hardness + alkalinity

Example 8

Hot spa (the spa-scaling case)

Hot tub: pH 7.6, TA 90, CH 250, CYA 40, 102 °F, TDS 1500

+0.14 · Balanced

Spas run hot, and heat pushes LSI up — so a spa that's 'balanced' cool will scale when you crank the temperature. Keep spa CH and pH on the lower side of their bands to leave headroom for the heat.

Reference tables

Three crawlable tables, CC BY 4.0. Every cell renders from the engine — no static numbers in this file. The Langelier “factor tables” (T1) are the classic pool-book lookups computed from the log formulas, not transcribed.

The same pool — corrosive in spring, scaling in summerpH 7.6 · TA 90 · CH 300 · CYA 50 · TDS 1200 — only the temperature changes±0.3 balanced band-0.6-0.30.0+0.35060708090100water temperature (°F)LSIspring · 60°F · -0.23summer · 90°F · +0.09
Same pool, same chemistry — only the water temperature changed. In spring at 60 °F the LSI sits in the corrosive zone at -0.23; by summer at 90 °F it's landed in the balanced band at +0.09, heading toward scaling. “I didn't touch anything and it went cloudy” is the season talking.
LSI versus water temperature for one fixed-chemistry pool, with spring and summer markers.

T1 · The Langelier factor tables, computed

The classic pool-book TF / CF / AF tables generated from the log formulas in §4.1 — TF = B = −13.12 × log₁₀(TK) + 34.55; CF = C = log₁₀(CH) − 0.4; AF = D = log₁₀(carbonate alk).

Temperature factor (TF)

°FTF
402.49
502.38
602.27
702.16
802.05
901.95
1001.85

Calcium factor (CF)

CH (ppm)CF
251.00
501.30
751.48
1001.60
1501.78
2001.90
3002.08
4002.20
6002.38
8002.50

Alkalinity factor (AF)

TA (ppm)AF
251.40
501.70
751.88
1002.00
1502.18
2002.30
3002.48
4002.60

AF uses raw TA in the classic table. When CYA is present, replace TA with carbonate alkalinity (TA − CYA × factor(pH) — see T2) before reading AF.

T2 · Cyanurate correction factor by pH

carbonate_alk = TA − CYA × factor. The pH-dependent factor handles the dissociation equilibrium of cyanuric acid (pKa1 ≈ 6.88). At pH 7.5 the factor is 31.3% — the published “subtract ⅓ of CYA” rule, computed exactly.

Cyanurate-correction factor by pH, with ppm subtracted for CYA 80 example
pHFactorFor CYA 80 → subtract
7.00.22017.6 ppm
7.20.26221.0 ppm
7.40.29823.8 ppm
7.50.31325.0 ppm
7.60.32626.1 ppm
7.70.33726.9 ppm
7.80.34627.7 ppm
7.90.35428.3 ppm
8.00.36028.8 ppm

T3 · Worked-example LSIs

Engine-rendered. The naive column (LSI with raw TA in D) is shown for the wedge cases so the gap is visible.

Worked-example LSIs and naive (ignoring CYA) comparison
IDDescriptionLSIVerdictNaive (raw TA)
E1Balanced baseline+0.02Balanced
E2Cyanurate wedge-0.10Balanced+0.02
E3Salt pool double push-0.11Balanced+0.06
E4Scaling pool+0.61Strongly scaling+0.64
E5Corrosive cold open-1.04Strongly corrosive-0.96
E6cTemp wedge (60 °F)-0.23Balanced-0.15
E6hTemp wedge (90 °F)+0.09Balanced+0.17
E7Hub payoff-0.58Strongly corrosive-0.47
E8Hot spa+0.14Balanced+0.21

All three tables released under CC BY 4.0. Attribute PoolSolver and link back.

Sources & methodology

The cluster capstone — the page closing the chemistry loop. Sources are short because the chemistry is well-established; the wedge is in the application, not the discovery.

The Langelier Saturation Indextraces to Langelier's 1936 paper on calcium carbonate saturation in water-treatment systems. The simplified pool form (pHs = 9.3 + A + B − C − D) is standard across water-treatment textbooks and pool-industry references. We use the full continuous formulation rather than the rounded lookup tables most pool calculators ship — the difference matters at edge temperatures, high CYA, and extreme TDS.

The cyanurate correction rests on cyanuric acid's first dissociation equilibrium (pKa1≈ 6.88) and the established distinction between carbonate alkalinity and the broader titrated total alkalinity. The carbonate-vs-cyanurate distinction is documented across the careful pool-chemistry literature (Trouble Free Pool / Falk references in particular); our contribution is to compute it pH-aware rather than apply a single rounded factor. At pH 7.5 our exact factor (≈ 0.31) reconciles to the published “subtract ⅓ of CYA” rule of thumb.

Imported constants, single source. The CaCO₃ equivalent weight (50.04) and cyanuric acid MW (129.07) used in the correction are the same constants the alkalinity calculator and the chlorine calculator use. The healthy-band thresholds in the “which lever to fix” routing are imported from the per-parameter pages (PH_ACCEPTABLE from the pH calc, TA_TYPICAL/TA_ACCEPTABLE from the alkalinity calc, CH_PLASTER/CH_VINYL_FG/CH_TYPICAL from the calcium calc, CYA_TYPICAL from the cyanuric calc) — one source per constant, the cluster cannot disagree with itself.

Temperature dependence (the Item-B realization). When the pH calculator shipped, it documented (acidbase.ts:25–51) that the LSI calculator would need pKa1(T) and would add a tempC parameter to a new helper. This page is that realization. The new saturationIndex() in lib/dosing/lsi.ts takes temperature as a first-class input; the existing acidbase/alkalinity/calcium functions are not touched.

The honesty paragraph (diagnostic edition)

LSI is a tendency, not a guarantee.The ±0.3 balanced band is a convention (Taylor / PHTA). We report the index to one decimal and a verdict word, never to three decimals — the band makes a third decimal meaningless. We compute LSI only; we don't fake a CSI or Ryznar value if you came looking for those (they're named honestly in the FAQ). And we don't add a borate correction term unless borate is an input. The cyanurate correction is shown PROMINENTLY in the result, under the headline — it's the page's differentiator and must not be buried.

The chemistry cluster closes here.Every dosable lever this page identifies routes to a shipped, engine-backed calculator: pH → /pool-ph-calculator/, total alkalinity → /pool-alkalinity-calculator/, calcium hardness → /pool-calcium-hardness-calculator/, cyanuric acid → /cyanuric-acid-calculator/, TDS context → /pool-salt-calculator/. Temperature isn't dosable; it's seasonal and we say so. The chemistry cluster has no prose-only deferrals remaining — every link on this page is live.

Frequently asked questions

What is a good LSI for a pool?
Within ±0.3 of zero is the conventional “balanced” band — neither pulling calcium out of plaster nor depositing scale. Plaster pools especially want LSI ≥ 0 (the upper half of the band) to keep water from pulling calcium out of the surface. The band is wide because LSI predicts tendency, not certain damage on day one.
Why does cyanuric acid make my LSI lower?
Because part of what your test kit reads as “alkalinity” is actually cyanurate, not carbonate. The LSI's D term wants carbonatealkalinity — the bicarbonate buffering that controls CaCO₃ saturation. Cyanurate titrates as alkalinity but doesn't buffer the same chemistry. At pH 7.5 you subtract about a third of your CYA from your TA before the LSI math; at pH 8.0 you subtract closer to 36%. That subtraction makes your effective alkalinity smaller, which pushes LSI corrosive.
My test numbers are all in range — why is my water corrosive?
Two usual suspects. First, the cyanurate correction (the FAQ above): if you stabilize, part of your “alkalinity” doesn't buffer LSI, and a naive calculator never catches it. Second, temperature: cold water is more aggressive on calcium than warm water, so the same pool can read corrosive in spring and balanced in summer. The calculator above handles both; the temperature wedge gets its own visual in §4.3.
Does temperature really change water balance?
Yes — that's the B term in the LSI equation. Warmer water holds less calcium in solution, so the same chemistry that's balanced at 60 °F can be scaling at 90 °F. The SeasonSwing visual in this page plots one fixed-chemistry pool's LSI from 50 to 105 °F using the engine's B term directly. The fix when temperature drives a verdict isn't to dose — it's to expect the swing and re-test in-season.
What's the fastest way to fix unbalanced water?
pH is the strongest fast lever — LSI moves 1-for-1 with pH, so an acid or aeration dose shifts the index quickly. But pH is also the bounciest number in your pool; a pH fix often doesn't hold. Calcium and alkalinity move LSI more slowly (they're log terms), but they stay put. The right move: fix inputs that are outside their own healthy bands first (don't shove a healthy number out of range to fix LSI). The pH, alkalinity, and calcium calculators each handle the dose math their lever needs.
Is LSI the same as the Ryznar or CSI index?
No. LSI is the most widely used saturation index for pool water; the Ryznar Stability Index is an older variant and the Calcium Saturation Index (CSI) is a refinement some salt-system manufacturers use to handle TDS differently. We compute LSI here — not the others — and we name them honestly rather than faking a value we didn't compute. CSI gives broadly similar verdicts in most pool ranges; LSI is the one with the most established convention behind it.
What should LSI be for a salt pool or plaster pool?
Salt pools tend to read slightly corrosive at the same pH/TA/CH as a fresh pool because the higher TDS (3000–4000+ ppm) raises pHs via the A term — they need to run with calcium and alkalinity nudged toward the upper half of their bands to compensate. Salt pools also often run high CYA, which the cyanurate correction catches. Plaster pools especially want LSI ≥ 0 (upper half of the balanced band) because slightly-positive water protects the surface; slightly-negative water pulls calcium out of the plaster.
Can I just balance one number to fix LSI?
Sometimes — if that one number is the one actually out of its own healthy band. If your CH is below its band while everything else is in-band and LSI is corrosive, raising CH fixes both: it gets the input back to its own band AND moves LSI up. But if all five inputs are inside their own bands and LSI is still off, nudging one within its band is the move (raise CH toward the upper end of its band for a corrosive verdict; lower pH within its band for a scaling verdict). What you don't do is push a healthy number to an unhealthy place to satisfy the index.

Related calculators

Next in Pool Chemistry: Pool Shock Calculator.

Related across clusters: Pool Heater Size Calculator, Pool Heating Cost Calculator.

All Pool Chemistry calculators: browse the hub.