How to Clean Concrete Floors
How to clean concrete floors in a garage, basement, or patio: dry sweep, degrease the oil, treat rust and efflorescence, then scrub and rinse. Plus when muriatic acid is worth it and how clean the slab has to be before paint or sealer.

Concrete looks like stone and behaves like a sponge. That’s the whole reason cleaning it is different from mopping tile: the dirt isn’t sitting on top, it’s down in the pores. So the order is dry first, then oil, then rust and efflorescence, then a general wash of the whole slab, then a real dry-out.
Do it in that order and one pass gets you a clean floor. Do it backwards, hose first, and you push oil deeper, spread it into clean concrete, and turn the dust into a gray slurry you’ll be scrubbing all afternoon.
What You’ll Get
An even-colored slab with no dark grease shadows, no orange halos, no chalky white bloom. Clean enough to live with. Clean enough to seal or paint over, which is a much higher bar than clean enough to look at.
Honest Take on Difficulty and Time
Physically easy, mostly patience. A two-car garage is 3 to 6 hours of actual work depending on how many stains you’re chasing.
The dwell times stretch the day. Degreaser needs 10 to 20 minutes on the stain. A poultice on old oil takes overnight, sometimes two rounds. Scrubbing a degreaser before it’s had time to work is wasted effort.
Then the slab has to dry, and that’s a full day on its own. Cleaning as prep for a coating? Budget two days minimum from first sweep to first coat. Basements need longer.
What You’ll Need
Cleaners
Buy for the stain you actually have, not a bucket of all-purpose.
A concrete degreaser for oil and grease. Oil Eater Original, Zep Heavy-Duty Citrus Degreaser, and Krud Kutter Concrete Cleaner and Etcher all work; they’re alkaline or citrus-based and they lift petroleum out of the pores. For old, set-in stains you want a poultice instead, like Pour-N-Restore or the microbial Terminator-HSD. A poultice pulls the oil up and out as it dries. A degreaser mostly washes the top.
An oxygenated cleaner for the general film of grime, algae, and mildew that covers the rest of the slab. Simple Green Oxy Solve Concrete and Driveway or plain oxygen-bleach powder both do it, and neither one will kill the plants along a patio edge the way chlorine bleach can.
A rust remover made for masonry for orange stains. Oxalic acid is the active ingredient in most of them, and Singerman Labs Rust Remover is the one people reach for on concrete. Chlorine bleach on rust makes it worse, permanently.
For efflorescence, white vinegar cut about 50/50 with water handles a light bloom. Heavy deposits want a proper masonry efflorescence remover.
Tools
A wide stiff-bristle push broom does more of this job than anything else you own. Add a long-handled deck brush and a pump sprayer so cleaner goes down even instead of in puddles.
A pressure washer at 2,000 to 3,000 PSI with a 25-degree tip speeds up a garage or patio enormously. A basement gets a wet shop vacuum and buckets instead. And get a squeegee on a pole. Pushing the dirty rinse water out is what stops the grime from settling right back down.
Step 1 — Clear It Out and Sweep It Dry

Everything off the slab, corners and expansion joints swept out before a drop of water goes down.
Everything comes off the floor. Cars, shelving units, bikes, the bag of salt in the corner. If a shelf can’t move, at least pull it off the wall so you can get behind it.
Then sweep. All of it, dry, before any water. Push broom into the corners, along the wall base, and down the expansion joints where grit packs in hard. A putty knife or a screwdriver gets the compacted stuff out of the joints.
Sweeping dry matters more than it sounds. Wet dust becomes a gray paste that smears across the slab and settles into the pores you’re trying to open. Get the loose material out the door first.
Watch out for the drain, if you have one. Pull the cover, clear it, and make sure it actually runs before you start putting gallons of water on the floor. Finding out it’s blocked halfway through the rinse is a bad afternoon.
Step 2 — Degrease the Oil Before Any Water Touches It

Dark oil stains covered with degreaser and left to dwell. No water yet.
Oil first, always. Hose the floor down before you deal with the oil and you’ll float grease across clean concrete and stain areas that were fine ten minutes ago.
Fresh drips, still wet: cover them with clay cat litter or sawdust, grind it in with your boot, and let it sit an hour. Sweep it up, then hit what’s left with degreaser.
Set-in stains: spray or pour degreaser straight onto the dry stain, undiluted for a bad one. Let it dwell 10 to 20 minutes. Don’t let it dry out; mist it again if it starts to. Then scrub hard with the stiff brush, in circles, and rinse just that area.
Old, deep stains that laugh at the degreaser need a poultice. Pour it on, let it dry to a white crust over 24 hours, then sweep the crust off. The oil comes up in the crust. Two or three rounds on a bad stain is normal and not a sign you’re doing it wrong.
Watch out for the shadow that stays after the grease is gone. Some old oil permanently darkens the concrete. If a spot stops improving after two poultice rounds, it’s stained, not dirty, and the fix is a solid-color coating, not more scrubbing.
Step 3 — Handle Rust and Efflorescence Separately

