How to Remove Oil Stains from Concrete Floors (6 Steps That Actually Work)
If you've ever left a car or a forklift parked on concrete for more than a day, you already know how fast oil stains show up. One small drip from a leaky engine, a hydraulic line, or a bottle of machine oil, and suddenly there's a dark patch that won't come off with mopping. The longer it sits, the worse it gets — the stain darkens, collects dust, and turns into a slipping hazard. The good news is you don't have to live with it. Here's how to remove oil stains from concrete in six steps, from the quick fix for fresh spills to the slower treatment that pulls old stains out for good.

Concrete isn't as solid as it looks. It's full of tiny pores, and oil is thin enough to seep into them within minutes of hitting the floor. That's why wiping the surface never really works — you're only cleaning the part you can see. The oil underneath keeps soaking up and eventually darkens the surface again.
Fresh stains are easy. If you catch a spill while it's still wet, absorbent powder alone can handle most of it. Old stains are a different story. After a few weeks, the oil has oxidized and bonded to the concrete, and it takes a degreaser, some scrubbing, and sometimes a poultice to pull it out. The process below works for both.
Most of this stuff you probably already have:
The moment you notice a spill, cover it with a thick layer of kitty litter or baking soda. Press it down lightly so it touches the oil, then leave it for 30 to 60 minutes. Sweep it up and check: if the powder looks oily, put down a fresh layer and repeat. Most of the oil comes out at this stage, before it has a chance to sink in.
After absorbing what you can, spray or pour degreaser over the stain and let it sit for 10 to 15 minutes. The key is giving it time to break down the oil instead of scrubbing right away. If the concrete is unsealed, skip anything with strong acids — they can eat into the surface. For bigger areas, pick a low-foam degreaser that won't flood the recovery tank of a scrubber. Not sure which one to use? We have a separate guide on choosing cleaning chemicals for floor scrubbers.

This is where the oil actually comes off. On a small stain, a stiff brush in a circular motion works fine — just keep reapplying degreaser as you go. But if the stained area covers more than a few square meters, hand scrubbing gets old fast. A walk-behind scrubber with a disc brush applies steady pressure and covers ground much quicker. Our guide to cleaning concrete floors with a scrubber goes into the setup.
Oil and degreaser residue left on the floor will just attract dirt again in a couple of days. Rinse the area with clean water, then get the water off the floor — don't let it dry on its own. A floor scrubber helps here too: the squeegee and vacuum pick up the dirty water in one pass, which matters indoors, where you don't want puddles of contaminated water sitting around.
If scrubbing doesn't get rid of the stain, the oil has soaked deeper than the surface. A poultice pulls it back out. Mix baking soda or diatomaceous earth with degreaser until it forms a thick paste, spread it about a centimeter thick over the stain, cover it with plastic wrap, and let it sit for 24 to 48 hours. As it dries, it draws the oil out of the concrete. Scrape it off, rinse, and if you can still see a shadow, do it again.

Once the floor is dry and clean, put down a concrete sealer. It closes the pores that oil sinks into, so future spills stay on the surface where you can wipe them up or cover them with absorbent. It's an extra hour of work, but it saves you from doing this whole process again next month.

If you're dealing with one stain in a garage, skip the machine — a brush and degreaser are enough. But warehouse and factory floors rarely have just one stain. Spills, drips, and tire marks add up across hundreds of square meters, and scrubbing all that by hand is a full day's work for one or two people.
If your stains are spread over a really large area, a ride-on model might be worth the jump. The right size depends on the square footage you're cleaning, which we cover in the guide to picking a floor scrubber for concrete floors.

| Method | Time for 100 m² | Physical effort | Water recovery | Best for |
|---|---|---|---|---|
| Broom + absorbent powder | 3–4 hours | High | No | Small fresh spills |
| Deck brush + degreaser | 2–3 hours | Very high | No | Stains up to a few m² |
| Pressure washer | 1–2 hours | Medium | Partial | Outdoor areas |
| Walk-behind floor scrubber | 15–20 minutes | Low | Full | Large or repeated stains |
Vinegar will handle very light residue, but it's weak against heavy or old stains, and on unsealed concrete it can etch the surface. A dedicated degreaser or a baking soda paste works better and won't damage the slab.
A fresh stain can be dealt with in under an hour. A stain that's been there for a while usually comes out in one cleaning session. Old, deeply soaked stains need a poultice left on for a day or two, and sometimes a second round.
Yes, if you use a disc brush and a degreaser. The machine scrubs with steady pressure and picks up the dirty water in the same pass. For stains that have soaked deep into the concrete, you'll still need a poultice afterward.
Seal the concrete, and fix whatever is leaking. A sealer stops oil from soaking in, and drip trays or spill kits handle the small stuff before it becomes a stain. If your floor gets cleaned on a regular schedule, stains don't get the chance to build up.
Oil stains on concrete don't disappear on their own, but they're not permanent either. Catch fresh spills fast, use a degreaser and a stiff brush on what's left, and pull out the poultice for old stains. If the stained area is bigger than a few square meters, a floor scrubber will save you hours — take a look at the BA530 walk-behind floor scrubber for a mid-size option, and our concrete floor cleaning guide for the full routine. For workplace safety guidance on slips and falls, OSHA has a good reference here, and EPA Safer Choice lists certified cleaning products.
Contact TerraScrub
Email: Donnie@terrascrubx.com
WhatsApp: +86 166 0187 1755
No. 600, Jiye Road, Sheshan Town, Songjiang District, Shanghai, China