A fabric sofa is one of the hardest-working pieces of furniture in a home—and one of the most likely to end up with a stain on it at the worst possible moment. Coffee, wine, grease, ink, pet accidents, food, and the mysterious unidentified marks that appear and seem to have always been there. Fabric sofas absorb spills quickly and the wrong cleaning approach can spread the stain, push it deeper into the fibers, or damage the fabric permanently.
The thing most people don’t know is that fabric sofas have cleaning codes—a letter or combination of letters on the care tag that tells you exactly what cleaning agents are safe for that specific fabric. Using the wrong type of cleaner for your sofa’s fabric code is the primary cause of sofa cleaning damage. Water-based cleaners on a “dry clean only” sofa cause shrinkage, watermarks, and fiber distortion that can’t be reversed. Solvent-based cleaners on a fabric that’s water-washable are usually fine but unnecessary and expensive.
This guide covers eight methods for removing stains from fabric sofas, starting with how to identify your sofa’s cleaning code and working through specific treatments for different stain types.
Find Your Sofa’s Cleaning Code First
Before touching the stain with any product, find the care tag—usually under a seat cushion, on the underside of the sofa frame, or attached to the back of a removable cushion cover. The tag will have one of four codes:
- W: Water-based cleaners only. This is the most forgiving code—mild dish soap solutions, upholstery shampoo, and water-based stain removers are all safe.
- S: Solvent-based cleaners only (dry-cleaning solvent). No water—water causes watermarks, shrinkage, or fiber distortion on S-coded fabrics. This includes many microfiber sofas.
- W/S or S/W: Both water-based and solvent-based cleaners are safe. The most versatile code.
- X: Vacuum or dry brush only—no liquid of any kind. Professional cleaning only for stains.
If there’s no tag or the tag is unreadable, do a water test on a hidden area: apply a few drops of plain water to an inconspicuous spot and allow to dry. If the fabric darkens or watermarks form, treat it as S-coded. If it dries cleanly, it’s likely W or W/S coded.
Before You Start: Rules That Apply to Every Method
- Blot—never rub. Rubbing spreads the stain, pushes it deeper into the fabric fibers, and can permanently distort the fabric texture. Every motion should be a firm downward press and lift.
- Work from the outside edge inward. Starting at the center of a stain and working outward spreads it. Always start at the outer edge and work toward the center.
- Act as quickly as possible. Fresh stains are dramatically easier to remove than dried ones. The first 60 seconds of a spill are the most valuable.
- Use the minimum moisture necessary. Excess liquid soaks through the fabric into the cushion foam and backing, where it promotes mildew and can cause permanent watermarks.
- Test every cleaning product on a hidden area first. Apply to the underside of a cushion or a hidden section of the frame fabric and allow to dry completely before treating the visible stain.
- Use white cloths only. Colored cloths transfer dye to damp upholstery fabric.
What You’ll Need (Depending on the Method)
- Clean white cloths or microfiber cloths
- Dish soap
- Baking soda
- White vinegar
- Hydrogen peroxide (3%)
- Rubbing alcohol (isopropyl alcohol)
- Dry-cleaning solvent (Carbona, K2r, or similar)
- Enzyme-based upholstery cleaner
- Commercial upholstery stain remover
- Cold water
- A spray bottle
- A soft-bristle brush
- A vacuum with upholstery attachment
Method 1: Immediate Blotting and Cold Water (Best First Response for Fresh Spills)
The first response to any fresh spill on a fabric sofa determines how much work all subsequent cleaning requires. Acting within the first minute—before the liquid has time to soak through the surface fabric into the foam beneath—can prevent a stain from forming at all.
- Remove any solid material immediately using a spoon or dull knife held flat against the fabric surface. Scoop away from the center toward the edges. For semi-solid spills like yogurt, hummus, or soft food, this physical removal step is more important than any cleaning product—the less material in the fabric before cleaning begins, the better.
- Blot the liquid immediately with a thick, clean white cloth or a folded stack of white paper towels. Press firmly and hold for several seconds rather than dabbing repeatedly—firm pressure absorbs more liquid per blot than rapid dabbing. Lift straight up and move to a fresh section of cloth with each blot.
- Continue blotting until no more liquid transfers to the cloth. For a large spill, use multiple cloths—a saturated cloth redistributes liquid rather than absorbing it.
- For W or W/S coded fabrics, apply a small amount of cold water to a clean cloth and blot the stained area to dilute any remaining residue. Cold water only—hot water sets many stain types permanently.
- For S-coded fabrics, skip the water entirely and move directly to Method 5 (dry-cleaning solvent) if a stain remains after blotting.
- Assess the remaining stain once the initial blotting is complete. Many fresh spills—particularly clear liquids—leave no visible stain after thorough immediate blotting. If a visible stain remains, proceed to the appropriate method below.
Best for: All fabric types as the mandatory first response, fresh spills of any type, preventing stains from setting before treatment.
Method 2: Dish Soap Solution (Best for Food, Grease, and General Stains on W-Coded Sofas)
A mild dish soap solution handles the majority of common sofa stains on water-safe fabrics—food residue, light grease, coffee, tea, juice, and most everyday spills. Dish soap’s surfactant chemistry lifts both water-based and oil-based residues from fabric fibers, making it effective across a wider range of stain types than most single-purpose cleaners.
- Mix one teaspoon of dish soap with two cups of cold water. One teaspoon—not a tablespoon. Excess soap leaves a residue in the fabric that attracts dirt and is very difficult to fully rinse out of upholstery where thorough rinsing isn’t possible.
- Apply the solution to a clean white cloth—never directly to the sofa. Direct application saturates the fabric unevenly and can push the stain deeper.
- Blot the stained area starting from the outer edge and working inward. Press firmly and hold for a few seconds with each blot. Switch to a clean cloth section with every few blots to avoid redistributing the stain.
- Work slowly and methodically. Each blot should show stain transfer onto the cloth—if it stops transferring, apply a fresh amount of solution to the cloth and continue.
- Rinse by blotting with a clean cloth dampened with plain cold water. This step is critical—soap residue left in upholstery fabric dries to a slightly sticky residue that attracts future dirt and can create a stain outline more visible than the original mark.
- Blot dry with a clean dry cloth, pressing firmly to absorb as much moisture as possible.
- Allow to air dry completely before sitting on the sofa—damp fabric under pressure can cause watermarks and spread any remaining residue.
- Check in good light once dry. Some stains appear to be gone while damp but are visible once dry—assess only after full drying before deciding if retreatment is needed.
Best for: W and W/S coded fabrics, food stains, coffee and tea, juice, light grease, general everyday soiling.
Method 3: Baking Soda Treatment (Best for Odor and Grease Absorption)
Baking soda works on sofa stains through a different mechanism from soap and water—it absorbs liquid and grease from the fabric fibers rather than dissolving them, and neutralizes odor compounds simultaneously. It’s particularly effective for grease-heavy stains (butter, oil, salad dressing) and for stains that have an odor component (pet accidents, vomit, spilled milk).
- Blot up as much of the stain as possible before applying baking soda—it absorbs most effectively when not competing with excess surface liquid.
- Sprinkle a generous layer of dry baking soda directly over the entire stained area. Don’t be sparse—a thin layer doesn’t absorb enough to make a meaningful difference.
- Press the baking soda lightly into the fabric with clean fingers or a soft cloth so it makes contact with the stained fibers rather than sitting on top.
- Leave for a minimum of 15–20 minutes for fresh stains. For stains with significant odor or grease content, leave for several hours or overnight—the longer the contact time, the more absorption occurs.
- Vacuum thoroughly using the upholstery attachment once the baking soda has fully dried. Make multiple passes in different directions to remove all powder from the fabric fibers.
- Assess the remaining stain. For grease stains, baking soda often removes a significant portion of the stain before any liquid cleaner is needed—reducing the size of the area that needs wet treatment.
- Follow with Method 2 (dish soap solution) for any remaining visible stain after the baking soda has been vacuumed.
Best for: Grease and oil stains, pet accidents with odor, spilled milk, any stain with an odor component, as a pre-treatment before wet cleaning.
Method 4: White Vinegar Solution (Best for Urine, Pet Stains, and Odor)
White vinegar’s mild acidity neutralizes the alkaline odor compounds in urine and pet accidents directly—it doesn’t mask the smell the way fragrance-based products do. For pet urine specifically, vinegar is effective on the odor compounds that standard soap and water doesn’t address, though it works best on fresh stains rather than dried ones.
- Blot up as much moisture as possible first. For fresh pet urine, absorb as much as possible with a thick cloth before applying any cleaner.
- Apply baking soda to the stain first if there’s odor present and allow to absorb for 15 minutes, then vacuum—this removes surface odor compounds before the vinegar treatment.
- Mix equal parts white vinegar and cold water in a spray bottle.
- Apply sparingly to a clean cloth—not directly to the sofa. Upholstery doesn’t allow thorough rinsing, and over-application of vinegar solution can leave a faint smell even after drying.
- Blot the stained area from the outside in, working the vinegar solution through the surface fibers.
- Allow to sit for five minutes before blotting again with a clean cloth.
- Blot with a clean cloth dampened with plain cold water to dilute the vinegar residue.
- Dry thoroughly—vinegar smell dissipates completely as the fabric dries, usually within a few hours.
- For pet urine that has dried, follow the vinegar treatment with an enzyme cleaner (Method 6) for complete odor elimination—vinegar addresses surface odor but doesn’t break down the uric acid crystals that cause lingering smell.
Best for: W and W/S coded fabrics, fresh pet urine, odor-related stains, as a pre-treatment before enzyme cleaner.
Method 5: Dry-Cleaning Solvent (Best for S-Coded Fabrics and Oil-Based Stains)
Dry-cleaning solvent is the only liquid cleaning agent appropriate for S-coded fabrics—and it’s also more effective than water-based cleaners for certain oil-based stains (lipstick, petroleum-based products, heavy grease) on any fabric type. Solvents dissolve oil and grease through a different chemical mechanism than water-based cleaners, reaching compounds that soap solutions can’t fully lift.
- Ventilate the room thoroughly before using dry-cleaning solvent—the fumes are strong and concentrate in enclosed spaces. Open windows and doors.
- Apply a small amount of dry-cleaning solvent to a clean white cloth—never directly to the sofa. Direct application saturates the fabric unevenly and can affect the backing.
- Test on a hidden area first and allow to dry completely. Most fabrics tolerate solvent well, but some dyes can be affected.
- Blot the stained area gently with the solvent-dampened cloth, working from the outer edge inward. The solvent lifts oil and grease almost immediately on contact.
- Use a fresh section of cloth with each blot to avoid redistributing dissolved material.
- Allow to air dry in the ventilated room—solvents evaporate completely and leave no residue, which is their primary advantage over water-based cleaners on S-coded fabrics.
- For W/S coded fabrics with heavy grease stains, use the solvent first to lift the oil component, then follow with a mild dish soap solution (Method 2) to address any remaining water-soluble residue.
Best for: S-coded fabrics (mandatory), oil-based stains on any fabric type, lipstick, petroleum products, heavy grease, wax.
Method 6: Enzyme Cleaner (Best for Protein Stains and Pet Accidents)
Enzyme cleaners are the most effective treatment for protein-based stains—blood, urine, vomit, breast milk, and other biological stains—and for pet accidents where complete odor elimination (not just masking) is the goal. The enzymes in these cleaners biologically break down protein and uric acid compounds at a molecular level, eliminating both the visible stain and the odor rather than just diluting them.
- Blot up as much material as possible before applying the cleaner.
- Apply the enzyme cleaner according to the product instructions—most are applied directly to the stain or to a cloth and blotted onto the fabric.
- Allow the full dwell time specified on the product label—typically 10–15 minutes, longer for dried or severe stains. This dwell time is the most important step—enzymes need contact time to break down the organic compounds completely. Wiping before the dwell time is complete means the enzymes haven’t finished working.
- For dried protein stains, dampen the stain slightly with cold water before applying the enzyme cleaner—the enzymes work more effectively on slightly moistened material than completely dry stains.
- Blot up excess cleaner with a clean cloth after the dwell time.
- Allow to air dry completely. Enzyme cleaners continue working while damp—letting them dry in place gives better results than rinsing immediately.
- Repeat if any stain or odor remains after full drying—severe stains may need two applications.
Best for: Blood, urine, vomit, pet accidents, breast milk, any protein-based biological stain, stains with persistent odor after other treatments.
Method 7: Rubbing Alcohol (Best for Ink, Marker, and Dye-Based Stains)
Rubbing alcohol (isopropyl alcohol) dissolves ink, marker, and many dye-based stains through a different mechanism from both water-based and solvent cleaners. It’s safe for most fabric types including S-coded fabrics and is the most effective household treatment for ink and marker specifically.
- Test on a hidden area first—rubbing alcohol can affect some fabric dyes, particularly on brightly colored upholstery. Apply to a hidden area and allow to dry completely before proceeding.
- Apply rubbing alcohol to a clean white cloth—a cotton ball works well for small ink marks.
- Blot the ink stain using a press-and-lift motion rather than rubbing—rubbing spreads ink across the fabric. Work from the outer edge of the stain toward the center.
- Use a fresh section of cloth with each blot—ink transfers to the cloth and redeposits on the fabric if you reuse the same section.
- Continue until ink stops transferring to the cloth. For fresh ink, this often takes only a few rounds. For dried ink, expect more rounds and allow a few seconds of contact time with each blot.
- Blot with a clean damp cloth to remove alcohol residue—rubbing alcohol evaporates quickly but removing residue with a damp blot speeds the process and prevents any slight tackiness on the fabric surface.
- Allow to dry completely and assess. For large or old ink stains that don’t fully respond, a commercial ink remover or professional cleaning may be needed.
Best for: Ink stains, marker (including permanent marker with patience), dye transfer from colored fabrics, some nail polish stains.
Method 8: Hydrogen Peroxide Treatment (Best for Stubborn Stains on Light-Colored Sofas)
Hydrogen peroxide is a mild oxidizing agent that breaks down organic stain compounds and has a gentle bleaching effect—making it effective on stubborn stains that haven’t responded to other treatments, but only on light-colored or white upholstery where its bleaching action isn’t a concern. On dark or bright-colored fabric, hydrogen peroxide lightens or patches the dye permanently.
- Confirm the sofa fabric is white, cream, or very light-colored before proceeding. Any color risk from hydrogen peroxide is not reversible.
- Test on a hidden area first and allow to dry completely—even on light fabrics, some dye formulations react unexpectedly to peroxide.
- Mix one part 3% hydrogen peroxide with two parts cold water for a gentle treatment. For very stubborn stains on white fabric, use undiluted 3% peroxide but test carefully first.
- Apply to a clean white cloth and blot the stained area from outside in.
- Allow to sit for five to ten minutes—slight bubbling indicates the peroxide is reacting with organic material in the stain.
- Blot with a clean cloth dampened with plain cold water to remove peroxide residue—peroxide left in fabric continues to bleach slowly and can over-lighten the area if left.
- Blot dry and allow to air dry completely.
- Assess once fully dry—hydrogen peroxide treatments often look more effective once dry than while still damp.
Best for: Stubborn stains on white or cream upholstery only, coffee and tea stains that haven’t responded to soap, yellowed areas on light fabric.
Method Comparison at a Glance
| Method | Best Stain Type | Fabric Code | Difficulty |
|---|---|---|---|
| Blotting + cold water | Fresh spills, first response | All | Easy |
| Dish soap solution | Food, coffee, general soiling | W, W/S | Easy |
| Baking soda | Grease, odor absorption | W, W/S | Easy |
| White vinegar | Urine, pet stains, odor | W, W/S | Easy |
| Dry-cleaning solvent | Oil, grease, wax | S, W/S | Moderate |
| Enzyme cleaner | Blood, urine, protein stains | W, W/S | Easy |
| Rubbing alcohol | Ink, marker, dye | Most types | Easy |
| Hydrogen peroxide | Stubborn stains, light fabric | W, W/S (light only) | Moderate |
Stain-Specific Quick Reference
Coffee and tea: Blot immediately, then dish soap solution. For dried coffee, try hydrogen peroxide on light sofas.
Red wine: Blot immediately, apply salt or baking soda to absorb remaining liquid, then dish soap solution. Club soda is a useful immediate response—it lifts wine from fabric before it sets.
Grease and butter: Baking soda first to absorb, vacuum, then dish soap solution. For S-coded sofas, dry-cleaning solvent directly.
Blood: Cold water only—hot water sets blood permanently. Blot with cold water, then enzyme cleaner. Never use warm or hot water.
Pet urine: Blot thoroughly, enzyme cleaner with full dwell time. Vinegar as a pre-treatment for odor. Never use ammonia-based cleaners—the smell is similar to urine and attracts pets to re-mark.
Vomit: Remove solids first, baking soda to absorb remaining moisture, vacuum, then enzyme cleaner.
Ink: Rubbing alcohol, press-and-lift blotting only.
Chocolate: Allow to dry and harden first—cleaning wet chocolate spreads it. Scrape off as much as possible once dried, then dish soap solution.
Candle wax: Allow to harden completely, then scrape off the solid. Any remaining wax residue responds to dry-cleaning solvent. Don’t attempt to clean liquid wax.
Lipstick: Dry-cleaning solvent or rubbing alcohol, working from outside in.
Why Professional Cleaning Is Sometimes the Right Answer
Some situations genuinely warrant professional upholstery cleaning rather than DIY treatment:
- X-coded fabrics can only be professionally cleaned—no liquid of any kind should be applied.
- Large stains covering a significant portion of a cushion or sofa panel—professional equipment extracts cleaning solution much more thoroughly than blotting, preventing the watermark rings that DIY treatment can leave.
- Stains that have been treated incorrectly and have spread or set more deeply as a result.
- Delicate or expensive fabric including silk, velvet, and certain wovens where DIY risk is high.
- Overall soiling rather than a specific stain—professional hot water extraction (steam cleaning) for W-coded sofas refreshes the entire piece in a way DIY spot treatment can’t.
How to Protect Your Fabric Sofa from Future Stains
- Apply a fabric protector spray (Scotchgard or similar) after cleaning and before regular use. Fabric protector creates a barrier that causes spills to bead on the surface rather than soaking in immediately, giving you more time to blot before staining occurs. Reapply after professional cleaning.
- Act within the first 60 seconds of any spill—the difference between a spill that leaves no stain and one that requires repeated treatment is usually how quickly it’s blotted.
- Establish a no-food rule for light-colored sofas, or accept that they’ll need regular spot treatment—a realistic assessment of how the sofa is used determines maintenance needs.
- Vacuum weekly with the upholstery attachment—surface dust and debris work into the fabric with pressure and become more difficult to remove over time.
- Rotate and flip cushions where possible—even wear distribution prevents concentrated soiling in high-use areas.
FAQ
Can I use a steam cleaner on my fabric sofa? Only on W-coded fabrics and only if the manufacturer’s instructions specifically allow steam. Steam drives significant moisture into upholstery foam and can cause mildew if the foam doesn’t dry completely. If you use a steam cleaner, ensure maximum ventilation and allow 24–48 hours for full drying before using the sofa.
My sofa has a watermark ring from a previous cleaning attempt. How do I fix it? Watermark rings on upholstery are caused by the outer edge of the wet area drying first and concentrating the dissolved minerals and residue from the fabric. Fix by dampening the entire cushion panel lightly and evenly with distilled water—this redistributes the mineral content evenly across the whole panel rather than concentrating it at an edge. Allow to dry with a fan for even evaporation.
Can I put fabric sofa cushion covers in the washing machine? Check the care label on the cover specifically—some removable covers are machine washable; many are not, particularly if the fabric is S-coded or the cover has interfacing or backing that shrinks. If the label allows machine washing, use cold water and a gentle cycle, and air dry rather than tumble dry to prevent shrinkage.
How do I remove a stain I don’t know the source of? For unknown stains, start with the mildest method (cold water blot) and work up through dish soap, then enzyme cleaner, then alcohol. Unknown stains are often a combination of types—enzyme cleaner handles most organic stains; alcohol handles most dye and ink stains; dish soap handles most food and grease stains. The sequential approach usually identifies what type of stain it is by which treatment produces results.
The Bottom Line
Removing stains from a fabric sofa is primarily about identifying your fabric’s cleaning code before reaching for any product, acting as quickly as possible, and blotting rather than rubbing at every stage. For W-coded fabrics, a dish soap solution handles most everyday stains; enzyme cleaner handles protein and pet stains; rubbing alcohol handles ink. For S-coded fabrics, dry-cleaning solvent is the only safe liquid treatment. Never skip the hidden-area test for any product, use the minimum moisture necessary, and check the result only after the fabric has dried completely—because the damp assessment and the dry assessment are often very different, and putting a sofa cover back on a damp cushion is one of the fastest ways to create a mildew problem underneath.


