Quick answer: Squat-proof = enough weight (260–300 GSM), a dense knit, the right nylon/spandex blend, a supportive waistband, and gusset + seam placement that keeps tension off the seat. Then squat-test every sample under bright light.

1. Fabric weight (the #1 factor)
Below ~220 GSM, most fabrics thin out and go sheer when stretched across the seat. Aim for 260–300 GSM for reliable opacity and that premium compressive feel. See our fabric & GSM guide.
2. The right blend & knit
A high-quality 75–80% nylon / 20–25% spandex (or 94/6 seamless) with a tight, dense knit holds opacity under stretch. Cheap, loosely-knit fabric is the usual culprit behind see-through leggings.
3. Waistband & fit
A wide, high-rise waistband (bonded or with a drawcord) keeps leggings up during movement, so the fabric isn't over-stretched at the seat. V-waist and crossover waists add support and a flattering line.
4. Gusset & seam placement
A gusseted crotch removes the single weak seam where most blowouts and sheerness happen, and improves comfort and durability. Flatlock seams keep things smooth and chafe-free.
5. The squat test
Every fit sample should be squat-tested on a real body under bright light: deep squat, lunge, forward fold. If you can see through it or the seams gape, the fabric or fit needs work. A serious factory does this as standard — ask to see it.
Seamless vs cut-and-sew for squat-proofing
Both can be squat-proof. Seamless removes side seams entirely for a smooth look; cut-and-sew lets you add a structured gusset and compression panels. Compare in seamless vs cut-and-sew.

Why fabric goes sheer (the physics)
Sheerness is stretch outrunning density. Every knit has a cover factor — how completely the yarn fills the surface. Stretch a fabric 60–80% over the hip and the loops open; if the resting density was marginal, light passes through. Three specs control it: GSM (yarn mass per area), the knit structure (tighter gauge and double-layer zones raise cover), and spandex ratio (recovery pulls loops closed after each stretch). A 190 GSM single-layer knit will fail a deep squat regardless of marketing copy; a 240 GSM 75/25 with a dense seat map passes all day. Color matters too — light heathers reveal what solid black forgives, so test your palest colorway, not your black.
The squat test protocol we run at QC
Do it like a factory, not an influencer. Fit the target-size wearer, natural daylight plus one hard directional light. Full-depth squat, hold, photograph the seat from one meter with pale underwear beneath — that is the worst case your customer will meet. Repeat after five wash cycles, because cheap knits lose density fast. Then the stretch-and-look bench test: pull a swatch to 70% extension over a printed page; if you can read text through it, reject the lot. Write the pass condition into your QC checklist ("no print legible at 70% extension, seat area, after wash 5") so it is objective, not vibes — our AQL guide shows where it slots into inspection.
The spec that reliably passes
If you want a shortcut to write into a tech pack: 75/25 nylon-spandex, 220–260 GSM, high-gauge circular knit with a densified seat-and-waist map, matte finish (sheen exaggerates stretch highlights). That is not the only passing recipe, but across thousands of styles it is the most forgiving one. Going lighter for summer? Compensate with structure — double-layer seat panels knitted in — rather than hoping. And insist the factory confirms GSM on the bulk lot, not just the sample: a 20 GSM silent downgrade is the classic way a good sample becomes a sheer production run.
Waistband engineering: the no-roll problem
Sheerness gets the headlines, but waistband roll generates just as many returns. Roll happens when band tension exceeds the friction holding it flat — thin bands on strong compression always lose. The fixes are structural: band height (7–10 cm high-rise bands distribute load), a knitted-in density gradient rather than a sewn-on tube, and matching band compression to body compression so the transition doesn't hinge. Test protocol: 20 deep squats plus 5 minutes seated — a band that survives sitting survives everything. If a sample rolls, ask the factory to adjust the band's knit map, not just "make it tighter"; tighter usually rolls worse.
Color and finish change the passing grade
The same fabric passes in black and fails in lilac. Light shades reduce visual density roughly one grade — so spec your palest colorway one weight class up, or accept a double-layer seat. Finish matters equally: sheen finishes highlight stretch zones under gym lighting (every stretch mark becomes a specular line), while matte hides them; brushed interiors add opacity but change the drape. And after five washes, cheap knits lose density where premium ones stabilise — which is why our squat protocol tests washed garments, not fresh ones. Put the wash-5 recheck in your QC standard and light-color risk disappears before launch instead of in reviews.
The exact pass/fail numbers we run — GSM floors by colour, growth, pilling, ΔE and tolerances — are published in QC thresholds.
Table 1 — The opacity floor by shade (our production thresholds)
Opacity is not one number: the same knit that is opaque in black is sheer in bone. These are the floors we hold before a lot ships, squat-tested at full stretch on two sizes.
| Shade family | Our GSM floor | Why it differs | Typical failure if under |
|---|---|---|---|
| Black, charcoal, deep navy | ≥190 GSM | Dark pigment absorbs light, so less passes through the loop gaps | Rare; shows first at the seat under strong backlight |
| Mid tones (olive, wine, cobalt, mid grey) | ≥220 GSM | Moderate absorption; loop openings start to read at stretch | Grin-through at the seat and outer thigh |
| Light and nude (bone, sand, blush, light grey) | ≥240 GSM | Light passes through and skin tone reads through the yarn itself | Visible skin tone in a deep squat, worst in daylight |
This is why a factory that quotes a single GSM for a whole colour range has not thought about opacity. The nude shade range guide covers the extra step light shades need.
Table 2 — What actually controls opacity, in order of leverage
| Lever | Effect on opacity | Cost impact | How it is specified |
|---|---|---|---|
| Fabric weight (GSM) | Highest. More yarn per square metre = smaller light paths | Direct — yarn is the main cost line | Mass per unit area, per shade family |
| Machine gauge | High. Finer needles make smaller loops, so a fine gauge is more opaque at the same weight | Machine time; no material cost | Needles per inch — see the gauge guide |
| Yarn type & filament count | Medium. High-filament microfibre fills the loop better than a coarse yarn of the same weight | Moderate | Denier / filament count, e.g. 40D/68F |
| Elastane share & stretch level | Medium. More stretch at wear = more open loops at the moment of the squat | Low | Elastane %, plus a growth limit |
| Recovery (growth after wear) | Medium, and the reason garments go sheer over time rather than on day one | Low | Growth ≤8% after repeated extension |
| Shade | Medium — sets which floor above applies | None | Lab dip approved on the actual knit structure |
| Panel/seam placement | Low but visible. A seam crossing the seat concentrates stretch | None | Gusset set back, no centre-back seam at the seat |
Table 3 — Squat-test protocols compared
“We squat-tested it” means nothing without the protocol. These are the three levels we see, and the one we run.
| Level | What is done | What it catches | What it misses |
|---|---|---|---|
| Hand stretch | Fabric pulled over a hand or knee toward a light | Gross under-weight fabric | Seat-specific failure; failure after recovery loss |
| Single-size wear test | One sample size squatted once, indoor light | Obvious sheerness in that size | Size-range failure — the largest size stretches most |
| Our protocol | Two sizes including the largest in the range, deep squat held, photographed against a mid-grey ground in daylight and under flash, repeated after 5 stretch cycles | Seat sheerness, size-range failure, and loss of opacity after recovery drops | Long-term wash and abrasion effects (covered separately by pilling and colourfastness testing) |
The reason we photograph under flash as well as daylight is retail reality: a customer’s gym mirror selfie is a harsher opacity test than any showroom.
Sources & standards
Opacity has no single dedicated ISO or ASTM test for apparel knits — which is precisely why factories run in-house squat protocols and why publishing yours is worth something. What is standardised are the inputs that decide it, and those are testable on any lot:
| Standard | What it measures | Why it matters here |
|---|---|---|
| ASTM D3776/D3776M — Mass Per Unit Area (Weight) of Fabric | GSM, by test method rather than by claim | The single biggest lever on opacity — verify it, do not take it on trust |
| ISO 3801 — Textiles: determination of mass per unit length and per unit area | GSM (ISO counterpart) | The figure EU-facing buyers usually ask for |
| ASTM D2594 — Stretch Properties of Knitted Fabrics Having Low Power | Stretch and growth | Growth is why leggings go sheer months in, not on day one |
| ISO 9237 — Determination of permeability of fabrics to air | Air flow through the fabric | A proxy for how open the knit structure is |
| ISO 12945-2 — Fabric propensity to surface fuzzing and pilling (Martindale) | Surface abrasion resistance | Abraded surfaces thin locally and lose opacity at the seat |
| ISO 105-E04 — Colour fastness to perspiration | Shade stability against sweat | A faded light shade is a thinner-looking shade |
| ISO 2859-1:2026 — Sampling procedures for inspection by attributes (AQL) | How many pieces get inspected, and the accept/reject rule | An opacity spec is only as good as the sampling that enforces it |
| AATCC test methods | US-side textile test method index | Where US retail programmes usually pull their required methods from |
| OEKO-TEX® Standard 100 label check | Certificate validity lookup | Verify any chemistry claim attached to the fabric you are buying |
FAQ
What GSM makes leggings squat-proof?
260–300 GSM with a dense knit is the reliable squat-proof range. Below ~220 GSM risks sheerness.
Why do leggings go see-through?
Usually low fabric weight, a loose knit, or fit that over-stretches the seat. Heavier, denser fabric and a supportive waistband fix it.