CSS payload is the quietest performance tax: it renders nothing by itself, but every byte blocks first paint while the browser parses selectors that may never match. We captured the CSS each theme shipped on a standard business page (cached, minified by the theme’s own settings) and measured both size and — more interestingly — how much of it was actually used.
The raw numbers
| Theme | CSS shipped | Actually used | Unused ratio |
|---|---|---|---|
| GeneratePress | 42 KB | 31 KB | 26% |
| Kadence | 48 KB | 35 KB | 27% |
| Astra | 71 KB | 44 KB | 38% |
| OceanWP | 89 KB | 49 KB | 45% |
| Avada | 142 KB | 68 KB | 52% |
Two things the table teaches
Unused ratios grow with feature count. Multipurpose themes ship styles for every module they might ever run — sliders, portfolios, shops — whether or not you use them. That is why module cleanup and CSS payload shrink together.
gzip hides the parse cost, not the parse cost. CSS compresses well on the wire (our 142 KB capture was ~24 KB gzipped), but the browser must decompress and parse all 142 KB before painting. Size on disk is what the parser pays for.
What to do with your own numbers
- Capture your page’s CSS in DevTools (Network tab, filter CSS, sum the transfers).
- Run one file through a coverage audit (Chrome’s Coverage tab) on your homepage.
- If unused ratio exceeds ~50%, look for module toggles before looking for a new theme.
The caveats
CSS size is one dimension. A 42 KB stylesheet that blocks rendering is worse than a 60 KB one split into critical/non-critical. And inlined critical CSS changes the math entirely — see our critical CSS setup guide. For the full performance picture, pair this with the 2026 theme benchmarks, and if your numbers are bad, the free audit will name the files responsible.
As a budget: under 50 KB shipped on a standard page is healthy; 50–90 KB is manageable with good delivery; above 100 KB usually means unused module styles worth auditing. No. gzip shrinks transfer size, but the browser still decompresses and parses the full stylesheet before painting. Parse cost scales with the uncompressed size. A style rule whose selector matches no element on the current page — typically shipped for features the site never uses. Coverage tools measure the ratio per page. Not by editing theme files (updates overwrite). Use the theme's per-module loading toggles, or a minor-CSS optimization plugin, and re-test layouts after.How much CSS is too much for a WordPress theme?
Does gzipping make big CSS harmless?
What is an unused CSS selector?
Can I delete unused CSS from my theme?