Soap Lye Calculator

Lye and water for cold-process soap from your oils and superfat.

About this tool

Add each oil or fat with its weight in grams, choose sodium hydroxide (bars) or potassium hydroxide (liquid soap), and set the superfat and lye concentration. The tool calculates the lye and water, the water-to-lye ratio and the batch weight.

How lye amounts are calculated

Soap forms when lye reacts with the fatty acids in oils (saponification). Each oil needs a specific amount of lye to fully saponify, its SAP value: about 0.135 g of sodium hydroxide per gram for olive oil, 0.183 for coconut oil and 0.128 for shea butter. The recipe's lye is the sum of each oil's weight ร— its SAP value, so 500 g olive, 300 g coconut and 200 g shea need about 148 g of NaOH. Soapmakers then superfat, reducing the lye by 5โ€“8% so some oil stays free. That gives a gentler bar and a safety margin: 140.6 g at 5%. Water is set by lye concentration, typically 28โ€“40%. At 33% this recipe uses about 285 g of water, a water:lye ratio of about 2:1. For liquid soap, potassium hydroxide needs about 1.4 times as much by weight. Honest limits: SAP values are common published averages and individual oils vary, so always cross-check your recipe in a second soap calculator and weigh accurately. Lye is highly caustic: wear goggles and gloves, work with ventilation, keep children and pets away, and always add lye to water, never water to lye. The candle making calculator and the percentage calculator are related.

Frequently asked questions

How much lye do I need for soap?

Multiply each oil's weight by its SAP value, add them up, then reduce by your superfat percentage.

What is superfat in soap making?

Using slightly less lye than needed so 5 to 8% of the oils remain free, for a milder bar.

What is a good lye concentration?

Typically 28 to 40%; 33% is a common starting point.

Is NaOH or KOH used for liquid soap?

KOH (potassium hydroxide) for liquid soap; NaOH (sodium hydroxide) for bars.

Is my data sent anywhere?

No. Everything is calculated in your browser, and nothing is stored or sent.