Epoxy Garage Floor Bubbles, Pinholes and Fisheyes
You did the prep, mixed carefully, rolled it out beautifully, and came back an hour later to a floor that looked like the surface of a pancake. Here is what happened, how to tell the different defects apart, and how to fix each one without starting over.
Alex Rivers
Home Improvement Editor
Last Updated
September 18, 2026
In This Guide
A bubble in epoxy is a message from underneath. Something down there, air, water or a smear of silicone, did not want to be covered. Read the pattern and it will tell you exactly what.
1. Telling the Defects Apart
People use "bubbles" to describe every surface defect in a fresh epoxy floor, but there are at least four distinct things going on, and each one has a different cause and a different fix. Before you do anything, get down on your knees with a flashlight held low across the floor and look carefully at what you actually have.
Bubbles and Blisters
A true bubble is a raised dome of gas under or in the film. Fresh, it looks like a tiny glass bead sitting on the surface. Burst, it leaves a small crater with a thin raised rim, sometimes with a hole at the centre where the gas escaped. Bubbles range from pinhead size up to a quarter-inch across, and their distribution is the diagnostic clue. Evenly scattered across the whole floor points to outgassing or mixing air. Concentrated in one area points to a local cause, such as a patch of sealer residue, a damp spot or a section coated at a different time of day. A blister is the same thing but bigger and later; a raised area the size of a coin or larger that appears days or weeks after cure is almost always moisture.
Pinholes
Pinholes are open holes the size of a needle point that go right through the film to the concrete. They are not raised. Look at one with a magnifier and you will see a clean, tiny shaft. They usually come in hundreds or thousands across a section, giving the surface a fine speckled appearance in low light. Pinholes are a thin-film problem: the coating was not thick enough to bridge the pores and profile of the concrete, so each pore vented straight up through it.
Fisheyes and Craters
A fisheye is a round, smooth-sided depression where the wet coating has pulled back from a spot, often with a visible dot or speck at the centre. The edges are soft and dished rather than rimmed. They range from a quarter-inch to two inches across and they appear within minutes of application, while the coating is still flowing. Fisheyes are a surface-energy problem, not a gas problem: something on the concrete had a lower surface tension than the epoxy and the epoxy simply refused to sit on it.
Roller Texture and Orange Peel
Not a defect in the same class, but often mistaken for one. A uniform dimpled texture like the skin of an orange, with no open holes, is roller stipple that did not flow out. It comes from a coating that was applied too cold, too thick, or with the wrong nap, or from back-rolling a 100 per cent solids product after it had started to gel. It is cosmetic and a topcoat usually hides it.
2. Outgassing: The Number One Cause
Concrete is not solid. Between 10 and 20 per cent of a typical slab's volume is air-filled pore space, and a freshly ground floor has all of those pores open to the surface. When the slab warms, the air inside expands and has to go somewhere. If the surface is bare, it escapes quietly. If the surface has just been covered with a wet coating, it pushes up into the film and forms a bubble, and if the film has already begun to gel the bubble stays there.
This is why the classic first-timer's bubbling floor was coated on a Saturday morning. The garage door goes up at 8 a.m., the sun comes round, the slab climbs from 60 degrees to 80 over the next four hours, and every pore in the floor spends that time exhaling into the fresh epoxy. The result is a uniform scatter of bubbles across the whole floor, densest where the sun hit the slab directly and near the door, and appearing within the first one to three hours after application.
The temperature of the slab, not the air, is what matters. A garage that faces west can have a slab still warming at 5 p.m. A slab in a shaded north-facing garage may peak by early afternoon. Put an infrared thermometer on the floor at a few points through the day before you coat and you will learn exactly when yours turns over.
Fixing the Timing
The cure is to coat when the slab is cooling, not warming. Late afternoon or early evening in most garages. As the slab cools, the air in the pores contracts and draws the coating gently down into them, which is exactly what you want for adhesion. Installers who work in hot climates sometimes coat at dusk and let the floor cure overnight for precisely this reason. Keep the door closed and the garage out of direct sun for the first several hours, and do not run a heater on the floor.
The Case for a Primer
The other cure is a thin primer coat. A low-viscosity epoxy primer, or the body coat thinned as the manufacturer allows, rolled on thin enough that it soaks into the profile rather than sitting on top of it, will bridge and seal the pores. Any outgassing that happens during the primer cure vents through a film too thin to hold a bubble. When the thick body coat goes on the next day, it is sitting on a sealed surface with nothing underneath to exhale. Most professional systems include a primer for exactly this reason, and it is the single most effective way to prevent outgassing on a porous or freshly ground slab. Our application guide covers how to work the primer in.
3. Moisture Vapour and Osmotic Blisters
Outgassing is air. The other thing that comes up through concrete is water vapour, and it causes a related but more serious problem. A slab on grade with no vapour barrier beneath it, or a damaged one, is constantly passing moisture from the ground up through the concrete and into the garage air. Cover the surface with an impermeable coating and that moisture stops at the bond line.
In the short term it behaves like outgassing: a slab that is still damp from washing or etching will steam gently into the fresh coating and produce bubbles in the first hours. The tell is that the bubbles are worse where the slab was wettest, often near the door where rinse water pooled, and that a plastic-sheet test taped to the bare slab beforehand would have shown condensation.
In the long term the mechanism changes. Vapour pressure builds at the interface between the coating and the concrete, and any water-soluble salts in the slab dissolve into the moisture and create an osmotic gradient that pulls more water toward them. Over weeks and months this forms blisters: raised domes anywhere from a dime to a dinner plate across, sometimes soft, sometimes filled with a cloudy liquid when you cut them open. When they finally let go they take the coating with them, which is why moisture blisters are covered in our guide to epoxy peeling as well as here.
You cannot fix a moisture blister by patching the coating. The moisture is still coming. If the slab tests high, the options are a moisture-mitigating epoxy primer rated for high vapour emission, which costs more than a standard primer but handles most residential slabs, or a breathable coating system rather than a full epoxy. Run a calcium chloride test or at least a 24-hour plastic sheet test before every epoxy job; our moisture test guide walks through both, and it is the one piece of prep people skip that they most regret.
4. Air From Mixing and Rolling
Not every bubble comes from the slab. A surprising number are whipped into the product before it ever touches the floor, and then more are added by the roller.
Drill Mixing
Two-part epoxy has to be mixed thoroughly, and the instinct is to attach a paddle to a drill and run it at full speed for three minutes. That fills the material with thousands of tiny air bubbles, and 100 per cent solids epoxy is thick enough to hold them indefinitely. Roll that out and the air rises to the surface as the coating levels, forming a fine foam of micro-bubbles that cures into a pitted, hazy finish.
Mix at low speed, ideally under 400 rpm, with a proper helical or ribbon paddle that folds the material rather than aerating it. Keep the paddle head below the surface at all times. Scrape the sides and bottom of the bucket, then mix again. Two to three minutes is enough. If the product allows it, let the mixed material stand for a minute or two before pouring so the larger bubbles can rise and break, but on a short pot-life product you will not have that luxury, so get the mixing right instead. Some installers pour the mixed batch into a second clean bucket, which leaves any unmixed material stuck to the sides of the first behind and also releases some air in the pour.
Roller Technique
Rollers add air in three ways. The wrong nap, meaning anything over 1/2 inch on a smooth floor, carries too much material and beats air into it as it turns. A dry roller, one that has been worked until it is barely loaded and then pushed hard, drags air along the surface and leaves a trail of tiny bubbles behind it. And foam rollers, which come in some kits, are the worst offenders of all, because a foam sleeve is essentially a sponge full of air that gets squeezed into the coating with every pass.
Use a lint-free woven roller with a 3/8 inch nap for water-based epoxy and 3/8 or 1/2 inch for back-rolling 100 per cent solids. Keep it loaded. Roll with light, even pressure in one direction, then cross-roll lightly at 90 degrees to level. Do not press. Do not go back over a section that has started to skin. Wrap the roller in painter's tape and peel it before the first dip to pull off loose fibres. Cheap roller sleeves that shed lint produce a different defect, a fuzzy speck cured into the film, that is nearly as ugly.
5. Fisheyes and Craters From Contamination
A fisheye is a coating's way of refusing to touch something. Liquids flow toward surfaces with higher surface energy and away from surfaces with lower. Clean, ground concrete has high surface energy and epoxy wets it out beautifully. A speck of silicone has extremely low surface energy and the epoxy retreats from it like water off a waxed hood, leaving a round crater with the contaminant sitting proud in the middle.
Silicone is everywhere in a garage and it is the most common culprit. Tire shine products are silicone in a spray can and they drift several feet when applied. WD-40 contains silicone and light oil and gets sprayed on everything. Interior protectants, waterproofing sprays for boots and jackets, certain hand lotions, silicone caulk that was smoothed with a finger and wiped on the floor. Even the lubricant on a new roller frame. If any of those have touched the slab in the last year, there is a fisheye waiting.
Oil and grease do the same thing on a coarser scale. A drip of motor oil that soaked in six months ago and was scrubbed off the surface is still in the top quarter-inch of the concrete, and it will bleed back up into the coating as the slab warms. Wax, either from a previous floor finish or from car wax drips, is another. A cluster of fisheyes in one area almost always maps onto where a car used to sit, and specifically to where the tires, engine or exhaust were.
Getting Rid of the Contamination
Grinding removes most surface contamination, which is one more reason it beats acid etching for prep. For oil that has penetrated, a poultice of an alkaline degreaser and absorbent left on overnight, then rinsed and repeated, will lift most of it. Silicone is harder; it does not dissolve in water or most degreasers and often has to be ground out and the area solvent-wiped with acetone or denatured alcohol immediately before coating. Some installers add a small amount of a fisheye eliminator additive to the coating on suspect floors, which lowers the coating's own surface tension and lets it flow over minor contamination. It works, within limits, and should not be relied on as a substitute for cleaning.
6. Pinholes, Solvent Pop and Weather
Pinholes From a Thin Coat Over a Coarse Profile
A freshly ground slab is rough, with peaks and valleys and an open pore at the bottom of most valleys. Roll a 3 to 4 mil water-based epoxy over that and the film is thinner than the profile it is trying to cover. The peaks sit at or above the surface of the coating. Each open pore beneath a valley vents a tiny amount of air as the film cures, and because the film is too thin to hold a bubble the air simply punches a needle-sized hole and leaves it. The result is thousands of pinholes, densest where the grind was coarsest.
The fix is the same as for outgassing: a primer coat first. A thin, low-viscosity primer worked into the profile with a roller, or a squeegee on 100 per cent solids systems, fills the valleys and seals the pores. The body coat then sits on a smoother, sealed surface and has the thickness to bridge whatever remains. A single thin coat straight onto a coarse grind is asking for pinholes, and the thinner the coating the more of them you will get.
Solvent Pop
Solvent-based epoxies and some water-based ones cure from the top down. If the surface skins over before the solvent or water beneath it has evaporated, the trapped vapour eventually forces its way out through the skin and leaves a small crater with a distinctive rough, torn edge. This is solvent pop, and it is caused by applying the coating too thick, applying it in hot, still air that skins the surface fast, or recoating before the first coat has finished releasing its solvent. Apply at the specified thickness, provide gentle air movement without blowing directly on the floor, and respect the recoat window. Our drying time guide gives the intervals.
Temperature and Humidity
Cold slows everything down and makes 100 per cent solids epoxy thick and hard to level, which traps roller bubbles that would otherwise rise and break. Heat speeds the cure and can gel the surface before mixing air has a chance to escape, and it drives outgassing hard. High humidity slows the cure of water-based products and can leave an amine blush, a greasy, waxy film on the surface of some epoxies, which is not a bubble but will cause adhesion problems for the next coat if not washed off. The sweet spot for nearly every product is a slab between 60 and 80 degrees, air humidity below 75 per cent, and a slab temperature at least 5 degrees above the dew point so nothing condenses on the floor while you work.
7. Fixes: Wet, Cured and Full Recoat
What you can do depends entirely on whether the coating is still wet. The window for the easy fixes is short, so check the floor 20 to 30 minutes after each section goes down, not an hour later.
While the Coating Is Still Wet
A spiked roller, the kind sold for self-levelling compounds, rolled gently across the surface will pop most bubbles and let the coating flow closed behind it. Do this within the first 15 to 20 minutes, while the material can still level. On a 100 per cent solids floor, back-rolling with a barely loaded roller does much of the same job and is why the back-roll step exists.
The professional trick is heat. A quick pass with a propane torch, held well above the surface and kept moving at walking pace, momentarily thins the coating and drops its surface tension so trapped bubbles break and the film closes over. Installers do this constantly on 100 per cent solids floors, sweeping the flame in arcs a foot or more above the floor. A heat gun does the same more slowly and more safely. Either way, the rule is to never stop moving. A torch held still for even a second scorches the film, leaves a yellow-brown mark and can ignite solvent vapour. If you have never done it, practise on a piece of cardboard first, and on a solvent-based product do not use an open flame at all.
Fisheyes that appear while the coating is wet can sometimes be closed by working a small amount of fresh material into the crater with a brush. If they reopen, the contamination is still there and they will need to be dealt with after cure.
Once the Coating Has Cured
For scattered bubbles, pinholes or a handful of fisheyes on an otherwise sound floor, sand the affected area with 80 to 120-grit until every bubble is cut open and the surface is uniformly dull, vacuum, wipe with denatured alcohol or the solvent the manufacturer specifies, and let it flash off. For fisheyes, grind the crater and the area around it a little deeper to remove the contamination beneath, and solvent-wipe twice. Then spot-fill pinholes and small craters with a small mixed batch of the same product, worked in with a putty knife or a fine brush and struck flush.
Once the fills have cured, recoat the whole floor or the whole section, depending on how the previous coat was laid out. A patched area under a clear topcoat is usually invisible. A patched area on a solid-colour floor with no topcoat will show as a slightly different sheen, so plan on a full recoat if appearance matters.
Full Recoat With Primer
If bubbling or pinholing covers most of the floor, patching is a waste of time. Sand the entire surface to a dull finish with a floor buffer and 80 to 100-grit screens, or a random-orbit sander on a small garage, vacuum thoroughly, solvent-wipe, and apply a thin primer coat over the whole thing. The primer will fill the opened bubbles and pinholes and seal them. Then apply a fresh body coat at the right time of day, with the right roller, and the problem is gone for good. It is a day of extra work and one more kit of material, and it is far better than living with a pitted floor that will hold dirt in every hole for the next decade.
If the blisters are moisture-related and the slab tests high, stop and fix the moisture problem before any recoat. Everything else on this page is pointless until that is done.
8. The Prevention Checklist
Every one of the causes above is avoidable, and the good news is that avoiding them costs almost nothing. Before your next coat, run through this list.
- Test for moisture. Tape a two-foot square of plastic sheet to the bare slab for 24 hours. Any darkening or condensation under it, and the floor is not ready. For anything beyond a light DIY coat, run a calcium chloride test.
- Grind, do not etch. Grinding removes sealer, paint, oil and silicone along with the surface paste. Etching removes none of them and leaves the slab wet. Our etching vs grinding guide explains why.
- Vacuum until there is nothing left. Then vacuum again. Dust in the profile creates pinholes and weak bond spots. A HEPA vac and a tack wipe with denatured alcohol on a lint-free cloth is the standard.
- Ban silicone from the garage. No tire shine, no WD-40, no protectant sprays for a week before coating. Move anything with a spray nozzle out of the room.
- Coat as the slab cools. Late afternoon or evening. Check the slab with an infrared thermometer through the day so you know when it turns over.
- Prime first. A thin primer coat seals pores, stops outgassing, fills the grind profile and gives the body coat a smooth base. It is the cheapest insurance in the whole job.
- Mix slowly. Low-speed drill, proper paddle, head below the surface, two to three minutes, scrape and remix. Pour into a second bucket if the pot life allows.
- Use the right roller. Lint-free woven, 3/8 inch nap, de-fuzzed with tape, kept loaded, light pressure, no foam, no going back over a skinned section.
- Watch the weather. Slab between 60 and 80 degrees, humidity under 75 per cent, slab at least 5 degrees above the dew point, no rain forecast that will drive humidity up overnight.
- Check the floor at 20 minutes. Walk it with a flashlight held low. If bubbles are forming, spike-roll or torch them now, while you still can.
Follow all ten and you will almost never see a bubble. Skip the timing and the primer and you will see hundreds. In our experience those two items account for the overwhelming majority of the bubbled floors people send us photographs of.
Common Mistakes
Coating first thing in the morning
The slab spends the next four hours warming up and pushing air into your wet coating. Start in the late afternoon as the floor begins to cool and the problem largely disappears.
Skipping the primer to save a kit
A thin primer seals the pores that outgas and fills the profile that pinholes. Skipping it saves an hour and a few dollars and costs you a full sand and recoat when the body coat comes out pitted.
Mixing at full drill speed
A drill on high with a paint paddle turns the epoxy into a foam of micro-bubbles that cures into a hazy, pitted film. Mix slowly with a proper paddle kept below the surface.
Using the foam roller from the kit
Foam sleeves squeeze air into the coating with every pass. Throw it away and buy a lint-free woven 3/8 inch sleeve, wrapped in tape and peeled to pull the loose fibres before use.
Blaming the product for fisheyes
Fisheyes are contamination, nearly always silicone or oil, and nearly always something sprayed in the garage in the previous few months. The epoxy is refusing to touch it. Clean the slab properly and it goes away.
Frequently Asked Questions
Why did my epoxy garage floor bubble?
The most common cause is outgassing: air trapped in the pores of the concrete expands as the slab warms and pushes up through the wet coating. Coating in the morning as the garage heats up is the classic trigger. Other causes are moisture vapour from a damp slab, air whipped in during mixing, and roller technique.
What is the difference between bubbles, pinholes and fisheyes?
Bubbles are raised domes of trapped gas, sometimes intact and sometimes burst into a crater. Pinholes are tiny open holes the size of a needle point that go down to the concrete. Fisheyes are round, smooth-edged depressions where the coating has pulled away from a spot of contamination, often with a visible dot in the centre.
Can you fix bubbles in epoxy after it has cured?
Yes. Sand the affected area with 80 to 120-grit until the bubbles are cut open and the surface is dull, vacuum and solvent-wipe, then recoat. Scattered pinholes can be spot-filled with the same product before the recoat. A floor with widespread bubbling usually needs a full sand and a fresh coat rather than patching.
Should I coat my garage floor in the morning or the evening?
Late afternoon or early evening, as the slab is cooling. A cooling slab draws air inward and the coating settles into the pores. A warming slab pushes air outward and the coating gets blown full of bubbles. Morning application is the single most common reason a first epoxy job bubbles.
What causes fisheyes in epoxy?
Surface contamination that the epoxy cannot wet out over. Silicone is the worst offender, and tire shine, WD-40 overspray, armor-all style protectants and some hand lotions all contain it. Oil and wax do the same thing. The coating flows away from the spot and leaves a round crater with the contaminant at its centre.
Can I use a torch to get rid of bubbles in epoxy?
Carefully, yes. A quick pass with a propane torch or heat gun, kept moving and well above the surface, thins the coating for a moment and lets trapped air break the surface. Installers do it constantly. Linger for even a second and you will scorch the film, so practise the motion before you need it.
Why does my epoxy have thousands of tiny pinholes?
A thin coat over a coarse, freshly ground profile is the usual reason. Each peak in the concrete texture pokes through the wet film, and each pore beneath it releases a small amount of air that has nowhere to go. A thin primer coat applied first seals the pores and gives the body coat a smooth base to sit on.
Do bubbles mean my garage floor has a moisture problem?
Not necessarily, but it is worth ruling out. Outgassing bubbles appear within the first hour or two and are scattered fairly evenly. Moisture blisters appear days or weeks after cure, are often larger, and when cut open may hold liquid. If you see the latter, run a calcium chloride or plastic sheet moisture test before you recoat.
Related Garage Floor Guides
- Epoxy Garage Floor Moisture Test — the plastic sheet and calcium chloride tests that rule out vapour blisters.
- How to Apply Garage Floor Epoxy — mixing, priming, squeegee and back-roll done properly.
- Epoxy Garage Floor Peeling — what happens when blisters finally let go.
- Acid Etching vs Grinding a Garage Floor — why grinding removes the contamination that causes fisheyes.
- How to Prepare Concrete for Epoxy — the full cleaning and profiling sequence.
- Garage Floor Epoxy Drying Time — recoat windows and cure schedules that avoid solvent pop.
The Bottom Line
Bubbles come from air or water in the slab, pinholes come from a thin coat over an open profile, and fisheyes come from something on the floor the epoxy refused to touch. Read the pattern, and it tells you which one you have and what to do about it.
Almost every bubbled floor we have seen was coated in the morning with no primer. Coat as the slab cools, prime first, mix slowly, use a proper roller, and keep the silicone out of the garage. The coating will do the rest.
More in Garage Flooring
Guides in this category that pair with what you just read.
About the Author
Alex Rivers, Home Improvement Editor
Alex has spent over a decade working on residential and light commercial property maintenance, and now tests every tool, coating and machine that appears in these guides personally.