Ask ten soap makers about lye safety and you'll get the same answer ten times: goggles on, add lye to water, never the reverse, do the zap test, superfat at 5% and call it a day. It's decent advice. For bath soap.

The problem is that a huge number of shampoo bar manufacturers are running the exact same playbook, unmodified, on a product that behaves completely differently once it hits hair instead of skin. Nobody seems to be asking why that's a problem, so let's ask it.

Wait, Are We Even Talking About the Same Bar?

Before we get into alkalinity, there's a basic mix-up that needs clearing up. Half the content out there about "shampoo bar lye" doesn't bother distinguishing between two very different products.

  • True soap-based shampoo bars - saponified oils and butters using NaOH, chemically identical to bath soap, just formulated with different oils and a hair-friendly ratio.
  • Syndet bars - surfactant-based formulas (think SCI, SLSa, cocoyl isethionate) that get pressed or extruded into shape. No lye touches these, at any point.

If you're making syndet bars, words like "superfat" and "lye discount" have no business in your documentation. Using that language implies a saponification step that never happened, and that's the kind of inconsistency that gets flagged during a regulatory review.

If you're making true soap-based bars, the terminology isn't the issue. The issue is that most formulators are still calculating their alkalinity margins as if hair were just another patch of skin. It's not, and treating it that way is where things start to go sideways.

Hair Can't Buffer Itself - And That Should Change Your Math

Skin sits at a surface pH of roughly 4.7 to 5.5, and it re-buffers on its own after contact with something alkaline. Hair keratin has an isoelectric point closer to 3.67, and here's the part that matters: hair has no metabolic mechanism to correct itself. Once the cuticle gets lifted by alkaline exposure - generally anything above pH 7.5 to 8 - it stays lifted until something mechanically or chemically closes it back up.

A soap bar sitting at pH 9 to 10, which is completely normal even with a textbook superfat, causes a few things to happen:

  • The cuticle lifts, which means more friction and more mechanical damage every time you towel-dry or brush
  • Repeated exposure slowly breaks down surface disulfide bonds - not from one wash, but from the accumulation of daily use over weeks
  • Porosity climbs, which feels like extra absorbency in the moment but actually leads to faster moisture loss and quicker color fade down the line

Here's the part that gets missed constantly: a 5% superfat that's completely fine for a bar of soap you use once and rinse off your hands is not automatically fine for something applied to hair every single day. The safety margin needs to account for cumulative exposure, not a single brush with skin.

So what's the actual fix? For true soap-based shampoo bars, bump your superfat to 8 to 10%, not the standard 5% you'd use for a bath bar. This isn't playing it safe for the sake of it - it's a formulation decision grounded in the fact that you're cleansing a completely different kind of surface.

Can We Please Stop Using the Zap Test?

Touching a bar of soap to your tongue to check for that telltale lye "zing" is quick, it's free, and it tells you almost nothing useful. It cannot pick up on free alkalinity at the levels that are still perfectly capable of damaging hair over time. Your tongue's pain receptors and hair keratin's damage threshold simply aren't calibrated to the same scale. For a commercial operation, leaning on this as your quality control method is a gap you really don't want to have to explain later.

What should you be doing instead? Titrating. It sounds intimidating, but it's a simple method adapted from AOCS Cc 13a-43, and it takes about five minutes:

  1. Dissolve a known weight of soap (5g works well) in neutral, lye-free ethanol or isopropanol with a bit of gentle heat
  2. Add 2 to 3 drops of phenolphthalein indicator
  3. Titrate with 0.1N HCl until the pink color disappears and stays gone for a full 30 seconds
  4. Calculate your percent free alkali as NaOH using the titrant volume and normality

Your target for shampoo bars specifically should be free alkalinity under 0.1%, which is noticeably tighter than the 0.05 to 0.3% range that's generally accepted for bath soap. Why tighter? Because hair doesn't have skin's buffering capacity to fall back on if you get it wrong.

You're Probably Asking the Wrong Question About NaOH vs. KOH

Most of the NaOH-versus-KOH discussion revolves around bar hardness. NaOH gives you a solid bar, KOH gives you liquid soap, end of story. True enough, but that framing skips over the more useful question for shampoo bars: how cleanly does the finished soap rinse off hair compared to skin?

KOH-based soap is more water-soluble, which means it clears hair strands more thoroughly. This actually matters a lot, because that "waxy film" complaint that shows up constantly with soap-based shampoo bars is really a calcium soap scum issue - worse in hard water, and worse when the base soap doesn't rinse away as completely as it should.

Here's a blend worth testing that most artisan formulators never touch: 85 to 90% NaOH combined with 10 to 15% KOH. This gets you:

  • A bar firm enough to hold its shape through 60-plus washes (straight KOH is too soft and pasty to work as a bar)
  • Noticeably better rinse clearance from hair than 100% NaOH gives you, without going all the way to a liquid soap format

One important caveat here: run your lye calculator using the actual blend you're working with, not a straight NaOH figure, and re-titrate the finished bar afterward. Mixed-hydroxide saponification doesn't just average out neatly between the two reactions - verify it, don't assume it.

Those Published SAP Values? Take Them With a Grain of Salt

SAP tables hold up reasonably well for the usual suspects - coconut, olive, palm, castor. These are the workhorses of bath soap, and their SAP values are well-documented. But shampoo bar formulators are increasingly reaching for specialty butters like murumuru, tucuma, babassu, and mango specifically because of what they do for hair. And the published SAP values for these butters are often averages pulled from small, dated sample sets, sometimes off by 5 to 8%.

That might not sound like much until you run the numbers. An 8% SAP error on a butter that makes up 20% of your oil phase can shift your actual free alkalinity from a comfortable 0.08% to a genuinely problematic 0.4% - without you changing a single line of your recipe.

If a specialty butter makes up more than 15% of your oil phase, it's worth titrating your own SAP value using the AOCS Cd 3-25 method rather than taking the supplier's spec sheet at face value. It's an afternoon of extra lab work, and it can save you from a batch-wide alkalinity problem you'd otherwise only discover once customers start complaining.

What Should Actually Be in Your Batch Record

"We ran it through a lye calculator and superfatted at 5%" isn't documentation - it's an intention. It describes what you meant to happen, not what actually happened. For a defensible batch record on a soap-based shampoo bar, you want:

  • The SAP values used, along with their source - supplier data or your own titration
  • Calculated lye weight versus actual weight used (a good scale calibration check)
  • The free alkalinity titration result for that specific batch, not a generic figure from the recipe
  • The pH of a 1% dilution, which mirrors real-world shower conditions far better than testing the bar's surface directly
  • A retained sample, kept for at least 12 months

That dilution test matters more than people realize. A bar's surface pH can read differently because of soda ash, a surface carbonation effect that has nothing to do with the bar's actual alkalinity once it's wet and in use. Test the surface alone and you might get a false sense of security, or a false alarm that sends you chasing a problem that isn't really there.

Where This Leaves Us

Shampoo bar formulators largely inherited their lye protocols from bath soap making without stopping to adjust for one basic fact: hair has no buffering capacity, no ability to repair itself, and it faces cumulative exposure rather than a single brush with alkalinity. Tighten up your free alkalinity target, titrate instead of taste-testing, verify your SAP values on specialty butters, and consider working in a small KOH fraction for better rinse performance.

None of this calls for exotic chemistry or a research budget. It's standard analytical soap science that's been sitting in the bath soap world for decades - the shampoo bar side of the industry has just been slow to borrow it.