Why a slab can look dry and still fail a coating

A concrete slab can pass every visual check a homeowner knows to run. No standing water. No dark patches. No smell. And it can still be holding enough moisture inside it to blister an epoxy floor six months after installation or turn a fresh sealer cloudy the first warm week it sees.

That’s the part that trips people up. Moisture in concrete doesn’t behave like moisture on a countertop. It moves through the slab as vapor, driven by whatever’s underneath and around it, long after the surface feels bone dry to a hand. The test that catches this reads conditions inside the concrete, not just what’s visible on top of it, and even then the standard governing the most common version of that test says plainly that a result only represents the spot tested at the moment it was tested. One reading tells you about one location, one day. That’s not a knock on the test. It’s the reason contractors who take slab prep seriously test more than one spot and don’t treat a single number as a lifetime guarantee.

Where slab moisture actually comes from

Before any test makes sense, it helps to know what it’s actually looking for. Concrete moisture doesn’t have one source. It has several, and they behave differently.

Some moisture has been in the slab from the start. The water used to mix the concrete never fully leaves; new slabs can take months to reach a stable internal moisture level, and older slabs poured without a vapor retarder underneath them stay connected to whatever moisture sits in the ground below.

Some moisture gets in after the fact. Rain and irrigation running toward a slab instead of away from it, a slow plumbing leak under a garage floor, hydrostatic pressure pushing groundwater up through the concrete, a planter bed built against an exterior wall that keeps the soil beside it wet. All of it can end up inside the slab even though none of it is visible from above.

And some moisture comes from the air itself. Humidity condensing on a slab that’s cooler than the dew point, cleaning or prep water that hasn’t fully evaporated before coating starts, even routine mopping. These can sit right at the surface and mimic a deeper moisture problem without actually being one. Separating “moisture in the air right now” from “moisture that lives in the concrete” is most of what a real test is doing.

A homeowner can catch some of this without any equipment. A slab that stays noticeably darker than the surrounding concrete after the rest has dried, a musty smell coming up from a garage floor, carpet or flooring that’s failed in the same spot more than once. Those are worth mentioning to a contractor before work starts. What a homeowner can’t do is turn those observations into a number a coating manufacturer will stand behind. That part takes an actual test, run and read correctly.

The tests, and what each one actually measures

Here’s where most of the confusion starts, because “moisture test” isn’t one thing. There are several distinct methods, they answer different questions, and none of them is a drop-in substitute for another. A contractor who says “I checked the moisture” should be able to tell you which of these they ran and why.

In-situ RH probes (ASTM F2170)

This test measures relative humidity from inside the slab itself, not the surface. A small hole gets drilled to 40% of the slab’s depth, a probe gets sealed into it, and the reading is left to stabilize, typically at least 24 hours, before it’s trusted. That depth isn’t arbitrary. Testing at 40% depth is meant to approximate what the slab’s moisture condition will settle to once it’s sealed under a coating, since a covered slab redistributes its internal moisture over time. Of the common tests, this one gives the clearest picture of what’s actually happening inside the concrete, which is why manufacturers of moisture-sensitive systems tend to specify it.

Calcium chloride test (ASTM F1869)

This one measures something different: the rate of moisture vapor coming off the bare surface of the concrete, expressed as pounds of vapor per 1,000 square feet over 24 hours. A small dish of anhydrous calcium chloride salt goes under a sealed dome on the slab, and the weight it gains over roughly 60 to 72 hours becomes the reading. It has to be run on bare, uncoated concrete. The standard explicitly excludes using it over an existing coating, a patch, a leveling compound, or lightweight aggregate concrete. It’s a snapshot of surface emission at the time of the test, not an internal humidity profile.

Plastic sheet test (ASTM D4263)

This is the simplest of the group and the least precise. A section of clear plastic gets taped down over the concrete and left in place for a minimum of 16 hours. If moisture shows up as condensation on the underside of the sheet, or the concrete darkens beneath it, that’s a visible sign that capillary moisture or condensation is present. It’s a useful early screening step, cheap to run and easy to show a homeowner, but it’s qualitative. It tells you moisture is there, not how much, and it doesn’t replace an RH or calcium chloride reading when a manufacturer’s spec calls for one of those instead.

Handheld meters and hydrostatic pressure

A handheld moisture meter is genuinely useful for one thing: comparing relative differences across a floor to find wet spots worth investigating further. It’s a mapping tool, not a pass/fail instrument, and treating a meter reading as the final answer is one of the more common shortcuts that leads to a coating failure down the road. Hydrostatic pressure is its own separate condition entirely: actual liquid water pushing against or through the slab from below, which is not the same thing as a high humidity reading. A slab can have elevated RH without hydrostatic pressure, or the reverse, and a coating rated to tolerate one doesn’t automatically tolerate the other.