Orange rust halos and the chalky white bloom handled with their own products, not the general cleaner.
These two are chemistry problems, not scrubbing problems. General cleaner does nothing to either one.
Rust. Those orange rings come from a metal shelf leg, a bike kickstand, a rebar chair too close to the surface, or a snow shovel left over winter. Wet the area, apply an oxalic-acid rust remover, let it dwell per the label, scrub, rinse well. Repeat if it’s faded but not gone. Never use chlorine bleach here; the chlorine reacts with the iron and drives the stain deeper into the slab where nothing will reach it.
Efflorescence. That’s the chalky white powder, usually on basement floors and patio slabs. It’s salt left behind when water moves through the concrete and evaporates off the surface. Brush the dry bloom off first with the stiff broom, because wetting it just dissolves the salt back into the slab. Then wash the residue with 50/50 white vinegar and water, or a masonry efflorescence remover for a heavy deposit. Rinse and neutralize.
Watch out for efflorescence that comes back. Cleaning it off doesn’t stop it, because the cause is water moving through the slab. If it returns in the same patch within a few weeks, you have a moisture problem to solve, and the full walk-through is in the efflorescence on a concrete floor fix. Coating over an active bloom is how you get paint that lifts off in sheets.
Step 4 — Wash the Whole Slab

Whole slab washed section by section, rinse water squeegeed toward the door.
Now the general wash. With the stains dealt with individually, this pass is just about evening everything out and taking off the film.
Mix the oxygenated cleaner per the label and apply it with the pump sprayer over a section about 10 feet square. Let it dwell 10 minutes without drying. Scrub with the deck brush or run the pressure washer over it with the 25-degree tip, keeping the wand moving and about a foot off the slab. Rinse that section, squeegee the water toward the drain or the door, and move to the next section.
Work from the back of the space toward the exit so you’re never walking dirty water back across clean concrete. Overlap each section a little into the last one; a hard stop line between a washed and unwashed area can leave a visible edge on old concrete.
Watch out for the pressure washer in one spot too long. Concrete looks tough, but a zero-degree tip held still will cut a lighter, rougher patch into the surface, and you’ll see that stripe under a coat of floor paint forever. Keep it fanning.
Step 5 — Dry It Out and Check Your Work

