Sort

Name

Creamy

Hard

Bubbly

Long Life

Conditioning

Cleansing

Add Oils/Fats to Recipe

  • i  ${ oil.name } +
    ${ sortOilsByLabel } ${ oil[sortOilsBy] }%
  • No Results Found

Lye/Soap Type

98% NaOH Purity and 90% KOH Purity Recommended


Weight/Units

Use Percentages of Total Weight

Water


Superfat

0% ${ n }%

Additional

Liquid Soap Methods

Catharine Failor Method
Use Boric Acid
Use Borax

Set Preferences

Preferences Not Set!

You have not updated your preferences. We've choosen the default for a solid bar soap. If you think they look good, click below. Otherwise start editing the preferencesediting the preferences or select a basic template below to clear this message.

Add Oils

No Oils Yet!

After setting your recipe preferences, click add new oil to start adding.

Added Oils

After updating ingredients/amounts below, click the recipe tab above to see final recipe. Give your recipe a title and instructions by swiping right and tapping "Instructions" tab.

After confirming your ingredients and amounts below, click the recipe tab to see final suggested ingredients. Click other tabs to see properties & add personal instructions for your recipe.



There are no ingredients in your soap recipe yet. Click an oil in the list to the leftClick "Oil" from the menu above to add an oil to the recipe.

  ${ oil.name }

${ oil.name } Properties

Recipe Properties

${ totalPercent() | formatNumber }% (Total)

Total percent must equal 100%


Total weight: ${ oilWeights | formatNumber } ${ unit.name }(s)    Resize Batch

${ unit.name }(s) Rebatch

Custom Ingredients

Additives, etc



There are no additional ingredients in your soap recipe yet. Click the add button to add custom ingredients.




Needed Ingredients

Swipe on table to see all values

