If you’re trying to figure out how to get old stains out of upholstery, here’s the honest starting point: a stain that has already dried and set won’t lift with a quick wipe. It needs the right product, the right dwell time, and a method that matches your fabric type. The good news is that most old stains — coffee rings, grease spots, old pet accidents — respond well to a slower, more deliberate version of normal upholstery cleaning. This guide walks through exactly how to loosen and lift a set-in stain without damaging the fabric underneath.

Why Old Stains Are Harder to Remove Than Fresh Spills
A fresh spill sits on top of the fibers. An old stain has had time to soak in, dry, and often oxidize, which can change its color and bond it more tightly to the fabric. Heat from sunlight, a nearby heater, or a hair dryer used to “dry it faster” can make this worse — heat often bakes the stain in permanently. That’s why set-in stains usually need repeated treatments, a longer dwell time, and sometimes a stronger product than a fresh spill would.
Check Your Fabric’s Cleaning Code Before You Treat an Old Stain

Every piece of upholstered furniture should have a cleaning code tag, usually stitched under a cushion or along the frame. This code tells you which cleaners are safe:
- W — Water-based cleaners only, such as mild dish soap diluted in water.
- S — Solvent-based cleaners only. No water, no steam.
- WS — Either water-based or solvent-based products can be used.
- X — Vacuum or light brushing only. No liquid of any kind.
If the tag is missing, treat the fabric as sensitive. Test any product on a hidden spot, like the back or underside of a cushion, and wait a few minutes to check for color change or texture damage before treating the visible stain. Delicate materials like velvet need extra caution — our guide on how to clean a velvet sofa covers those fabric-specific steps. Leather and faux leather aren’t fabric and need different products entirely. Check our leather furniture care guide or our faux leather couch cleaning guide before using anything below on those surfaces.
What You’ll Need
- A vacuum with an upholstery attachment
- Clean white cloths or towels (color can transfer onto damp fabric)
- Mild dish soap or an upholstery-safe water-based cleaner (W and WS fabrics)
- A solvent-based upholstery cleaner (S fabrics)
- An oxygen-based stain remover for tougher spots (W and WS fabrics only)
- A spray bottle
- A soft-bristle brush
How to Get Old Stains Out of Upholstery | Step-by-Step Guide

1. Vacuum the area first
Loose dirt sitting on top of an old stain can make it look worse than it is, and vacuuming keeps you from grinding grit deeper into the fibers once you add moisture. Use the upholstery attachment on the stained area and the surrounding fabric.
2. Test your cleaner on a hidden spot
Apply a small amount to an inconspicuous area and let it sit for a few minutes. Confirm there’s no color loss or texture change before moving to the visible stain.
3. Apply the cleaner to a cloth, not directly to the fabric
For a W or WS fabric, mix a small amount of mild dish soap with water, or use an oxygen-based stain remover mixed according to the package directions. Official OxiClean instructions call for applying the solution to a clean white towel first, then blotting it onto the stain rather than spraying or pouring it directly on the upholstery. For an S fabric, use a solvent-based cleaner the same way, applying it to the cloth first.
4. Blot, don’t rub, and work from the outside in
Press the cloth onto the stain and lift straight up. Rubbing spreads the stain and can push it deeper into the padding underneath. Work from the edges of the stain toward the center so you don’t enlarge it.
5. Let the product dwell, then rinse and blot dry
Give the cleaner a minute or two to break down the residue, then dampen a separate clean cloth with plain water and blot the area to rinse out any soap or solution left behind. Finish with a dry towel to pull out as much moisture as possible.
6. Repeat as needed and let the fabric air dry completely
Old, set-in stains often take two or three rounds before they fully disappear. Let the fabric dry fully between attempts — a fan or open window speeds this up — and avoid sitting on the damp area, which can push the stain back to the surface.
Extra-Strength Options for Stubborn, Set-In Stains
Some old stains, especially food, grease, or protein-based marks like blood or sweat, need more than mild soap and water.
Oxygen-based powder: For W and WS fabrics, an oxygen-based stain remover can lift stains that plain soap won’t touch. Mix it according to the package directions, apply it to a cloth, and blot as described above. Let it sit for a few minutes, but don’t let it dry on the fabric, since dried residue can leave its own mark behind.
Enzyme-based cleaners for protein stains: The American Cleaning Institute notes that protein-based stains typically respond best to a product containing enzymes, with aged stains needing a longer soak than fresh ones. On upholstery, that translates to applying an enzyme spray made for fabric, letting it dwell for the time listed on the label, then blotting and rinsing as usual. Always spot-test first, since enzyme cleaners can affect dye in some fabrics.
How to Treat Specific Old, Set-In Stains

Coffee, tea, and wine often lighten gradually with repeated dish-soap treatments. If a faint shadow remains after a few rounds, a small amount of white vinegar diluted in water can help lift mineral residue left behind.
Grease and oil: Blot up any surface residue first, then treat with a dish soap solution, which breaks down oil more effectively than plain water. A small amount of cornstarch or baking soda left on the spot for fifteen minutes before vacuuming can help absorb oil that has soaked in deeply.
Blood and other protein stains: Use cold water only — hot water can set protein stains permanently. An enzyme-based cleaner, as described above, is usually the most effective option for stains that have already dried.
Old pet accidents usually come with an odor problem as well as a visible mark. An enzyme cleaner made for pet stains addresses both, since it breaks down the organic compounds causing the smell rather than just masking it.
What Not to Do When Treating Old Upholstery Stains
- Don’t use heat. Skip the hair dryer, iron, or direct sun exposure, which can set a stain permanently instead of drying it faster.
- Don’t rub aggressively. This can fray fibers, spread the stain, and push it deeper into the cushion padding.
- Don’t oversaturate the fabric. Too much liquid can soak into the foam or padding underneath, leading to mildew, rings, or a musty smell.
- Don’t mix cleaning products. Combining bleach, ammonia, or other chemicals can create dangerous fumes, and there’s no benefit to layering products.
- Don’t use a colored cloth. Dye can transfer onto damp upholstery — stick with clean, white towels.
When to Call a Professional Upholstery Cleaner
Some situations call for professional help rather than a DIY approach: large stains that cover a wide area, upholstery with an S or X cleaning code, antique or heirloom pieces, or a stain that hasn’t budged after two or three careful attempts. According to BISSELL’s cleaning guidance, deeper, more embedded messes generally call for equipment that goes beyond routine spot cleaning. A professional has access to hot water extraction equipment and solvents that go beyond what’s safe to use at home, and they can assess whether a stain is truly permanent before you risk damaging the fabric further.
Keeping Stains From Setting In the Next Time
The easiest old stain to remove is the one that never gets old. Blot spills the moment they happen, rather than waiting until they’ve dried. A quick weekly vacuum with the upholstery attachment also keeps everyday dirt from working its way into the fibers, where it can combine with oils and moisture to form the kind of stubborn stain this guide is built to solve. For a full maintenance routine, see our complete guide on how to clean upholstery, or check out our deep-clean walkthrough when it’s time for a more thorough refresh across the whole piece.
