Why Garage Floors Develop a Persistent Oil Sheen Even After Mopping

You pull the car out on a Saturday morning. The plan is to spend twenty minutes mopping the garage floor, then move on to the rest of the day. You hit it with degreaser. You scrub. You rinse with a hose. The water runs gray, then clear, and you call it done.
Two hours later you walk back in. The whole floor has a faint sheen to it — not wet, not shiny in the way mop water leaves a streak, but a dull oily gloss that catches the light. Move the work light around and you can see every place a vehicle has ever parked.
You mopped harder. You used more soap. Same result.
Here's what's actually happening, and why mopping can never fully fix it.
The sheen isn't on top of the concrete. It's inside it.
Concrete looks solid. Up close, it's not. Cured concrete is a network of capillaries and pores running anywhere from a few microns to a millimeter deep, with most of the absorbency in the top quarter inch. Think of it as a stack of stale sponges — packed tight, but every pore is open to the surface.
Motor oil, transmission fluid, brake fluid, gear oil. All of it is thinner than water, lower surface tension, and naturally wicks into porous material. A drop of fresh oil on a clean concrete floor disappears in under a minute. Most of it is now below the surface, sitting in the pores between aggregate and cement paste.
When you mop, the soap and water move across the top of the slab. The water can't enter the pores fast enough to displace the oil that's already there. The detergent emulsifies whatever oil is sitting on the surface, you rinse, the floor looks clean for about an hour — and then the oil that's still in the pores migrates back up to the surface as the slab dries.
That's the sheen. It's not new contamination. It's the old oil, finding its way back to daylight.
What you're seeing, what's actually wrong, and how urgent it is
| What it looks like | What's going on | How urgent |
|---|---|---|
| Faint dull sheen across the whole bay, worst where the car parks | Oil saturated into the top 1/8" of concrete; mopping only cleared the surface | Cosmetic — fix when you have time |
| Dark rings around old drips, sheen extends past the ring | Oil has spread laterally through the slab via capillary action | Cosmetic, but will keep showing through any paint or epoxy you put down |
| Sheen plus a sticky or tacky feel | Detergent residue left behind from previous mopping — soap film, not oil | Easy fix — hot rinse without soap, then dry |
| Sheen plus a strong chemical smell | Solvent (carb cleaner, brake cleaner) was used and is still off-gassing from the pores | Ventilate the space before any cleaning attempt |
| Yellow-brown sheen with hardened texture | Oxidized oil that's been there years and has cross-linked into the concrete | Aggressive — needs heat and dwell, not a mop |
| Sheen extends to where a salted vehicle drips in winter | Mix of oil and chloride salts from road treatment | Address before sealing — salts will blister any coating |
The pattern matters more than the color. If your sheen is everywhere a car has ever sat and worse where the engine pan hangs, you're looking at saturated concrete. If it's only in one spot and tacky, you have got soap film.
Why detergent and a mop can't reach what's two pores down
Three things have to happen for oil to leave a concrete slab. The mop covers one of them at best.
First, the oil has to be made soluble in water. Surfactants in degreaser do this — they wrap around oil molecules and let them float in water as an emulsion. Cold-water dish soap does it weakly. Industrial alkaline degreaser does it strongly. Either way, the chemistry only works on oil it can actually reach.
Second, the chemistry needs time. An oil molecule sitting four millimeters down inside a pore isn't going to leap up to the surface because soap touched the slab for fifteen seconds. The degreaser has to dwell long enough to wick down into the pores and bond with the oil — usually five to ten minutes for fresh contamination, longer for old. Most mopping passes give it thirty seconds.
Third, the dissolved oil has to be physically removed from the floor. This is the step that breaks down at home. You can mop the soap-and-oil emulsion around, but if you don't extract it — vacuum, squeegee-and-rinse, or surface-cleaner pass — the emulsion just settles back into the pores when the water evaporates. You haven't cleaned the floor. You've stirred it.
Add up the three steps. A mop gives you weak surfactant, short dwell, and zero extraction. The oil that came up gets to settle right back down.
Heat is the variable that changes everything
Cold water and degreaser will work on the top layer of fresh oil. They won't touch oxidized, year-old, sun-darkened oil that's bonded chemically to the concrete.
Hot water does two things mopping can't. At 180°F, the oil's viscosity drops sharply — it goes from honey-thick to nearly water-thin, and starts moving freely through the pores. At the same time, heat accelerates the surfactant reaction, so the same degreaser that would need fifteen minutes at 60°F can do its work in three at 180°F. You also get partial steam penetration, which carries the chemistry deeper than capillary wicking alone.
This is why a hot-water surface cleaner pulls sheen out of garage concrete that survived three rounds of mopping. The combination of heat, surfactant, dwell, and immediate vacuum extraction works on every layer of the slab the mop never touched. Cold pressure washing alone — even at 4,000 PSI — won't do it, because pressure can't reach into a pore the same way heat plus chemistry can.
We use a garage and carport cleaning process built around hot-water surface cleaners and alkaline degreaser dwell for exactly this reason. The slab leaves the job dry, sheen-free, and ready for sealer if the homeowner wants it.
Old oil is harder to remove than people think
A fresh drip from this morning will come out of a clean slab in one pass. A two-year-old stain that's been driven over a thousand times is a different problem.
Engine oil oxidizes when it sits exposed to air. The molecules cross-link, the viscosity climbs, and what was once a slippery liquid becomes a sticky semi-solid that's chemically bonded to the calcium silicate in the cement paste. At that point you're not lifting a liquid out of a pore — you're breaking a chemical bond.
This is the case where mopping has the worst odds. Cold soap and a string mop will not break that bond. You need heat to soften the oxidized oil, an alkaline cleaner to saponify the fatty acid component, and enough dwell time for the chemistry to penetrate before extraction. Even then, deeply oxidized stains may require a poultice — an absorbent paste that sits on the surface for hours and pulls the contamination up out of the concrete by reverse capillary action.
A pro can do all of this in one visit. A homeowner with a mop is going to spend a Saturday on it and walk away with the same sheen.
If hot water and surface cleaners aren't an option, the slow alternative is bioremediation — powders or pastes seeded with microbes that actually consume hydrocarbons. You sprinkle the product over the stain, leave it for one to two weeks, and sweep up the residue. The microbes do what heat and chemistry would have done in an afternoon, just on garden time. It works, especially on older stains where there's no rush, but plan around the wait.
When the floor is clean enough to seal
A lot of garage owners want to skip the deep clean and go straight to a sealer or epoxy coating. Cover the sheen, cover the stains, start fresh. The math doesn't work.
Sealers and epoxies bond to clean concrete. They do not bond to oil. Apply a sealer over a sheen and the coating will peel, blister, or fish-eye within months — sometimes within days. The standard test is a water-bead test: pour a tablespoon of water on the suspect area. Clean concrete absorbs the water in seconds. Oily concrete makes the water bead up and run off. If your floor still beads water after cleaning, no coating is going to stick.
The order matters. Degrease first, get the slab to absorb water freely across the whole bay, dry it out, then seal. Skip the first step and you're paying for a coating job twice.
This is also why people who epoxy over an oily floor end up with the sheen showing through the coating a year later. The oil didn't disappear under the epoxy. It kept migrating upward and softened the coating from underneath.
Frequently Asked Questions
The sheen comes back because the oil never left.
Mopping a garage floor cleans the surface. It does not clean the slab. The oil that gives the floor its sheen lives in the pores below the surface, and the only way to pull it out is heat plus chemistry plus extraction — three things a mop can't deliver in any combination.
If your floor still catches the light an hour after you finish cleaning, you've been moving the problem around. The fix isn't more elbow grease. It's a process that can reach where the oil actually sits.
Superior Power Washing handles garage and carport floor cleaning across Waldorf, MD, and all of Charles County and Southern Maryland — including Clinton, Fort Washington, Upper Marlboro, Bryans Road, and Accokeek. Owner-operated, fully insured. Hot water surface cleaner and degreaser process, with optional sealing once the slab is dry. Call (240) 901-4252 for a free on-site assessment.