PoolSolver

Pool Shock Calculator

Shock keyed to your CYA, not a fixed number. The SLAM target every clone calculator skips, the breakpoint dose that destroys chloramines, and the one situation where the honest answer is “drain — don't shock.” Shares the chlorine engine; cannot disagree with the chlorine page's side-effects by construction.

Hook

Every shock calculator tells you to “shock to 10 ppm.” It's the same answer whether your stabilizer is 20 or 100 — and that's exactly the problem.

At high cyanuric acid, 10 ppm of chlorine is barely awake, let alone strong enough to kill algae; at low CYA it's overkill. Shock isn't a fixed number. It's a number keyed to your stabilizer.

Promise

This calculator computes your real shock dose from your cyanuric acid level — the sustained “SLAM” level that actually clears algae, or the breakpoint dose that burns out chloramines and kills the chlorine smell. It works across liquid chlorine, cal-hypo, and dichlor, shows the side effects each one leaves behind, and tells you the one situation where the honest answer is don't shock — drain. Every number derived on the page.

Here's the deal: shocking is just raising your free chlorine to a high target and holding it there until the water clears. The catch is the target. Cyanuric acid binds chlorine, so the more stabilizer you run, the higher you have to push FC to get the same killing power. We'll compute your actual target, your dose in whatever product you've got, and what it does to the rest of your water.

The calculator

Pick a mode (SLAM for algae or BREAKPOINT for chloramines), enter your numbers, hit calculate. The never-mix safety banner pins above the inputs — same component the chlorine calculator uses, identical wording. Trichlor is greyed out (not a shock product); the high-CYA trap callout fires when it should.

Don't know? Pool volume calculator — deep-links back here with ?gal= prefilled.

From your test kit. Most pools sit at 2–5 ppm normally.

Required — shock target = 40% × CYA. The 10-ppm floor applies at zero CYA (the unstabilized case).

Shock product

Don't know your gallons? Pool volume calculator — two minutes, any shape, deep-links straight back here with ?gal= prefilled.

Shock is a number keyed to your CYA — the signature wedge

The chlorine page's CyaShield, pointed at shock. Cyanuric acid is sunscreen for your chlorine — it protects FC from the sun, but holds most of it in reserve, inactive.

Shock is keyed to your CYA — “10 ppm” is the wrong answerSLAM target = 40% × CYA · normal target = ~11.5% × CYA · the dashed line is the clone's fixed advice01020304050free chlorine (ppm)clone's fixed advice (10 ppm)CYA 20normal 2.5SLAM 10CYA 30normal 3.5SLAM 1210 ppm — below the real shock zoneCYA 50normal 6SLAM 2010 ppm — below the real shock zoneCYA 80normal 9SLAM 3210 ppm — below the real shock zoneCYA 100normal 11.5SLAM 4010 ppm — below the real shock zonenormal target (~11.5% × CYA)SLAM target (40% × CYA)
Read down the rows: at CYA 20 the SLAM target is 10 ppm — the same as the clone's fixed advice, the one place it's right. From CYA 30 up, the dashed line falls BELOW the real shock zone: at CYA 80 you need 32 ppm to actually shock the pool, and 10 ppm is barely above maintenance. The same word “shock” means two gallons of liquid chlorine for one pool and six for another, and the only thing that changed is the stabilizer.
CYA-keyed shock-ladder showing the normal FC target and the SLAM shock target at each CYA level, with the conventional fixed 10-ppm advice as a dashed line that falls below the real shock zone at high CYA.

The more CYA you run, the higher you have to push free chlorine to have the same amount actually working. That's why a fixed “shock to 10 ppm” is meaningless: at CYA 80, 10 ppm of FC is below the level you'd keep the pool at normally, never mind shocking it. The real shock target scales with your stabilizer.

The SLAM table — 40% of CYA — at the standard reference rows:

  • CYA 20 → SLAM target 10 ppm
  • CYA 30 → SLAM target 12 ppm
  • CYA 50 → SLAM target 20 ppm
  • CYA 80 → SLAM target 32 ppm
  • CYA 100 → SLAM target 40 ppm

