How to Clean Stains on a Sofa (The Armrest Mark Isn’t a Spill)
A dark mark on a sofa armrest is rarely a spill. It is usually skin oil built up one touch at a time, and it needs an absorbent powder before any soap, not the same wipe that lifts a coffee stain.

Quick answer · care label Fabric upholstery — check W/S/WS/X code
-
1 · Wash
Hand wash -
2 · Bleach
No bleach -
3 · Dry
Dry in shade -
4 · Iron
Do not iron -
5 · Pro care
Pro clean F
In one line Check the W/S/WS/X code, then sort the mark: a fresh spill gets blotted and matched to the code's solvent, while a dark patch on an armrest or headrest is usually built-up body oil and needs an absorbent powder before any soap touches it. About 35 minutes hands-on, plus time for the powder to sit.
Is the dark mark on a sofa’s armrest actually a stain?
Knowing how to clean stains on a sofa starts with sorting two things that look identical but behave nothing alike. A fresh spill, coffee knocked over, a kid’s juice cup, a dropped bite of food, is a single event with a clear start time, and it responds to blotting and the right solvent. The dark, slightly shiny patch that spreads across an armrest or the top of a headrest over months is a different problem entirely: it is skin oil, hair product, and lotion building up one touch at a time, and no amount of dabbing it the way you would a coffee spill actually lifts it.
That distinction matters because the two marks need opposite first moves. A fresh spill wants water pulled out before it sets, using whatever the fabric’s W, S, WS, or X code allows. A built-up oil mark wants the oil drawn out with an absorbent powder before any liquid touches it, because working suds straight into oil just spreads a thin film of it wider instead of lifting it. Treat them the same way and the armrest mark usually looks the same or worse afterward, while the owner assumes the sofa is simply staining in a spot nothing was ever spilled on.
A third category sits between them: a spill that was never caught and dried into the fibers days later. It behaves more like the built-up oil mark than the fresh one, since the liquid has already evaporated and left whatever it was carrying, sugar, dye, protein, behind in the fiber. Sorting a mark into one of these three categories before reaching for a cleaner is the single step most home attempts skip.
A sofa stain is either something that landed once or something that built up over repeated contact, and the two need opposite treatments: lift a fresh spill with water matched to the fabric code, but draw out a built-up oil mark with powder before any liquid goes near it.
What you’ll need
| Item | Why | Substitute |
|---|---|---|
| Cornstarch or baking soda | Draws oil out of the fibers before any soap goes near a built-up mark | Unscented talcum powder, used the same way |
| Mild dish soap, whipped into suds | Suds carry a mark away without soaking the padding the way a wet cloth does | A delicates wash, whipped the same way |
| Two soft, lint-free white cloths | One for the suds, one dry one to lift moisture right behind it | A clean, white microfiber cloth cut in two |
| Distilled water and white vinegar, equal parts | Lifts a dried, sugary spill (soda, juice) without the minerals tap water leaves behind | Plain distilled water alone for a lighter mark |
| A soft-bristle brush or vacuum upholstery attachment | Clears the loosened powder and any crumbs without grinding them deeper into the weave | A dry, lint-free cloth for a quick wipe-off |
| Rubbing alcohol on a cotton swab | Tested on a hidden seam, this lifts ink and some dye marks on W or WS fabric that soap alone won’t touch | A dry-cleaning solvent pen, for S-coded fabric |
The method, step by step
Check the tag for a W, S, WS, or X code
Look under a cushion or on the frame near the bottom. W or WS means water and a mild detergent are safe; S means solvent only, no water; X means vacuum only, professional cleaning for anything else. Treat an unlabeled sofa as S until a hidden panel test says otherwise.
Sort the mark before you touch it
A fresh spill still looks wet or has a visible edge from minutes ago. A dried spill has a hard outline and no longer feels damp. A built-up mark has no edge at all, it just gradually darkens an armrest, headrest, or the seat where people sit most, and it often has a faint sheen rather than a flat, dull color.
Blot a fresh spill immediately, never rub
A clean, dry cloth pressed straight down, lifted, then moved to a dry section before pressing again. Rubbing drives the liquid sideways into surrounding fibers and turns a small spill into a larger mark than it ever needed to be.
Coat a built-up oil mark with powder and let it sit
Cornstarch or baking soda pressed on thickly, covering the whole discolored area, not just its darkest point. Leave it anywhere from fifteen minutes on a light mark to overnight on one that has clearly built up over months, then brush or vacuum the powder away.
Work suds into what’s left, not the liquid itself
Whip a few drops of mild soap into warm water until it foams, then dip the cloth into the foam only. Dab from the outer edge of the mark toward the center in short strokes, whether you’re finishing an oil mark or treating a fresh spill the code allows water on.
Rinse and dry the same section right behind it
A second cloth, barely damp with clean water, lifts the soap before it dries into the fibers. Follow immediately with the dry cloth, pressing rather than wiping, so the section never sits wet longer than it has to.
Treat a dried sugary stain with the vinegar mix
Soda, juice, and milky coffee dry into a faint but sticky residue that plain water often can’t fully lift. Dab the equal-parts vinegar and distilled water mix onto the spot, work it gently with the nap or weave, then rinse and dry the same way.
Dry with airflow, not sealed heat
A fan pointed at the cleaned section, or a window cracked open, cuts drying time and keeps the padding underneath from staying damp long enough to smell. A hair dryer on a cool setting, kept moving a few inches away, speeds this up without the risk a hot setting adds.
Interactive
Label decoder
Tap a symbol from your care label. No guessing, no scrolling.
19 symbols. Pick one.
Why the armrest and headrest mark first
An armrest and the top of a headrest take more direct skin and hair contact than any other part of a sofa, every time someone rests a hand there or leans their head back. Skin constantly sheds a mix of natural oil, sweat residue, and whatever lotion or hair product was applied that day, and fabric fibers absorb that mix readily. None of it arrives as a single event, so there is no spill to blot and no moment anyone could have caught. The mark simply gets a shade darker every week until it is noticeable.
That slow accumulation is also why ordinary spot cleaners often make the mark look worse before it gets better: a soap-and-water pass on top of oil-soaked fibers can push the oil sideways into fabric that was still clean, widening the mark instead of shrinking it. Drawing the oil out first with an absorbent powder, the way the general fabric couch guide covers for S-coded upholstery that can’t take liquid cleaners at all, is what actually reduces the mark rather than just moving it around.
This is also why the same sofa can look clean everywhere except two or three touch points. It isn’t failing to get vacuumed or wiped down elsewhere; those spots simply never see the same volume of skin contact. A throw or washable arm cover over the two or three heaviest-contact spots does more to prevent the mark from returning than any stronger cleaner would, since the cover takes the oil instead of the upholstery underneath it.
A napped or woven fabric shows this same buildup differently than a flat weave does: oil changes how light scatters off a synthetic pile or a dense weave rather than simply darkening a flat surface, which is part of why the oil method stays the same but the first read of the mark looks different on a microfiber couch or a velvet one than it does on a plain cotton weave.
Sofa stains by type, and what actually lifts them
| Stain | Treatment | Recoverable |
|---|---|---|
| Fresh drink spill (coffee, soda, juice) | Blot dry immediately, then suds or the vinegar mix if a mark remains | Usually |
| Built-up oil on an armrest or headrest | Absorbent powder left to sit, then brushed off before any soap touches it | Usually, if treated before it darkens further |
| Fresh grease or food oil spot | Same powder method as above, applied right away rather than left to set | Usually, if treated fresh |
| Ballpoint ink | Rubbing alcohol on a cotton swab, tested on a hidden seam first, W or WS fabric only | Often, if caught before it sets fully |
| Dried, unidentified old stain | The vinegar-water mix first; if the mark stays, a professional upholstery cleaner | Sometimes |
| Dye transfer from clothing (denim, colored fabric) | Suds worked gently; a repeat transfer needs a professional cleaner, not more scrubbing | Sometimes |
| Anything on an S or X coded sofa | A dry-cleaning solvent made for upholstery, or a professional; water risks a permanent ring | Rarely at home |
What makes a sofa stain worse while you’re cleaning it
Most of the damage done while trying to clean a sofa stain comes from treating every mark like a fresh spill, or from reaching for whatever is under the sink instead of matching the cleaner to the fabric code.
| Mistake | What happens | Fix |
|---|---|---|
| Scrubbing instead of blotting a fresh spill | Spreads the liquid into surrounding fibers and sets a dye deeper than it would have gone on its own | Blot straight down, moving to a clean section of cloth often |
| Soaping an oil mark before drawing the oil out | Pushes oil sideways into clean fabric instead of lifting it, widening the mark | Powder first, soap only on whatever remains after it’s brushed off |
| Soaking the fabric with a wet cloth | Water reaches the cushion foam underneath, which stays damp long enough to smell | Suds only, lifted with a barely damp rinse cloth right behind it |
| Using bleach or an undiluted household cleaner | Fades or yellows dye on contact and can break down the fabric’s finish | Mild dish soap suds, or a cleaner labeled safe for the fabric’s code |
Bleach or an ammonia-based cleaner on any sofa fabric; a wet-injection steam cleaner on cushion foam you can’t fully dry afterward; or any liquid at all on a sofa coded S until a hidden panel confirms it is safe.
Related guides
- A smell that returns after a sofa looks clean usually sits in the cushion foam, not the fabric surface: how to clean a couch that smells.
- A removable cushion cover follows its own zip tag, which can differ from the sofa frame’s code: how to clean couch cushions.
- Blood is a protein stain with its own cold-water rule that an oil-mark method won’t touch: how to clean a blood stain.
- Leather upholstery fails and stains differently from fabric entirely, since the surface is a finish rather than woven fiber: how to clean a leather sofa.
Questions
How do you get old stains out of a sofa?
Start with the vinegar and distilled water mix, dabbed gently and lifted with a dry cloth, which handles most dried sugary or water-based stains. A mark that doesn’t lift after that, especially one with no clear edge, is more likely built-up oil or a set dye and may need a professional upholstery cleaner rather than a stronger home product.
Why does my sofa have a stain where nothing was ever spilled?
That is almost always skin oil, sweat, and hair or skin care product building up at a contact point like an armrest or headrest, not a one-time spill. It needs an absorbent powder to draw the oil out before any soap touches it, since soaping it directly tends to spread the oil instead of lifting it.
Does baking soda remove stains from a sofa?
It works well on oily, built-up marks when left to sit for fifteen minutes to overnight before being brushed or vacuumed away, since it absorbs oil rather than dissolving it. It does less for a dye-based stain like ink or juice, where the vinegar-water mix or a code-appropriate soap works better.
Can you use vinegar on fabric sofa stains?
Diluted with equal parts distilled water, vinegar is useful on W or WS coded fabric for dried, sugary spills like soda or juice. It isn’t a substitute for checking the code first, and it should never go on a sofa marked S, where any water-based liquid risks a permanent ring.
Should I use a steam cleaner on sofa stains?
A handheld garment steamer used briefly from a short distance is generally fine on W or WS fabric. A carpet-and-upholstery machine with a wet-injection setting pushes far more water into the cushion foam than a hand method, and that foam can take days to dry fully, which is how a cleaned sofa ends up smelling musty afterward.