Why Does My Epoxy Floor Have Fisheyes and Craters?
A fisheye is the coating refusing to touch something. Nothing punctured the film and no gas escaped through it: the wet resin met a spot it could not wet and pulled away, leaving a circular void with a raised rim. That makes it a contamination problem, and it is the one defect that gets worse if you reach for a solvent rag.
A fisheye is the coating retreating from something it cannot wet, almost always silicone or oil. It is not a gas defect, so nothing about mixing, film build or temperature will fix it. Find the contamination, remove it mechanically rather than with a solvent rag, and rebuild from prepared substrate. If the same spots reappear after a recoat, the contaminant is still there.
Most likely causes
Silicone
- Aerosol lubricants, mould release, sealants and caulks, tyre dressings, polishes, barrier creams
- Spreads readily and survives cleaning that removes most other contaminants
- Fix: grind it out with a margin. A few molecules deep is enough to do this
Oil and grease in the slab
- Garages, workshops and plant rooms, where the slab has been absorbing oil for years
- Soaks in, then migrates back out into a fresh coating
- Fix: degrease, then grind, then test. Deep contamination may need the slab cut out
Curing compounds, sealers and waxes
- Often invisible, and routinely applied to new slabs by somebody else
- The slab looks clean and simply will not accept a coating
- Fix: mechanical prep. Acid etching does not reliably remove them
Airborne contamination
- Overspray drifting from another bay, another trade, or a car being detailed nearby
- Shows as fisheyes scattered across the whole floor rather than grouped
- Fix: control the site. Ban silicone products while a floor is being coated
Why this one is a wetting problem, not a gas problem
A liquid spreads across a surface only when the surface pulls on it harder than the liquid pulls on itself. Properly prepared concrete has plenty of that pull, which is why a coating flows out across it and stays where you put it.
Silicone has almost none. Put a trace of it on the slab and you have made a spot the resin physically cannot wet, so the coating flows away from it in every direction at once. That is why the result is a circle with a raised rim rather than a streak: the retreat is even, because the repulsion is even. It also explains the two things that surprise people most, that the contaminant does not need to be visible, and that the defect appears within minutes of the coating going down rather than developing later.
Telling a fisheye from a pinhole or a burst bubble
Look at the centre
- Fisheye: bare slab or the coat below, often with a speck at the middle
- Pinhole: a puncture, with coating right up to its edge
- Burst bubble: a crater, but its floor is coating rather than substrate
Look at the surroundings
- Fisheye: a raised rim where the coating piled up as it withdrew
- Gas defects: the film around them lies flat, because nothing pushed it sideways
- A light held low across the floor makes the rim obvious
Recoat and see
- Contamination repeats in the same spots, because it is still on the slab
- Gas defects move, because the air that caused them has gone
- This is the test that settles it, and it costs nothing but a sample area
Why the solvent rag makes it worse
This is the counterintuitive one, and it is the mistake that turns a small problem into a floor sized one. On a contaminant that spreads, a rag is a distribution system. The solvent dissolves the silicone, the rag smears the solution over a wider area, and when the solvent flashes off you are left with the same contaminant covering more of the floor in a thinner layer. One localised fisheye becomes a hazy patch of them, and the floor now looks worse after cleaning than before it.
If you do wipe, the discipline is one direction, one pass, a clean face of the rag every time, and never a circular scrub. But for silicone on concrete, wiping is rarely the answer at all, because the contaminant has usually soaked into the surface rather than sitting on it. What removes it is taking the surface off.
The test to run before you coat anything
The water break test takes a minute and needs nothing but a bottle of water. Drop water onto the prepared slab in several places. It should darken the concrete and soak in within a few seconds. If it beads, sits proud, or pulls back into droplets, something is on that slab and the coating will do the same thing the water just did.
Run it in more than one place, because contamination is rarely uniform, and run it after the final prep pass rather than before, since that is the surface the coating will actually meet. It is the same test the peeling page recommends for the same underlying reason: a coating that cannot wet a slab cannot bond to it either. A fisheye is that failure showing up in a spot; peeling is it showing up across an area.
Plan the grind that actually removes it
Contaminated slabs come back to clean substrate mechanically. Estimate the passes and the hours before you promise a date, since a fisheye repair is a prep job rather than a coating job.
Returns the machine hours, so the repair gets scheduled rather than squeezed in
Open the live calculator →How to repair a floor that has fisheyed
Grind out the affected area and a margin around it. The margin matters more than it looks: a contaminant that spread once has almost certainly spread further than the visible defects, and stopping at the last fisheye you can see leaves an edge of contamination the repair will sit on. Then prime and rebuild.
What does not work is filling the fisheyes and coating over them. The contaminant is still on the slab and the next coat will do exactly what the last one did. If the fisheyes are scattered evenly across the whole floor rather than grouped, that points at airborne contamination or a contaminated batch of material rather than a spill, and the honest answer is usually that the coating comes off and the floor starts from prepared substrate. Price that properly with the grinding cost calculator rather than absorbing it, because it is a second prep job, not a touch up.
Common mistakes
Treating it as an application fault
- Changing roller, mixing speed or film build achieves nothing here
- The coating is behaving correctly; the slab is the problem
- Time spent on technique is time the contamination stays put
Reaching for an additive first
- Flow additives can rescue a marginal case, but they change a formulated product
- The usual casualties are intercoat adhesion and gloss
- Trading a cosmetic defect today for a delamination later is a bad trade
The additive question is worth taking to the manufacturer rather than settling on site, and the data sheet guide covers what a sheet does and does not promise about substrate condition. If the sheet states a cleanliness requirement and the slab does not meet it, no additive makes that sentence go away.
Frequently Asked Questions
What actually causes a fisheye?
A difference in surface energy. A liquid spreads across a surface only when the surface pulls on it harder than the liquid pulls on itself. Concrete that has been properly prepared has high enough surface energy for a coating to wet it out and stay put.
Drop something with very low surface energy onto that slab, silicone being the classic, and you have created a spot the coating physically cannot wet. The resin flows away from it in every direction at once, which is why the result is a circle with a rim rather than a smear or a streak. The contaminant does not have to be visible and it does not have to be thick. A film a few molecules deep is enough.
Why does silicone come up so often?
Because it is unusually good at three things at once: it has very low surface energy, it spreads readily, and it survives cleaning that would remove most other contaminants.
It arrives on a jobsite in more ways than people expect. Aerosol lubricants and penetrating oils, mould release, some sealants and caulks, tyre dressings, furniture and dashboard polishes, and hand and barrier creams all commonly contain silicone. Spraying any of them anywhere near a floor you are about to coat, even in the next bay, is enough, because the overspray drifts and settles.
Why does wiping with solvent make it worse?
Because on a contaminant that spreads, a rag is a distribution system. Solvent dissolves the silicone and the rag then smears the solution across a wider area, and as the solvent flashes off you are left with the same contaminant covering more of the floor in a thinner layer than before. A single localised fisheye becomes a hazy patch of them.
If you do wipe, the rule is one direction, one pass, a clean face of the rag every time, and never a circular scrub. But for silicone on concrete, mechanical removal is the answer, because the contaminant has usually soaked into the surface rather than sitting on it.
How do I tell a fisheye from a pinhole or a crater from a burst bubble?
Look at the centre and at the rim, then look at whether it repeats.
A fisheye has bare substrate or a previous coat visible at the centre, a raised rim where the coating piled up as it retreated, and often a speck at the middle. The coating around it looks pulled back. A pinhole is a small puncture through an otherwise flat film with no retreat around it. A crater left by a burst bubble has a rim too, which is the honest source of confusion, but its centre is coating rather than bare substrate, and it sits where a bubble was rather than where a contaminant is.
The test that settles it is a recoat. Contamination reappears in exactly the same spots because the contaminant is still there. Gas defects move, because the air that caused them has gone.
Can I fix fisheyes without stripping the whole floor?
Often yes, if the contamination is localised and you can find its edges. Grind out the affected area and a margin around it, because a contaminant that spread once has usually spread further than the visible defects, then prime and rebuild the coating in that area.
What does not work is filling the fisheyes and coating over them. The contaminant is still on the slab, and the next coat will do exactly what the last one did. If the fisheyes are scattered across the whole floor rather than grouped, that points at airborne contamination or a contaminated batch of material, and the honest answer is usually to take the coating off and start from prepared substrate.
Should I use a defoamer or a flow additive to stop them?
Treat that as a last resort, and only with the manufacturer in the conversation. Surface additives lower the coating's surface tension so it can wet a surface it otherwise could not, and they can genuinely rescue a marginal situation.
But they change a formulated product, and the two things they most often change are intercoat adhesion and gloss. A coating that now wets a contaminated slab may also be a coating the next layer struggles to stick to, which trades a cosmetic defect today for a delamination later. Additives are also not a substitute for finding the contamination. If you do not know what is on the slab, you do not know whether the additive has actually solved it.