Why there’s no universal “safe” moisture number

People ask for a single number: what RH percentage is safe for epoxy, what MVER reading is fine for a sealer. There isn’t one, and that’s not a dodge. The acceptable limit belongs to the specific product going down on the slab, not to concrete in general. A standard residential epoxy system and a specialized moisture-barrier epoxy built to handle high-RH slabs can carry very different published limits from the same manufacturer’s own catalog. Reading a test result against the wrong product’s spec sheet, or against no spec sheet at all, is how a technically passing slab still ends up with a failed coating.

This is also why “what’s the acceptable moisture level for concrete” doesn’t have a one-line answer anywhere reliable. The honest version is: acceptable according to which product’s technical data sheet. A number without that context isn’t wrong exactly, it’s just not attached to anything yet.

Vapor retarder vs. moisture mitigation: two different things

These get used interchangeably and shouldn’t be. A vapor retarder is a layer installed under a slab during construction, before the concrete is ever poured, meant to block ground moisture from moving up into it long-term. Moisture mitigation is something else entirely: an applied topical system, installed after the fact on an existing slab, that requires its own testing, its own surface prep, a specified thickness, and full coverage with no gaps. Having a vapor retarder under a slab doesn’t mean mitigation is unnecessary if a test comes back high, and mitigation isn’t something you get by adding one extra coat of a regular product. It’s a different system with its own rules.

Moisture-tolerant doesn’t mean moisture-proof

Some coatings are formulated to tolerate a certain amount of moisture vapor without failing, and that’s real and useful. It is not the same as tolerating standing water, active hydrostatic pressure, a plumbing leak, or a saturated slab with nowhere for water to drain. A product rated for elevated RH is still not a waterproofing membrane, and treating it like one is a good way to void a warranty and end up back where you started.

Metallic epoxy garage floor finish, the kind of result that depends on a slab passing moisture testing first

Why Orange County mornings matter more than the forecast

A lot of homeowners here check the weather app and see no rain in the forecast and assume the slab is fine. That’s not always true near the coast. Orange County’s marine layer, the fog and low cloud that rolls in overnight and often burns off by mid-morning, keeps the air right at the surface damp for hours, even on a day that ends up clear and dry. NOAA describes this as a coastal temperature-inversion pattern that can persist through the morning, and it doesn’t need to produce measurable rainfall to leave a slab surface colder and wetter than it looks.

That matters because coatings care about dew point, not just humidity. If a slab’s surface temperature drops to or below the dew point, moisture condenses directly onto the concrete, even without visible fog sitting on it. For a curing epoxy, that condensation can mix into the resin during cure and pull the amine hardener to the surface in a hazy, waxy film, a defect called amine blush that ruins the bond for the next coat. It’s the same underlying mechanism behind a sealer that goes cloudy after it’s applied over a slab that seemed dry: moisture trapped at or near the surface interferes with how the film cures. That specific failure and its causes get their own full breakdown on the concrete sealing page; the short version is that it’s rarely the product’s fault.

What a moisture problem looks like after the coating’s already down

Skipping this step doesn’t always show up right away, which is part of why it gets skipped. When it does show up, it tends to look like one of a few things. Blisters that form weeks or months after installation, especially ones filled with liquid rather than air, usually point back to moisture pushing up from underneath rather than an application mistake. That’s a different repair conversation than a bubble that formed during application. A clear sealer gone cloudy or milky is most often trapped moisture, not a bad batch of product. And a white, powdery residue on the surface, known as efflorescence, is water carrying dissolved salts up through the concrete and leaving them behind as it evaporates. Wiping it off without addressing where the water’s coming from just brings it back.

What this means before you coat, seal, or resurface anything

None of this means every slab has a moisture problem or that every project needs an in-situ RH test run to the letter of ASTM F2170. It means the step shouldn’t get skipped, and it means asking a straightforward set of questions before work starts: which test method is actually being used, what moisture limit the specific product being installed requires, and how that limit compares to what the slab tests at. A contractor who can answer those three questions plainly is doing the diagnostic work first instead of guessing and hoping the slab cooperates.

If you’re weighing a garage or interior floor coating, the epoxy flooring page covers what a slab needs to pass before a coating goes down. If the question is closer to protecting a driveway, patio, or existing concrete surface rather than coating it, concrete sealing walks through how penetrating and film-forming sealers handle moisture differently.