The same word “shock” means two gallons of liquid chlorine for one pool and six for another, and the only thing that changed is the CYA. This is why the calculator asks for your CYA first — and why the chlorine calculator already keys your daily FC target to CYA. Shock is the same math, just at a higher target.

The high-CYA trap — when the honest answer is “don't shock”

The moment the clones dodge and we don't. The integrity wedge.

The high-CYA trap — the dose comparison20k gal · FC 2 · two routes to clear the same green poolRoute A · heroic doseSLAM at CYA 100 → 40 ppm6.1gal per doseheld for days~6.1 gal/day held until clearthe trap most calculators quoteRoute B · drain, then shock2.2gal · one campaign50% drain to CYA 40 → SLAM 16actually clears the pooldrain saves~2.7×the chlorineMost calculators quote Route A and stop. This one routes you to Route B — the honest answer.
At CYA 100, the “keep shocking” route quotes about 6.1 gallons per dose, held for days. The drain-first route swaps half the water to bring CYA down to 40, then shocks at a sane 16 ppm — roughly 2.7× less chlorine total, and it actually clears the pool because at CYA 40 the chlorine is meaningfully active. The integrity moment is that the second route exists and that we route you to it; quoting the first one and stopping is the trap.
Cost comparison between shocking at CYA 100 (the trap) and draining first to lower CYA then shocking (the honest answer).

Here's where most calculators quietly fail you. Enter CYA 100 and they'll cheerfully tell you to add 6.1 gallons of liquid chlorine — and then 6.1 more tomorrow, because at that stabilizer level you have to hold40 ppm FC for days to clear the algae. The honest answer isn't a heroic dose. It's that your CYA is too high to shock economically, and you should drain and replace some water first, then shock at a sane level.

The math: at CYA 100 in a 20k pool, SLAM = 40 ppm → ~6.1 gal of 12.5% liquid per dose held until clear. Versus: drain to bring CYA down to 40 first (the cyanuric acid calculator gives the exact swap), then shock at the sane 16 ppm — about 2.2 gal total, less than a third of the chlorine, and it actually clears the pool because at CYA 40 the chlorine is meaningfully active.

Routing you to the drain is the help; quoting six gallons of chlorine and stopping is the trap. The calculator above triggers a callout when this case arises — it leads with the drain recommendation, then shows the heroic dose for completeness. Order matters: the integrity moment is which answer is on top.

SLAM vs breakpoint — two reasons to shock

Same chemical, two different playbooks. Conflating them is one of the most common clone mistakes.

SLAM vs breakpoint — two reasons to shockschematic — the shape of the campaign vs the shape of a one-shot, not specific hoursSLAM (algae) — a held campaignSLAM 32 ppmnormal 9 ppmtime → (days, retest, re-dose to hold)Breakpoint (chloramines) — one push10× CC push (~14)normal 5 ppmtime → (hours, one dose, settles back)
Left: a SLAM is held — you re-dose to keep FC at the SLAM target over multiple days until the algae is gone and the water clears overnight without backsliding. Right: breakpoint is a single push, well above the 10× combined-chlorine threshold, that destroys chloramines in one go and settles back to normal. Same chemical, two different playbooks; conflating them is one of the most common clone mistakes.
Two free-chlorine versus time profiles: a held SLAM campaign for algae and a single breakpoint spike for chloramines.

There are two different reasons to shock, and they aim at different targets. Algae (green, cloudy, slimy) needs the SLAM level — FC at 40% of CYA — held until the water's clear and stays clear overnight. It's a campaign, not a one-shot. Chloramines(that sharp “chlorine” smell, stinging eyes) need breakpoint — a single big push to about 10× the combined chlorine — to burn the combined chlorine out in one go.

Chlorine smell = MORE chlorine, not lessthe F4 counterintuitive truth — chloramines smell sharp, free chlorine doesn't😷sharp “chlorine” smellirritates eyes / nose= chloramines(combined chlorine)and that meansUNDER-chlorinatedFC too low to oxidizenot OVERthe opposite of intuitionso the fix isBREAKPOINT shockFC ~ 10× CC, single pushsmell goeschloramines destroyed
Free chlorine doesn't smell. The sharp “chlorine” smell at indoor pools and over-loaded outdoor pools is chloramines— combined chlorine that hasn't been broken. The fix is more chlorine, not less, in a single breakpoint push that drives FC to about 10× the combined chlorine and oxidizes the chloramines back to nothing. Backing off chlorine when you smell it is exactly backwards.
Three-step explainer: chlorine smell equals chloramines, chloramines equal under-chlorination, the fix is a breakpoint dose.

