Old oil stains in a garage floor have to come out before epoxy, because oil contamination is the second most common cause of coating failure after moisture. The reliable process is: degrease the surface with a strong alkaline cleaner, draw deep oil out with a clay or diatomaceous earth poultice, grind the slab to remove the top 1/16 to 1/8 inch, then run a kerosene test to verify the contamination is gone. Skipping any step risks fisheyes, soft spots, or full delamination over the stained areas. Plan on an extra day of prep beyond a clean slab.
Why Oil Wrecks an Epoxy Bond
Concrete is porous. Oil from a leaky transmission, a brake job, or 20 years of slow drip from an old beater has soaked anywhere from 1/16 inch to 1/2 inch into the slab. Surface cleaning gets the top layer, but the oil down in the pores keeps wicking back to the surface for weeks. When you put epoxy over oil contaminated concrete, the oil prevents the epoxy from wetting the surface. You get fisheyes (small circular voids), pinholes, or larger soft spots that never harden correctly.
Worse, oil that wicks up after the basecoat is rolled creates a delamination layer the second the floor sees a hot tire. The epoxy looks fine for a few months, then lifts in patches over every old stain. The repair is full strip and recoat. Cheaper to do the prep right the first time.
Step 1: Identify Every Stain
Walk the floor before you do anything. Mark every visible oil spot with chalk or painters tape. Then wet the entire floor with clean water and watch what happens. Oil contaminated areas will repel water (light or dry spots) while clean concrete absorbs it (dark wet spots). You will almost always find more contamination than the visible stains suggest, especially in tire paths and under where vehicles parked.
Mark the dry zones too. These are areas where the oil is below the visible surface but still close enough to cause coating problems. In a garage that has been used for 20 years, the entire parking area is often lightly contaminated. The walking aisles around the cars are usually clean.
Step 2: Degrease the Surface
Use a strong alkaline degreaser like Krud Kutter Original, Simple Green Industrial, or a dedicated concrete degreaser like Oil Eater. Avoid weak citrus cleaners and dish soap. They lift the visible film but do not pull oil out of the pores.
- Apply degreaser at full strength to all marked areas plus a 12 inch border around each.
- Scrub with a stiff bristle deck brush for 5 minutes per spot. Real elbow grease, not a wave.
- Let sit for 15 to 30 minutes (do not let it dry).
- Rinse with hot water from a pressure washer or hose with strong flow.
- Repeat on any spot that still shows stain or beads water.
This step removes about 70% of surface contamination. The remaining 30% is deeper and needs a poultice. A second degrease pass after the first dries will pull another 5 to 10% out and is worth the time on heavy stains.
Step 3: Apply a Poultice for Deep Oil
A poultice is an absorbent material mixed with a solvent that you spread over a stain, cover, and let pull oil out of the concrete by capillary action as it dries.
Standard mix:
- 1 part diatomaceous earth or kitty litter (unscented, clay based)
- 1 part acetone or mineral spirits
- Mix to a peanut butter consistency
Apply 1/2 inch thick over each stain, extending 2 inches past the visible edge. Cover with plastic taped down on all edges to slow evaporation. Leave for 24 hours.
Remove the plastic and let the poultice dry for another 24 hours. When fully dry, scrape it up with a putty knife and vacuum the residue. The poultice should be visibly stained where it pulled oil out. If it pulls a lot, repeat once. Heavy stains can take 2 to 3 poultice cycles to fully clean. Acetone is more aggressive than mineral spirits and works faster, but it evaporates faster too. For deep stains, mineral spirits give the poultice more dwell time.
Step 4: Grind to Remove Residual Contamination
Even after degreasing and poulticing, some oil remains in the top layer of concrete. A diamond grind removes the top 1/16 to 1/8 inch of slab and takes the remaining contamination with it.
Use 16 to 25 grit metal bond diamonds for the initial pass over stained areas. Run extra passes (3 to 4) over the worst spots. Then run a normal 60 to 80 grit resin pass over the whole floor for profile.
Grinding is non negotiable on an oil contaminated slab. The first three steps reduce the contamination by 90 to 95%, but the final 5% will still cause fisheyes if you skip the grind. The grinder also pulls any remaining poultice residue out of the surface, which a vacuum alone cannot do.
Step 5: The Kerosene Test
Before you commit to coating, verify that the contamination is truly gone. The kerosene test is a fast, decisive check.
- Drop a tablespoon of clean kerosene on each previously stained area and three control areas of clean concrete.
- Wait 30 seconds.
- Wipe with a clean white rag.
If the rag from the previously stained area is the same color as the rag from the control area, you are clean. If the previously stained area rag shows brown or yellow staining, there is still oil in the slab. Repeat the poultice and grind on that area. Some old slabs need 2 to 3 cycles before the kerosene test passes. The patience pays back in coating life.
Heavy Contamination: When to Cut Out and Patch
For stains where oil has soaked deeper than 1/2 inch, like under a long parked classic with a chronic leak, the cleanest fix is to cut the stained area out with a circular saw fitted with a diamond blade, chip out 1 inch deep, and patch with a polymer modified concrete patch. Costs about $50 per stain in materials and 4 to 6 hours per spot in labor. It is more work than poultice and grind, but it gives you a fresh clean slab in the worst spots and removes the failure risk entirely.
Realistic Cost and Time
For a 400 sq ft garage with 3 to 5 visible oil stains:
- Degreaser: $25
- Poultice materials: $30
- Grinder rental and diamonds: $140
- Kerosene for testing: $15
- Total: $210 plus 1.5 days of work
Compare that to the cost of a failed coating: $400 to $800 in materials to redo, plus the strip cost of cured failed epoxy, which is harder to remove than the original contamination. The honest comparison is one extra day of prep versus three full weekends to do the whole project over.
Once the Slab Is Clean
When the kerosene test passes, you have a coatable slab. Vacuum twice, do one more water test to confirm the profile is right, and you are ready to lay the basecoat. Oil contaminated floors can absolutely take a flake coating and last 15 to 20 years, but only when the prep is done in full. The flake catalog hides minor imperfections, but it cannot hide the fisheyes and pinholes that come from rushing the prep on an oil stained slab. Spend the day. The floor will repay it for a decade.