Fully dry, even color, no dark patches. This is what a slab looks like when it’s ready for sealer or paint.
Squeegee out every puddle you can, then get air moving. Open the garage door, run box fans across the slab, and in a basement run a dehumidifier too. Standing water in a low spot will still be there tomorrow if you leave it.
Give it 24 hours minimum. Then walk it in good light and look for what you missed: gray-dark grease shadows, orange traces along the wall, white bloom back in the corners. Spot-treat those now while everything is set up, not after you’ve put the shelving back.
Watch out for thinking dry means dry. Concrete dries from the face inward and the surface goes light hours before the slab is done. That distinction doesn’t matter if you’re just parking a car. It matters enormously if a coating is going on next.
Garage, Basement, and Patio Are Not the Same Job
Garage
The easy one. It drains outside, it can take a pressure washer, and the stains are predictable: motor oil, tire marks, road salt, battery acid, rust from whatever’s been sitting on the floor. Salt residue in winter climates wants a thorough plain-water rinse before you even start with cleaner, because dried salt will fight the degreaser.
Basement
No drain, no airflow, and the whole slab is sitting on damp ground. Skip the pressure washer. Scrub with buckets and lift the dirty water with a wet shop vac. Expect efflorescence and expect mildew in the corners; a diluted bleach solution, roughly one part bleach to four parts water, handles the mildew, but rinse it thoroughly and never mix it with any acid product you used earlier.
Run a dehumidifier during the dry-out. Without one a basement slab can take three days to come back to a coatable moisture level.
Patio and Porch
Outdoor slabs collect organic growth more than grease: algae, moss, leaf tannin, pollen. Oxygenated cleaners handle all of that and won’t scorch the lawn the way chlorine runoff can. Watch the edges where soil meets concrete, and cover nearby plantings if you’re using anything stronger. If yours is a covered porch you’re planning to coat, the porch floor painting guide picks up right where this leaves off.
Muriatic Acid: When It Earns Its Place
Muriatic acid gets recommended constantly for concrete, and most of the time it’s the wrong tool. It is not a cleaner. It won’t touch oil, and on a grimy floor it just reacts with the dirt.
What it does is etch. It dissolves the smooth, troweled top skin of the slab and opens the pores so a coating can grip. That’s a prep step, not a cleaning step, and it comes after the floor is clean and degreased.
If you do need to etch: dilute properly, always acid into water and never the reverse, wear goggles and rubber gloves, ventilate hard, and neutralize afterward with a baking-soda rinse. A gentler substitute like Klean-Strip Green or a citric-acid etcher gets the same profile with far less risk, and that’s what most homeowners should be buying.
You’re aiming for a surface with the texture of 120-grit sandpaper. Still slick after rinsing and drying? Etch again. If you can rent a grinder, mechanical grinding beats acid every time and skips the neutralizing entirely.
If You’re Cleaning as Prep for Paint or Sealer
Clean enough to look at and clean enough to coat are two different standards, and coating failures almost always trace back to this step.
Three things have to be true before anything goes down:
- No grease left, anywhere. Coatings don’t stick to oil. A shadow you can live with visually will still be a peeling spot in eighteen months. Poultice it until it stops improving.
- The slab is dry through. Tape down an 18-inch square of clear plastic, seal all four edges, wait overnight. Beads underneath or darkened concrete means the slab is still pushing moisture and you wait.
- The surface has tooth. Splash water on it. Soaks in within a minute, you’re good. Beads up, the surface is too slick or there’s an old sealer on it, and you etch or grind.
Once those three pass, pick your finish. The best concrete floor paint round-up covers the epoxies, single-part latex floor paints, and polyaspartics for a color coat. If you’d rather keep the concrete looking like concrete and just protect it, the best concrete sealers guide covers penetrating versus film-forming and which one suits a garage against a patio. For the full coating job start to finish, see how to paint a garage floor or how to paint a basement concrete floor.
Common Mistakes
- Hosing the floor before degreasing. Water floats oil around and spreads a two-foot stain into a six-foot one. Oil first, dry, always.
- Using bleach on rust. It reacts with the iron and locks the orange stain into the slab permanently. Oxalic acid is the answer, and it’s cheap.
- Reaching for muriatic acid to clean. It’s an etcher. On a dirty floor it wastes acid and does nothing about the grease.
- Letting cleaner dry on the concrete. Every one of these products works while it’s wet. Dried on, it leaves residue that fights the next step and can flash-stain the slab. Mist it if it starts drying.
- Mixing products. Bleach plus an acid rust remover makes chlorine gas. Rinse thoroughly between chemistries, and never store the mixed leftovers together.
- Coating a slab that isn’t dry. The plastic-square test takes one night. Skipping it costs you the whole floor.
Dry and Wait Times
| Stage | Time |
|---|---|
| Degreaser dwell | 10 to 20 min, kept wet |
| Poultice on old oil | 24 hrs to dry, sweep, repeat as needed |
| Rust remover dwell | 5 to 15 min per label |
| Surface dry after rinse | 4 to 8 hrs with airflow |
| Ready for foot traffic and storage | 24 hrs |
| Ready for sealer or paint (garage, patio) | 24 to 48 hrs, plus a passing plastic test |
| Ready for sealer or paint (basement) | 48 to 72 hrs with a dehumidifier running |
Cool or humid weather stretches every line in that table. Concrete doesn’t care about your weekend.
Maintenance
Dry sweeping is the whole maintenance program. Once a month keeps grit from being ground into the pores by tires and boots, and grit is what makes a floor look dingy long before any stain does.
Fresh drips get wiped or absorbed the day they happen. That’s the difference between a paper-towel job and a two-round poultice next spring.
A full wet wash once or twice a year covers most garages. Patios want it every spring after the winter growth. A sealed floor is easier still, since spills sit on top where a rag reaches them.
Cost Breakdown
| Item | Cost |
|---|---|
| Concrete degreaser, 1 gal concentrate | $18–$30 |
| Oxygenated concrete cleaner | $12–$25 |
| Rust remover | $15–$30 |
| Poultice oil remover (only if needed) | $25–$40 |
| Etcher or safer acid substitute (only if coating) | $12–$25 |
| Stiff push broom and deck brush | $25–$45 |
| Total, typical two-car garage | ~$45–$100 |
Assumes you own or borrow a pressure washer and a shop vac. A rental washer is about $40 to $75 a day. Pump sprayer, another $15 if you don’t have one from other yard work.
What’ll Bite You in Two Years
The oil stain you decided was “clean enough.”
It looks fine when the floor’s bare. Put a coating over it and the coating cures everywhere except that patch, because it never really bonded there. A year in you get a soft spot. Two years in, a tire turning on it peels a dinner-plate flake off, and the only real fix is grinding the area, re-prepping, and patching a color that will never quite match.
So when you’re standing there deciding whether to poultice a stain one more time, poultice it. Twenty-five dollars and a night of waiting beats grinding out a section of finished floor. Same for the plastic-square moisture test in a basement: one night of patience against a whole slab of coating that lifts off in sheets the first humid summer.
Ask a Question