The counterintuitive payoff: the chlorine smell is under-chlorination — combined chlorine that a breakpoint shock destroys. Most people smell it and back off chlorine, which is exactly backwards. The smell is the signal that you need more, not less.

The calculator's mode toggle separates the two. SLAM mode keys to your CYA (the §4.1 wedge); breakpoint mode keys to your CC (current FC + 10 × CC). If you're green you're in SLAM; if you're smelly you're in breakpoint; if you're both, breakpoint first, then SLAM.

Which product to shock with — the side-effect ledger at shock scale

At a normal daily dose the side effects of your chlorine product barely register. At a shock dose — five to ten times bigger — they add up fast.

What each product leaves behind — per ΔFC 30 ppm shockengine-computed from the shared chlorine-page constants+49.5saltLiquid chlorinecleanest shock+21.3CH (calcium)Cal-hypo+CH at SLAM scale+27.3CYADichlor+CYA — trap-deepenerN/ATrichlorNOT a shock product
At a normal daily dose the side-effects barely register; at a shock dose they add up. Liquid is the clean shock — just salt. Cal-hypo dumps 21.3 ppm of calcium hardness per 30 ppm shock; over a multi-day SLAM that's real. Dichlor adds 27.3ppm of CYA per 30 ppm shock — fine on a fresh-fill low-CYA pool, a trap-deepener if your CYA is already high. Trichlor isn't even on the menu for shock: slow tablets, can't deliver a fast push.
Side-effect ledger at shock scale (delta FC 30) — four products with liquid, cal-hypo, and dichlor bars and trichlor struck out as “not a shock product.”

Liquid chlorine is the clean shock: no CYA, no calcium, just +49.5 ppm salt per 30 ppm shock. Negligible for a salt pool; on a non-salt pool repeated heavy shocking does add real salt over a season, but the dose-by-dose figure is small. Default for a reason.

Cal-hypo works, but dumps calcium: a 30-ppm shock adds +21.3 ppm CH. One shock is fine; a multi-day SLAM with cal-hypo piles up against the calcium hardness band — watch your CH if you SLAM with cal-hypo repeatedly. (The 0.71 ppm CH per ppm FC constant is the same one the chlorine calculator uses; the figures here cannot disagree with the calcium-page ratchet.)

Dichlor dumps CYA: a 30-ppm shock adds +27.3 ppm CYA. Fine on a fresh-fill low-CYA pool; a trap-deepener if your CYA is already high. The calculator warns when you select dichlor with CYA ≥ 50 because every shock makes the next one harder.

Trichlorisn't a shock product at all — slow-dissolving tablets that can't deliver a fast high dose, and they dump CYA hard (~0.61 ppm per ppm FC). Recommending trichlor for shock is the clone error this page exists to correct. The product chip is greyed out for that reason.

Where the numbers come from

Five short steps. The dose math is the chlorine engine; the only genuinely new piece is the shock-target rule.

  1. Step 1 · pick your regime

    SLAM (algae): sustained FC at 40% of CYA, held until clear. Breakpoint (chloramines): single dose pushing FC to about 10× the combined chlorine above current. Different jobs, different playbooks (§4.3).

  2. Step 2 · compute the target

    SLAM target = max(40% × CYA, 10 ppm). The floor handles the CYA-0 boundary case: with no stabilizer, the conventional ~10 ppm is the right shock level — that's the CYA-keyed target evaluated at zero CYA, not an exception to the rule. Breakpoint target = current FC + 10 × CC (minimum 5-ppm push).

  3. Step 3 · ΔFC = target − current

    Same subtraction the chlorine calculator does for daily dosing — shock just plugs a higher target into the same arithmetic.

  4. Step 4 · dose math (shared engine)

    Liquid: gallons = ΔFC × (gallons ÷ 10,000) ÷ trade-%. Dry (cal-hypo, dichlor): lb = ΔFC × gal × 8.345 × 10⁻⁶ ÷ available-Cl fraction. Identical to the chlorine page — same functions, same constants, same products. The side-effect figures come from the same shared 1.65 / 0.71 / 0.91 / 0.61 constants; the cross-page identity assertion locks them.

  5. Step 5 · sanity check (E1)

    20k gal, CYA 40, FC 2 → SLAM target 16 ppm, ΔFC 14, 12.5% liquid → ~2.24 gallonsper dose. Hold 16 ppm — re-test at sundown, re-dose if it's fallen, until the water clears and holds overnight without backsliding. That's the worked example E1, locked in the build pipeline.