Ingredient Gram(s) G Ounce(s) Oz Pounds(s) Lb Oil % Oil %
${ oil.name } ${ ((usePercentage ? useOilWeight * oil.amount/100 : oil.amount) / units.gram.adjustment * unit.adjustment) | formatNumber } ${ ((usePercentage ? useOilWeight * oil.amount/100 : oil.amount) / units.ounce.adjustment * unit.adjustment) | formatNumber } ${ ((usePercentage ? useOilWeight * oil.amount/100 : oil.amount) / units.pound.adjustment * unit.adjustment) | formatNumber } ${ (usePercentage ? oil.amount : ((oil.amount / oilWeights) * 100)) | formatNumber }%
Ingredient Gram(s) G Ounce(s) Oz Pounds(s) Lb Batch % Batch %
Lye - ${ lye.sapName } ${ lyePercentage }% Purity (${ superfatPercentage }% Superfat) ${ (maxLye * (1-(superfatPercentage/100)) / (units.gram.adjustment / unit.adjustment)) | formatNumber } ${ (maxLye * (1-(superfatPercentage/100)) / (units.ounce.adjustment / unit.adjustment)) | formatNumber } ${ (maxLye * (1-(superfatPercentage/100)) / (units.pound.adjustment / unit.adjustment)) | formatNumber } ${ (maxLye * (1-(superfatPercentage/100))) / lyeWaterOilWeight * 100 | formatNumber }%
NaOH (${ superfatPercentage }% Superfat) ${ (naohMax * (1-(superfatPercentage/100)) / (units.gram.adjustment / unit.adjustment)) | formatNumber } ${ (naohMax * (1-(superfatPercentage/100)) / (units.ounce.adjustment / unit.adjustment)) | formatNumber } ${ (naohMax * (1-(superfatPercentage/100)) / (units.pound.adjustment / unit.adjustment)) | formatNumber } ${ (naohMax * (1-(superfatPercentage/100))) / lyeWaterOilWeight * 100 | formatNumber }%
KOH (${ superfatPercentage }% Superfat) ${ (kohMax * (1-(superfatPercentage/100)) / (units.gram.adjustment / unit.adjustment)) | formatNumber } ${ (kohMax * (1-(superfatPercentage/100)) / (units.ounce.adjustment / unit.adjustment)) | formatNumber } ${ (kohMax * (1-(superfatPercentage/100)) / (units.pound.adjustment / unit.adjustment)) | formatNumber } ${ (kohMax * (1-(superfatPercentage/100))) / lyeWaterOilWeight * 100 | formatNumber }%
Lye - ${ lye.sapName } (0% Superfat + 10% Excess Lye) ${ (maxLye / (units.gram.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (maxLye / (units.ounce.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (maxLye / (units.pound.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (maxLye) * 1.1 / lyeWaterOilWeight * 100 | formatNumber }%
NaOH (0% Superfat + 10% Excess Lye) ${ (naohMax / (units.gram.adjustment / unit.adjustment)) * 1.1| formatNumber } ${ (naohMax / (units.ounce.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (naohMax / (units.pound.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (naohMax) * 1.1 / lyeWaterOilWeight * 100 | formatNumber }%
KOH (0% Superfat + 10% Excess Lye) ${ (kohMax / (units.gram.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (kohMax / (units.ounce.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (kohMax / (units.pound.adjustment / unit.adjustment)) * 1.1 | formatNumber } ${ (kohMax) * 1.1 / lyeWaterOilWeight * 100 | formatNumber }%
Boric Acid (20% of Solution) Borax (33% of Solution) ${ (lyeWaterOilWeight * 0.046875 * boric.properties.concentrations[boric.type]) / units.gram.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * boric.properties.concentrations[boric.type]) / units.ounce.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * boric.properties.concentrations[boric.type]) / units.pound.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * boric.properties.concentrations[boric.type]) / lyeWaterOilWeight * 100 | formatNumber }%
Water for Boric Acid Solution (80% of Solution) Water for Borax Solution (67% of Solution) ${ (lyeWaterOilWeight * 0.046875 * (1 - boric.properties.concentrations[boric.type])) / units.gram.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * (1 - boric.properties.concentrations[boric.type])) / units.ounce.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * (1 - boric.properties.concentrations[boric.type])) / units.pound.adjustment * unit.adjustment | formatNumber } ${ (lyeWaterOilWeight * 0.046875 * (1 - boric.properties.concentrations[boric.type])) / lyeWaterOilWeight * 100 | formatNumber }%
Batch Water (At ${ waterOilPercent } % of Oil Weight)
Includes ${ waterDiscount }% Water Discount
${ ((oilWeights * (waterOilPercent/100)) / units.gram.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ ((oilWeights * (waterOilPercent/100)) / units.ounce.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ ((oilWeights * (waterOilPercent/100)) / units.pound.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ ((oilWeights * (waterOilPercent/100)) / (1-waterDiscount/100) / lyeWaterOilWeight) * 100 | formatNumber }%
Water (${ waterLyeRatio }:1 Ratio) ${ ((maxLye * waterLyeRatio) / units.gram.adjustment * unit.adjustment) * (1-waterDiscount/100) * (1-superfatPercentage/100) | formatNumber } ${ ((maxLye * waterLyeRatio) / units.ounce.adjustment * unit.adjustment) * (1-waterDiscount/100) * (1-superfatPercentage/100) | formatNumber } ${ ((maxLye * waterLyeRatio) / units.pound.adjustment * unit.adjustment) * (1-waterDiscount/100) * (1-superfatPercentage/100) | formatNumber } ${ ((maxLye * waterLyeRatio) / lyeWaterOilWeight) * 100 | formatNumber }
Water (${ lyeToSolutionPercent }% Lye + ${ 100 - lyeToSolutionPercent }% Water Solution) ${ ((maxLye * ((100 - lyeToSolutionPercent) / lyeToSolutionPercent)) * (1-superfatPercentage/100) / units.gram.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ ((maxLye * ((100 - lyeToSolutionPercent) / lyeToSolutionPercent)) * (1-superfatPercentage/100) / units.ounce.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ ((maxLye * ((100 - lyeToSolutionPercent) / lyeToSolutionPercent)) * (1-superfatPercentage/100) / units.pound.adjustment * unit.adjustment) * (1-waterDiscount/100) | formatNumber } ${ (((maxLye * ((100 - lyeToSolutionPercent) / lyeToSolutionPercent)) * (1-superfatPercentage/100)) * (1-waterDiscount/100) / lyeWaterOilWeight) * 100 | formatNumber }%
Total Oils ${ (oilWeights / units.gram.adjustment * unit.adjustment) | formatNumber } ${ (oilWeights / units.ounce.adjustment * unit.adjustment) | formatNumber } ${ (oilWeights / units.pound.adjustment * unit.adjustment) | formatNumber } ${ (oilWeights / lyeWaterOilWeight) * 100 | formatNumber }%
Soap Weight (Pre-Cook) ${ lyeWaterOilWeight / units.gram.adjustment * unit.adjustment | formatNumber } ${ lyeWaterOilWeight / units.ounce.adjustment * unit.adjustment | formatNumber } ${ lyeWaterOilWeight / units.pound.adjustment * unit.adjustment | formatNumber } 100%

Recommended Additive Amounts

Swipe on table to see all values

For Advanced Soapmakers

Fatty Acid Profile

Oleic ${ fattyAcids.oleic.total / oilWeights * 100 | formatNumber }%
Linoleic ${ fattyAcids.linoleic.total / oilWeights * 100 | formatNumber }%
Linoleic ${ fattyAcids.linoleic.total / oilWeights * 100 | formatNumber }%
Ricinoleic ${ fattyAcids.ricinoleic.total / oilWeights * 100 | formatNumber }%
Lauric ${ fattyAcids.lauric.total / oilWeights * 100 | formatNumber }%
Myristic ${ fattyAcids.myristic.total / oilWeights * 100 | formatNumber }%
Palmitic ${ fattyAcids.palmitic.total / oilWeights * 100 | formatNumber }%
Stearic ${ fattyAcids.stearic.total / oilWeights * 100 | formatNumber }%

Soap Properties

Highlighted gray ranges represent recommended ranges for each property.


Calculated Values for Oils and Preferences

Superfat % ${ superfatPercentage }%
Saturated ${ saturatedFats | formatNumber } ${ unit.name }(s)
Mono-Unsaturated ${ monoUnsaturatedFats | formatNumber } ${ unit.name }(s)
Poly-Unsaturated ${ polyUnsaturatedFats | formatNumber } ${ unit.name }(s)
Saturated:Unsaturated Ratio ${ ((monoUnsaturatedFats+polyUnsaturatedFats)/fattyAcidTotals*100) | formatNumber }:${ (saturatedFats/fattyAcidTotals*100) | formatNumber }
Lye concentration ${ lyePercentage | formatNumber }%
NaOH Purity ${ naohPurity }%
KOH Purity ${ kohPurity }%
Weight Unit ${ unit.name }(s)
Water Discount % ${ waterDiscount | formatNumber }%
Soap type ${ soapType }

Recipe Title, Instructions & Notes

 Save Recipe to Add Images