PROJECT

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.

By Mark ThompsonPro Contractor & Field Editor
Updated August 7, 2026
Clean empty residential garage with a freshly washed bare gray concrete floor and a push broom against the wall

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

Empty garage with bare concrete floor swept clean and a push broom leaning on the wall

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

Concrete garage floor with dark oil stains covered in degreaser and absorbent powder

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

Concrete floor with an orange rust stain and a white efflorescence bloom being treated 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

Garage floor halfway washed, clean light gray on one side and dull gray-brown on the other

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 evenly colored bare concrete garage floor with box fans running and the door open

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:

  1. 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.
  2. 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.
  3. 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

StageTime
Degreaser dwell10 to 20 min, kept wet
Poultice on old oil24 hrs to dry, sweep, repeat as needed
Rust remover dwell5 to 15 min per label
Surface dry after rinse4 to 8 hrs with airflow
Ready for foot traffic and storage24 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

ItemCost
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.

Questions people actually ask

Frequently Asked Questions

What is the best cleaner for concrete floors?

It depends on what's on the floor. A citrus or alkaline degreaser like Oil Eater or Zep handles oil and grease. An oxygenated cleaner handles general grime, mildew, and organic staining. Oxalic acid handles rust. Vinegar or a masonry efflorescence remover handles the white bloom. There is no single bottle that does all four well, which is why one cleaner and a stiff brush usually leaves you disappointed.

Can I use bleach on a concrete floor?

For mold and mildew, yes, diluted about one part bleach to four parts water. For rust, never. Chlorine bleach reacts with iron and sets the orange stain deeper into the pores instead of lifting it. Bleach also does nothing at all for oil. And keep bleach far away from any acid product or ammonia cleaner, because that combination gives off chlorine gas.

How do you get old oil stains out of concrete?

Old oil has soaked into the pores, so surface scrubbing only cleans the top of the stain. Use a poultice. A product like Pour-N-Restore goes on wet, dries to a white crust, and pulls the oil up with it as it dries. Sweep the crust off and repeat if the shadow is still there. Two or three rounds on a deep stain is normal. Microbial removers like Terminator-HSD work the same way but slower, over several days.

Do I need muriatic acid to clean a concrete floor?

For plain cleaning, no. Muriatic acid is not a cleaner, it is an etcher. It eats the smooth top layer of the slab to open the pores so a coating can bite. If you are just cleaning a garage or a patio, skip it and use a degreaser. If you are about to paint or seal a slick, troweled slab, then an etch is worth doing, and a diluted acid product or a safer substitute is the usual way to do it.

How long does a concrete floor need to dry before painting or sealing?

At least 24 hours after washing, and 48 to 72 hours if the slab is in a basement or the weather is humid. Then test it. Tape an 18-inch square of clear plastic to the floor, seal all four edges, and leave it overnight. If moisture beads under the plastic or the concrete under it turns dark, the slab is still pushing water and no coating will stick.

What is the white powder on my basement floor?

Efflorescence. Water moves through the slab, dissolves salts inside it, and leaves those salts behind on the surface as it evaporates. Brushing it off is easy. Keeping it off means dealing with the water. If it keeps coming back in the same spot after cleaning, you have a moisture path to fix, not a cleaning problem.

Can I pressure wash a basement concrete floor?

Only if there is a working floor drain and you can get the water out fast. Otherwise you are spraying gallons into a room with no exit, soaking the slab, and setting yourself up for mildew. In a basement, scrub with a brush and buckets and pull the dirty water up with a wet shop vacuum instead.

How often should I clean a garage floor?

Dry sweep monthly and it stays ahead of you. A full wet wash once or twice a year is plenty for most garages. The one thing worth doing right away is fresh drips. Oil that sits for a week is a wipe-up. Oil that sits for a year is a poultice job.

Ask a Question

Mark Thompson

Not sure what's right for your project?

Ask Mark below — every question gets a real reply, usually within a day.