Worked examples — eight common scenarios

Every dose below comes from the shared chlorine engine — same liquidDose / dryDose as the chlorine calculator, just at the CYA-keyed shock target. The cross-page identity assertion locks the side-effects.

Example 1

How much shock for a standard pool (the core SLAM case)

20,000 gal · CYA 40 · current FC 2 · 12.5% liquid

2.24 gal (≈287 fl oz)

SLAM target 16 ppm = 40% × CYA 40. ΔFC 14.

Hold 16 ppm — retest, re-dose as it drops, until the water's clear and holds overnight. A campaign, not a single pour.

Example 2

Same shock, cal-hypo (the calcium cost)

Same pool / target · 65% cal-hypo

3.59 lb (≈57.5 oz)

Adds ~9.9 ppm calcium hardness per dose. Over a multi-day SLAM with cal-hypo, that piles up.

Cal-hypo works, but watch CH if you SLAM with it repeatedly — links to the calcium calculator.

Example 3

The high-CYA trap (the integrity example)

20,000 gal · CYA 100 · FC 2 · 12.5% liquid

6.08 gal per dose, held for days

SLAM target 40 ppm; ΔFC 38. The honest move: drain to bring CYA down to ~40 first, then SLAM at 16 ppm — about a third of the chlorine, and it actually clears.

If your CYA is 100 and your pool is green, more chlorine isn't the answer — less stabilizer is. Drain first.

cyanuric acid calculator (the drain math)

Example 4

Breakpoint — killing the chlorine smell

20,000 gal · current FC 3 · CC 0.5 · 12.5% liquid

0.80 gal · single push to 8 ppm

Breakpoint target = current FC + 10 × CC = 3 + 5 = 8 ppm. One dose, not a campaign.

That sharp chlorine smell is UNDER-chlorination — combined chlorine. The fix is one big breakpoint push, not less chlorine.

Example 5

Hot tub / spa shock (small, fresh, low-CYA)

400-gal spa · CYA 0 · FC 0 · dichlor 55.5%

0.06 lb (≈1.0 oz)

SLAM target hits the 10-ppm floor at CYA 0 (no stabilizer to key off). Dichlor is fine here because the spa is drained often, so the CYA it adds doesn't accumulate.

At CYA 0 the conventional ~10 ppm IS the right shock — this is the CYA-keying thesis holding at the boundary, not an exception to it.

Example 6

Pool shock calculator in litres (metric)

50 m³ = 50,000 L (≈13,209 gal) · CYA 50 · FC 3 · 12.5% liquid

1.80 gal (≈6.8 L)

SLAM target 20 ppm; ΔFC 17. If you'd chosen dichlor at this scale, you'd add 15.5 ppm CYA per dose (from the imported 0.91 constant — every dichlor-CYA figure on this page is engine-derived).

Metric is cleaner, the SLAM logic is identical — target is still 40% of CYA.

Example 7

Why “shock to 10 ppm” fails at high CYA (the wedge, worked)

CYA 80 pool

Real SLAM = 32 ppm; the clone's 10 ppm is 22 ppm BELOW

At CYA 80 the normal MIN FC is ~6 and the normal target is ~9; "shock to 10 ppm" is barely above maintenance — it does nothing to the algae.

A fixed shock number isn't just imprecise at high CYA — it's INEFFECTIVE. This is why every dose on this page starts with your CYA.

