Three defects that get lumped together
The distinction matters because the remedy does. Bubbles and pinholes are most often about air and vapor leaving the slab. Fish eyes are most often about something on the surface the coating could not wet out. Treating one as if it were the other wastes a recoat window.
The main cause of bubbles and pinholes: outgassing
Concrete is porous and full of tiny air-filled voids, even when it looks solid and dry. When a liquid coating seals the surface, air and vapor inside those pores still try to move. If the slab is warming — for example, coating in the morning of a day that is heating up — the air in the pores expands and pushes up through the wet film. Each escaping pocket can leave a bubble or, after the bubble breaks, a pinhole.
That is why timing is a prevention tool, not just a scheduling preference. Experienced installers pay attention to whether slab temperature is rising or falling during application, and many prefer to coat as temperatures are steady or falling so air is contracting into the slab rather than expanding out of it. It is also why our temperature and humidity guide belongs in the same conversation as this one: the weather on install day shapes the surface you get.
- Primer choice and thickness matter. A primer that wets into the pores and seals them evenly gives trapped air fewer easy paths up. Skipping primer, or stretching it too thin, shows up first as pinholing in the next coat.
- Back-rolling and working the material in on the first pass helps fill pores rather than bridging over them. A coat that is only laid on top of a porous slab traps more air than a coat that is worked into it.
- Moisture vapor is the heavier version of the same problem. Occasional small bubbles from air are one thing; widespread blistering can point to vapor pressure from below. That is a moisture-testing question, not just a surface-finish question, and it should be assessed rather than simply recoated over.
Fish eyes: a contamination signal
A fish eye forms when the wet coating cannot wet a tiny spot — because something there repels it. The usual culprits are small and easy to miss before coating: a trace of oil or silicone, a spot of tire dressing or detailing spray that drifted onto the slab, soap or degreaser residue that was not fully rinsed, or contamination tracked in after prep was finished. Unlike outgassing, fish eyes tend to appear in a pattern that maps to something: near where a car sat, along a workbench line, or in the area where products were stored.
Prevention is mostly housekeeping around prep, which is why our oil-stain guide and our prep guide stress the same sequence: clean first, grind to fresh concrete, vacuum thoroughly, and then protect the prepared surface until coating starts. Grinding removes a great deal — but a fresh contaminant introduced after grinding, even from a shoe sole or a spray used nearby, lands on top of a ready surface with nothing left to remove it.
What does not work is simply rolling more material over a fish eye while it is forming. The new material tends to pull back from the same spot for the same reason. The spot itself has to be addressed — cleaned, abraded, or otherwise corrected per the coating system’s instructions — before recoating that area.
Other contributors worth knowing
- Mixing and agitation. Over-aggressive mixing can whip air into a coating, and that air has to go somewhere after the material is down. Following the product’s mixing method — rather than treating it like paint to be stirred hard — reduces foam-related surface defects.
- Coating too thick in one pass. A heavy single pass can trap solvent and air that a thinner, system-specified build would have let escape. Film thickness is part of the system design, not a “more is better” dial.
- Dust, insects, and debris. Not every speck is a bubble. In an open garage, dust nibs and the occasional insect land in wet coatings. A full flake broadcast hides minor surface texture far better than a smooth solid-color or metallic finish, which is one practical reason flake is the default recommendation for working garages — it is forgiving of both the slab and the environment.
How pros catch and fix defects while there is still time
The advantage a professional crew has is not that defects never start — it is that someone is watching the floor while it can still be corrected. In the first minutes to hours, a forming bubble can often be rolled or otherwise addressed before the film sets; a fish eye spotted immediately can be flagged for spot correction rather than discovered under a finished topcoat the next day.
After cure, the honest fix depends on extent:
- Isolated pinholes or a few small craters are commonly handled by scuffing or sanding the affected area, cleaning it, and applying a touch-up or an additional coat within the system’s recoat approach. In a flake floor, small spot work often disappears visually.
- A scattered field across much of the floor usually means the whole surface should be screened or sanded and given another coat, rather than dozens of individual patches — after the underlying cause (outgassing conditions, a too-thin primer) has been identified, or the new coat repeats the pattern.
- Widespread blistering, peeling, or holes accompanied by lifting is a different category. That points back to adhesion or moisture, alongside failures covered in our failed-coating guide and hot-tire pickup guide. Recoating over an adhesion problem locks it in rather than fixing it.
Questions to ask if you see blemishes during or after install
- “Is this outgassing, contamination, or something else — and how can you tell?” A specific answer tied to the pattern and timing is a good sign.
- “Will this be fixed in the next coat, or does this area need spot work first?” Some minor pinholing in a base coat is genuinely covered by the system’s next steps; fish eyes and blisters usually are not simply covered.
- “If it needs another coat, are we still inside the recoat window, or will the surface need to be sanded first?” That window is system-specific — see our polyaspartic deep-dive for why the clock matters more on fast-cure systems.
Take clear photos in raking light — a low sun angle or a work light held sideways shows surface texture that straight-on photos hide — and share them promptly rather than waiting until vehicles are back in the garage. Early, visible, and specific beats late and general for everyone.
Cost context
Most professionally installed 2-car garages in our region land in the $2,400–$6,000 range as clearly-general guidance — see the cost guide. That is not a quote for your garage. Ordinary surface correction within a system’s normal coats does not usually change that picture; what can add cost is an extra full coat or remediation when a moisture or adhesion problem is found underneath — and that should be explained as a finding, per our quote-reading guide, not buried as a surprise.
The bottom line
Small bubbles and pinholes usually mean air left the slab at the wrong moment; fish eyes usually mean something was on the surface that should not have been. Neither automatically means a floor has failed — but both are information. A good installer can name which defect he is looking at, why it happened on your slab, and what changes before the next coat. If the only answer is “that’s normal, don’t worry about it” for a floor covered in them, keep asking.
More homeowner guides
Temperature and humidity: the install window · Concrete moisture testing · Prep, grinding & crack repair · Oil-stained garage floors · Fixing a failed DIY epoxy kit
Seeing blemishes — or want a floor done carefully the first time?
Use the quote form and describe what you are seeing or what finish you have in mind. That lets a matched local pro talk through prep, primer, and timing for your slab instead of guessing over it.
Educational note: defect causes and corrections in this guide are general information only. Whether a specific blemish is cosmetic or a sign of an adhesion or moisture problem can only be judged on the floor itself — your installer’s on-site assessment governs.