Example 8

Opening a pool (cold, unknown, post-winter)

Spring open · 20k gal · CYA tested at 30 · FC 0 · cloudy

1.92 gal at SLAM 12 ppm

SLAM target 12 ppm = 40% × CYA 30. Start the campaign at the CYA-keyed level; if CYA tests higher after the cover comes off, the target rises with it.

Open with a CYA test, not a guess — the shock target follows the stabilizer, and a winter under a cover can leave it anywhere.

Reference tables

Three crawlable tables, CC BY 4.0. Every cell renders from the shared chlorine engine — no static numbers, no disagreement with the chlorine page possible.

T1 · SLAM shock target by CYA

The wedge as data. SLAM = 40% × CYA. The clone's “10 ppm” column shows where the fixed advice falls; flagged rows are where it's BELOW the real shock zone.

CYA (ppm)Normal targetSLAM targetClone's “10 ppm”
202.51010
303.51210 below SLAM ✗
5062010 below SLAM ✗
8093210 below SLAM ✗
10011.54010 below SLAM ✗
120144810 below SLAM ✗

T2 · Liquid chlorine shock dose (fl oz of 12.5% liquid)

Identical to the chlorine calculator's dose table by construction — both call the same liquidDose() function. Shock just uses a higher ΔFC.

Pool size (gal)ΔFC 10ΔFC 15ΔFC 20ΔFC 25ΔFC 30
5,0005177102128154
10,000102154205256307
15,000154230307384461
20,000205307410512614
25,000256384512640768

T3 · Side-effects at a 30-ppm shock

From the shared constants — these figures are identical to the chlorine and calcium pages' for the same ΔFC, and the build pipeline asserts the identity.

ProductSide effectPer ppm FCPer 30 ppm shock
Liquid (sodium hypochlorite)salt+1.65 ppm+49.5 ppm
Cal-hypocalcium hardness+0.71 ppm+21.3 ppm
Dichlorcyanuric acid+0.91 ppm+27.3 ppm
TrichlorN/A — not a shock productslow-dissolving tablets cannot deliver a fast shock

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

Sources & methodology

The shortest methodology on the site — by design. Shock IS chlorine dosing at a high CYA-keyed target; almost everything inherits from the chlorine page.

Dose math. The same chlorine engine the chlorine calculator uses, called with a higher ΔFC. Liquid dose math: gallons = ΔFC × (gallons ÷ 10,000) ÷ trade-percent. Dry (cal-hypo, dichlor) dose math: pounds = ΔFC × gal × 8.345 × 10⁻⁶ ÷ available-Cl fraction. Identical functions, identical constants. The build pipeline asserts that the shock page's side-effect figures equal the chlorine engine's output for the same ΔFC — the cross-page identity is locked at 0.0001 tolerance.

SLAM target. The 40%-of-CYA rule is the Trouble Free Pool SLAM method, reconciled to the FC/CYA equilibria the chlorine page already uses (the cya.ts engine — same cyaToFcTargetsfunction drives the “normal target” column in T1). Labelled as derived practice; the chemistry justification (cyanurate binding chlorine and lowering effective FC) is the chlorine page's CyaShield explainer pointed at shock.

Breakpoint.Classic breakpoint chlorination: FC ≈ 10 × combined chlorine above current to oxidize chloramines in a single push. Convention; the 10× factor is the standard one. The minimum 5-ppm push floor handles the “tiny CC” case sensibly.

Side-effect figures. Same shared constants the chlorine and calcium pages use: LIQUID_CL_SALT_PPM_PER_FC = 1.65, CALHYPO_CH_PPM_PER_PPM_FC = 0.71, DICHLOR_CYA_PPM_PER_PPM_FC = 0.91, TRICHLOR_CYA_PPM_PER_PPM_FC = 0.61. All imported from lib/dosing/chemicals.ts, never re-typed. Every dichlor-CYA figure on the page is computed from the shipped 0.91 constant — the rounded “~0.9” some sources quote does not appear on this page.

The honesty paragraph (shock edition)

No fixed-number shock. Every shock target on this page is computed from the user's CYA (or CC). The conventional “10 ppm” appears in two places only: the ShockLadder visual (as the WRONG answer for contrast) and the T1 reference table (with a flag column showing where it falls below the real shock zone). The CYA-0 boundary case lands at the 10-ppm SLAM floor — same rule, evaluated at zero CYA. Trichlor is NOT a shock product (slow tablet, dumps CYA) — the product chip is disabled with the disqualification visible. Swim-wait is by test, not clock — we don't print a fabricated “wait 24 hours”; we say swim when FC tests back to the normal target (derived from the user's CYA, via the same cyaToFcTargets the chlorine page uses). And at high CYA the calculator leads with the drain recommendation — never quotes the heroic dose alone.

Post-shock rebalance. A SLAM doses heavily and the side-effects matter for the rest of your chemistry. After clearing, run your numbers through the LSI calculator — particularly if you used cal-hypo (calcium added) or dichlor (CYA added). The cluster routes back to the diagnostic that combines them.

Frequently asked questions

How much shock does my pool need?
Keyed to your CYA, not a fixed number. The SLAM target is 40% × CYA — so at CYA 30 it's 12 ppm, at CYA 80 it's 32ppm. The calculator above does the engine math for your gallons and your product. The conventional “shock to 10 ppm” is the wrong answer at any meaningful CYA.
Why isn't “shock to 10 ppm” enough for my pool?
Because cyanuric acid binds chlorine. At CYA 80 the normal FC maintenance target is already around 9 ppm — “shock to 10” is barely above where you keep the pool day-to-day, never mind enough to kill algae. The real SLAM at CYA 80 is 32ppm. The fixed-number advice isn't just imprecise at high CYA, it's ineffective.
My pool is green — how much shock for algae?
SLAM at 40% of your CYA, held over multiple days. It's a campaign, not a single dose. Re-test at sundown, re-dose if FC has dropped, until the water's clear and stays clear overnight. Brushing and filter-running help, but the chemistry is FC held high enough long enough to kill what's in there.
My CYA is really high and shock isn't working — what do I do?
Drain. At CYA 100+, the SLAM target is 40+ ppm and you have to hold it for days — heroic chlorine, and a slower clear than just bringing CYA down first. The cyanuric acid calculator gives you the exact partial-drain math (e.g. swap 50% of the water to halve CYA), then shock at a sane SLAM target — about a third of the chlorine, and it actually clears. The honest answer at high CYA is dilution, not more chemistry.
My pool smells strongly of chlorine — do I need less chlorine?
No — MORE. The sharp “chlorine” smell is chloramines (combined chlorine), which is what you smell when chlorine has reacted with organics but hasn't had enough oxidizing power to break them. The fix is a breakpoint shock — FC pushed to about 10× the combined chlorine — that destroys the chloramines in one go. Backing off chlorine when you smell it is exactly backwards.
What's the best chlorine to shock with?
Liquid chlorine is the cleanest — no CYA added, no calcium added, just a little salt. Cal-hypo works but dumps calcium hardness at scale. Dichlor adds CYA and deepens the high-CYA trap (avoid if your CYA is already ≥ 50). Trichlor isn't a shock product at all — slow tablets that can't deliver a fast push and dump CYA. The product chips in the calculator above default to liquid for that reason.
How long after shocking can I swim?
Test, don't time.Swim when FC has dropped back to your normal target (which is keyed to your CYA — the chlorine page's FC/CYA target band). For an outdoor pool that's usually the next day, but the test is the answer, not a fixed number of hours. We don't fabricate a “wait 24 hours”: time depends on sun, CYA, and how big a shock you laid in.
When should I shock — and how often?
Dose at dusk. UV burns off free chlorine fast — shocking in the evening lets the high FC work overnight instead of being destroyed by the sun. Frequency depends on what you're fighting: SLAM is held until the algae's gone (could be 2–7 days); breakpoint is a one-shot when chloramines climb. Routine pool maintenance isn't shocking. Daily dosing keeps the pool clear; shocking is the campaign you launch when something went wrong.

Related calculators

Related across clusters: Pool Pump Run Time Calculator, Pool Filter Size Calculator.

All Pool Chemistry calculators: browse the hub.