CSS Minify Tests
Correctness tests for CSS minification tools. Each test provides a CSS input and a single canonical minified output. A tool passes if its output matches exactly.
Summary
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
| v5.3.3 | v0.0.26 | v0.0.10 | v8.0.2 | v5.0.5 | v0.28.1 | v1.32.0 | v1.101.0 | |
| anchor | 2 / 5 | 1 / 5 | 5 / 5 | 2 / 5 | 2 / 5 | 1 / 5 | 0 / 5 | 1 / 5 |
| charset | 1 / 2 | 0 / 2 | 2 / 2 | 1 / 2 | 1 / 2 | 0 / 2 | 1 / 2 | 1 / 2 |
| colors | 21 / 62 | 57 / 62 | 62 / 62 | 30 / 62 | 24 / 62 | 29 / 62 | 35 / 62 | 19 / 62 |
| combined | 0 / 2 | 0 / 2 | 2 / 2 | 0 / 2 | 0 / 2 | 0 / 2 | 1 / 2 | 0 / 2 |
| comments | 4 / 5 | 2 / 5 | 5 / 5 | 3 / 5 | 3 / 5 | 3 / 5 | 2 / 5 | 3 / 5 |
| container | 2 / 6 | 2 / 6 | 6 / 6 | 1 / 6 | 1 / 6 | 1 / 6 | 4 / 6 | 0 / 6 |
| counter-style | 1 / 3 | 2 / 3 | 3 / 3 | 1 / 3 | 3 / 3 | 0 / 3 | 1 / 3 | 1 / 3 |
| duplicates | 15 / 19 | 5 / 19 | 19 / 19 | 11 / 19 | 15 / 19 | 10 / 19 | 13 / 19 | 5 / 19 |
| empty-rules | 6 / 6 | 0 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 |
| escaping | 3 / 13 | 12 / 13 | 13 / 13 | 4 / 13 | 4 / 13 | 11 / 13 | 12 / 13 | 10 / 13 |
| font-face | 3 / 13 | 2 / 13 | 13 / 13 | 4 / 13 | 3 / 13 | 4 / 13 | 5 / 13 | 2 / 13 |
| gradients | 0 / 5 | 0 / 5 | 5 / 5 | 0 / 5 | 0 / 5 | 1 / 5 | 4 / 5 | 0 / 5 |
| import | 0 / 5 | 4 / 5 | 5 / 5 | 0 / 5 | 0 / 5 | 4 / 5 | 0 / 5 | 0 / 5 |
| keyframes | 0 / 2 | 0 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 0 / 2 |
| layer | 1 / 2 | 0 / 2 | 2 / 2 | 0 / 2 | 0 / 2 | 0 / 2 | 2 / 2 | 0 / 2 |
| media | 1 / 9 | 1 / 9 | 9 / 9 | 1 / 9 | 1 / 9 | 1 / 9 | 8 / 9 | 1 / 9 |
| merging | 7 / 10 | 3 / 10 | 10 / 10 | 9 / 10 | 6 / 10 | 5 / 10 | 9 / 10 | 4 / 10 |
| nesting | 0 / 20 | 8 / 20 | 20 / 20 | 8 / 20 | 0 / 20 | 10 / 20 | 4 / 20 | 5 / 20 |
| page | 3 / 4 | 3 / 4 | 4 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 2 / 4 |
| property | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 0 / 2 | 2 / 2 | 2 / 2 |
| scope | 1 / 3 | 1 / 3 | 3 / 3 | 1 / 3 | 1 / 3 | 2 / 3 | 1 / 3 | 0 / 3 |
| selectors | 11 / 17 | 4 / 17 | 17 / 17 | 12 / 17 | 7 / 17 | 10 / 17 | 16 / 17 | 5 / 17 |
| selectors-advanced | 4 / 22 | 5 / 22 | 22 / 22 | 5 / 22 | 5 / 22 | 6 / 22 | 5 / 22 | 5 / 22 |
| shorthands | 29 / 74 | 8 / 74 | 74 / 74 | 22 / 74 | 21 / 74 | 19 / 74 | 54 / 74 | 3 / 74 |
| starting-style | 0 / 2 | 2 / 2 | 2 / 2 | 1 / 2 | 2 / 2 | 2 / 2 | 1 / 2 | 2 / 2 |
| supports | 3 / 5 | 1 / 5 | 5 / 5 | 3 / 5 | 3 / 5 | 1 / 5 | 3 / 5 | 1 / 5 |
| transforms | 0 / 11 | 0 / 11 | 11 / 11 | 7 / 11 | 0 / 11 | 8 / 11 | 11 / 11 | 0 / 11 |
| values | 16 / 75 | 20 / 75 | 75 / 75 | 58 / 75 | 20 / 75 | 34 / 75 | 57 / 75 | 31 / 75 |
| whitespace | 13 / 21 | 17 / 21 | 21 / 21 | 14 / 21 | 16 / 21 | 13 / 21 | 16 / 21 | 12 / 21 |
| zero-units | 10 / 13 | 12 / 13 | 13 / 13 | 9 / 13 | 10 / 13 | 9 / 13 | 13 / 13 | 8 / 13 |
| Total | 159 / 438 | 174 / 438 | 438 / 438 | 220 / 438 | 161 / 438 | 195 / 438 | 291 / 438 | 129 / 438 |
| Total (%) | 36.3% | 39.72% | 100% | 50.22% | 36.75% | 44.52% | 66.43% | 29.45% |
| Total Duration | 71ms | 91ms | 209ms | 466ms | 81ms | 276ms | 9ms | 359ms |
Historical Trends
Pass rate over time across 41 recorded runs.
anchor #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
position-area center center shortens to center
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
4ms 32ms 8ms 50ms 4ms 14ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
position-area drops default center axis
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 2ms 1ms 2ms
|
||||||||
0003
|
||||||||
Details
@position-try equivalent to flip-block tacticA Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 11ms 2ms 1ms 1ms 1ms 3ms
|
||||||||
0004
|
||||||||
Details
Empty @position-try removalAn empty Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Unresolved position-try-fallbacks must be retained
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 2ms
|
||||||||
| Subtotal | 2 / 5 | 1 / 5 | 5 / 5 | 2 / 5 | 2 / 5 | 1 / 5 | 0 / 5 | 1 / 5 |
| Percent | 40% | 20% | 100% | 40% | 40% | 20% | 0% | 20% |
| Duration | 6ms | 32ms | 21ms | 56ms | 7ms | 17ms | 1ms | 10ms |
charset #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@charset removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
2ms 3ms 2ms 2ms 3ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
Duplicate @charset removalOnly the first @charset declaration is meaningful; subsequent @charset rules are dropped. Uses two non-UTF-8 charsets to avoid special-casing UTF-8 removal. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 2 | 0 / 2 | 2 / 2 | 1 / 2 | 1 / 2 | 0 / 2 | 1 / 2 | 1 / 2 |
| Percent | 50% | 0% | 100% | 50% | 50% | 0% | 50% | 50% |
| Duration | 3ms | 3ms | 3ms | 4ms | 3ms | 2ms | 1ms | 3ms |
colors #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Hex shortening
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Hex to named color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 2ms
|
||||||||
0003
|
||||||||
Details
rgb() to named color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 4ms
|
||||||||
0004
|
||||||||
Details
rgba() with alpha=1Fully opaque Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
rgb() to named color (non-trivial)
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Hex shortening (non-white)
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
RGBA to hex alpha notation
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
hsl() to named color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0009
|
||||||||
Details
rgba() zero alpha to short hex
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
HWB to shorter representation
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 2ms 1ms 1ms 2ms
|
||||||||
0011
|
||||||||
Details
Named color to shorter hex
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
RGB to named color (olive)
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
HSL to named color (green)
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Uppercase hex to lowercase shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Modern rgb() with alpha to 8-digit hex
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0016
|
||||||||
Details
Modern rgb() with alpha 1 to named colorThe modern space-separated Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Modern hsl() with alpha to 8-digit hex
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
color-mix() with known colors flattened to named color
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 2ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0019
|
||||||||
Details
color-mix() default percentages flattened to named colorWhen Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Static relative color syntax resolves to plain color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 12ms
|
||||||||
0021
|
||||||||
Details
rgb() none keyword resolves to 0 outside interpolation
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
8-digit hex with non-repeating alpha must not shorten
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
Named color shorter than any hex equivalent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0024
|
||||||||
Details
color-mix with none channel uses the other color's valueIn interpolation contexts like Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0025
|
||||||||
Details
currentColor must not be resolved
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0026
|
||||||||
Details
oklch() numeric minification
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0027
|
||||||||
Details
oklab() rounding: out-of-gamut colours stay in native space
In-gamut oklab colours may be minified to hex if the hex form is shorter. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0028
|
||||||||
Details
color-mix identity resolves to the color itself
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
color-mix in oklch resolved to oklch value
For a lot more detail on rounding, read Too Much Color. Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0030
|
||||||||
Details
display-p3 color must not be converted to sRGB
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
color-mix with var(): minify literal color argument
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
color-mix with var(): minify hsl to named color
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0033
|
||||||||
Details
color-mix: elide default oklab interpolation spacePer CSS Color 5, Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0034
|
||||||||
Details
Named color to hex enables space elision
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
3ms 1ms 1ms 6ms 1ms 1ms 1ms 1ms
|
||||||||
0035
|
||||||||
Details
Out-of-gamut display-p3 color must not be clamped
Additionally Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 1ms 1ms 1ms 1ms 6ms
|
||||||||
0036
|
||||||||
Details
color-mix() with 100% first color eliminates to that color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0037
|
||||||||
Details
color-mix() with 0% first color eliminates to the second color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0038
|
||||||||
Details
Redundant 50% percentages removed from color-mix()
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0039
|
||||||||
Details
Redundant "shorter hue" removed from color-mix()
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0040
|
||||||||
Details
Inner colors minified inside color-mix()
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0041
|
||||||||
Details
color-mix() with 0% second color eliminates to the first color
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0042
|
||||||||
Details
color-mix() percentages below 100% produce semi-transparent result
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0043
|
||||||||
Details
color-mix() with percentages summing over 100% must normalize
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0044
|
||||||||
Details
color-mix() in oklch resolved to oklch() when out of sRGB gamut
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0045
|
||||||||
Details
Fractional sRGB channels round to integers
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0046
|
||||||||
Details
oklch/oklab excess precision rounds to 3 decimal placesoklch and oklab use a 0-1 lightness scale and small chroma/a/b ranges. dEOk JND
is 0.02, so 3dp (0.001) on L/C/a/b gives two orders of magnitude headroom.
Hue at 1dp (0.1 deg) contributes ~0.0003 dEOk - effectively zero. A minifier
can round e.g. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0047
|
||||||||
Details
lch/lab excess precision rounds to 1 decimal placeCIE LCH and Lab use a 0-100 lightness scale, chroma up to ~150, and a/b axes
of roughly -128 to 128. dE00 JND is 2.0. At 0dp (integers) the worst-case
error is already sub-JND for L/C/a/b, but lch chroma at 0dp can hit ~0.5 dE00.
1dp gives two orders of magnitude headroom (worst-case ~0.05 dE00 for all
channels). A minifier can round e.g. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0048
|
||||||||
Details
color(srgb-linear) excess precision rounds to 4 decimal placessRGB-linear channels are in the 0–1 range. Unlike other 0–1 colour spaces which use 3dp, srgb-linear needs 4dp because its linear transfer function amplifies rounding errors for near-black values at 3dp. Alpha is 0–1, so 3dp applies. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0049
|
||||||||
Details
color(display-p3) excess precision rounds to 3 decimal placesDisplay P3 channels are in the 0–1 range. 3dp is well below the perceptual JND and provides sufficient headroom for chained colour operations. Alpha is 0–1, so 3dp applies there too. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0050
|
||||||||
Details
color(a98-rgb) excess precision rounds to 3 decimal placesA98 RGB channels are in the 0–1 range. 3dp is well below the perceptual JND. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0051
|
||||||||
Details
color(prophoto-rgb) excess precision rounds to 3 decimal placesProPhoto RGB channels are in the 0–1 range. 3dp is well below the perceptual JND. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0052
|
||||||||
Details
color(rec2020) excess precision rounds to 3 decimal placesRec. 2020 channels are in the 0–1 range. 3dp is well below the perceptual JND. Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0053
|
||||||||
Details
color(xyz-d65) excess precision rounds to 4 decimal placesXYZ D65 channels in CSS Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0054
|
||||||||
Details
color(xyz-d50) excess precision rounds to 4 decimal placesXYZ D50 channels in CSS Both colours here are out-of-gamut for sRGB, so they stay in their native colour space. In-gamut colours may be minified to hex. For a lot more detail on this, read Too Much Color. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0055
|
||||||||
Details
In-gamut oklab colour is minified to hex
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0056
|
||||||||
Details
In-gamut display-p3 colour is minified to shortest sRGB form
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0057
|
||||||||
Details
Named colors as quoted stringsWhen a quoted string contains a named color ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0058
|
||||||||
Details
Hex colors as quoted stringsWhen a quoted string contains a long form hex value ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0059
|
||||||||
Details
URL strings containing color namesWhen a URL path string contains a color name, it should not be minified to a hex value. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0060
|
||||||||
Details
color-mix() with 3 colors (N-color support)
These colours have been carefully chosen so that the mix remains in-gamut,
meaning the result can safely be reduced to Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0061
|
||||||||
Details
color-mix() all-zero percentages become transparent black
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0062
|
||||||||
Details
color-mix() N-color with var() cannot be resolved
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 21 / 62 | 57 / 62 | 62 / 62 | 30 / 62 | 24 / 62 | 29 / 62 | 35 / 62 | 19 / 62 |
| Percent | 33.87% | 91.93% | 100% | 48.38% | 38.7% | 46.77% | 56.45% | 30.64% |
| Duration | 12ms | 12ms | 53ms | 62ms | 16ms | 40ms | 1ms | 81ms |
combined #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Merge rules after property and selector optimizationsThis test validates correct order of operations in a minifier. If the merging or de-duplication of rules occurs prior to selector and/or property optimizations, then it will miss out on opportunities for merging identical rules that are only revealed after they've had those optimizations.
Before attempting to pass this test, first pass the tests it combines:
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
2ms 1ms 3ms 6ms 1ms 1ms 1ms 4ms
|
||||||||
0002
|
||||||||
Details
Merge identical adjacent rules after color minificationAfter other optimizations are complete, like minifying color representations, merge any identical adjacent rules. Combines:
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 3ms 1ms 1ms 1ms 5ms
|
||||||||
| Subtotal | 0 / 2 | 0 / 2 | 2 / 2 | 0 / 2 | 0 / 2 | 0 / 2 | 1 / 2 | 0 / 2 |
| Percent | 0% | 0% | 100% | 0% | 0% | 0% | 50% | 0% |
| Duration | 3ms | 2ms | 7ms | 9ms | 3ms | 1ms | 1ms | 8ms |
container #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@container whitespace removalRemove whitespace inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Empty @container removalAn Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Container style query whitespace
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Convert min-width to range syntax in @container
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Convert max-width to range syntax in @container
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Named container with min-width to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 2 / 6 | 2 / 6 | 6 / 6 | 1 / 6 | 1 / 6 | 1 / 6 | 4 / 6 | 0 / 6 |
| Percent | 33.33% | 33.33% | 100% | 16.66% | 16.66% | 16.66% | 66.66% | 0% |
| Duration | 1ms | 1ms | 2ms | 4ms | 1ms | 3ms | 1ms | 4ms |
counter-style #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@counter-style whitespace removalBasic whitespace minification inside a Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Empty @counter-style removalAn empty Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Quoted symbols must preserve quotes
The whitespace between quotes can be removed for a very slight improvement in compression. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 3 | 2 / 3 | 3 / 3 | 1 / 3 | 3 / 3 | 0 / 3 | 1 / 3 | 1 / 3 |
| Percent | 33.33% | 66.66% | 100% | 33.33% | 100% | 0% | 33.33% | 33.33% |
| Duration | 1ms | 1ms | 5ms | 2ms | 1ms | 2ms | 1ms | 2ms |
duplicates #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Duplicate declaration removalWhen a property is declared twice in the same rule, the last value wins. The earlier duplicate should be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Duplicate rule removalWhen two adjacent rules share the same selector and the later one completely overrides the earlier, the earlier rule can be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Duplicate rule removal with intervening ruleWhen a later rule completely overrides an earlier rule with the same selector, the earlier rule should be removed even with other rules between them. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Duplicate selector removal within a ruleDuplicate selectors in a selector list should be deduplicated. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Duplicate properties with env() fallback must be preservedThe plain Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 6ms 1ms 1ms 1ms 2ms
|
||||||||
0006
|
||||||||
Details
Duplicate declaration removal with !importantWhen a property is declared with Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Entirely identical rule removalWhen two rules have the same selector and identical declarations, the duplicate rule is fully redundant and should be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Vendor-prefixed duplicate can be dropped when targeting modern browsersWith a modern browserslist target, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Duplicate complex selectors in a selector listDuplicate compound/complex selectors within a selector list should be deduplicated, including selectors beyond simple type selectors. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Duplicate rules with reordered selectorsTwo rules with the same selectors in different order and identical declarations are equivalent. Remove the duplicate by normalizing selector order. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Flat and nested equivalent rules should dedup
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0012
|
||||||||
Details
Partial duplicate rule absorbed by supersetWhen a later rule for the same selector contains all declarations of an earlier rule plus additional ones, the earlier rule is redundant and can be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
!important wins on custom propertiesWhen a custom property has both a normal and Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Duplicate shorthand property override
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
UNSAFE: border-top before border-block must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
UNSAFE: margin-left before margin-inline-start must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
UNSAFE: padding-top before padding-block-start must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
UNSAFE: inset-block-start before top must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
Duplicate custom property removalWhen a property is declared twice containing custom property values in the same rule, the last value wins. The earlier duplicate should be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 15 / 19 | 5 / 19 | 19 / 19 | 11 / 19 | 15 / 19 | 10 / 19 | 13 / 19 | 5 / 19 |
| Percent | 78.94% | 26.31% | 100% | 57.89% | 78.94% | 52.63% | 68.42% | 26.31% |
| Duration | 5ms | 5ms | 12ms | 25ms | 3ms | 11ms | 1ms | 16ms |
empty-rules #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Empty rule removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Empty rule with commentA rule containing only a comment has no declarations and should be removed. Comments are stripped during minification so the rule body becomes empty. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @media ruleAn Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Empty nested ruleAn empty nested rule ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Remove parent selector when all nested selectors are emptyThis verifies that stray empty selectors are not left behind after empty child selectors are removed. If minified correctly, the result will be 0 bytes. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Remove empty rules with advanced selectorsThis verifies that less common selectors do not impact the removal of empty rules during minification. If minified correctly, the result will be 0 bytes. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 6ms 1ms 1ms 1ms 2ms
|
||||||||
| Subtotal | 6 / 6 | 0 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 | 6 / 6 |
| Percent | 100% | 0% | 100% | 100% | 100% | 100% | 100% | 100% |
| Duration | 1ms | 2ms | 4ms | 10ms | 1ms | 4ms | 1ms | 6ms |
escaping #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Escape sequence resolution in identifiers
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Escape sequence resolution in strings
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Multiple consecutive hex escapes in class selector
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Hex escape for hyphen-minus in element name
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Hex escape in attribute selector name
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Digit-start identifier must keep escape
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Newline escape in string must be preserved
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Escape of special character in class name
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Hex escape in ID selector
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Hex escape in compound selector class
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0011
|
||||||||
Details
Hex escape in standard property name
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Hex escape in custom property name
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Escaping HREF attribute valuesAttribute selectors can include values in optional quotes. Since HREF
specifically deals with URL paths, they will naturally contain characters that
need escaped if not wrapped in quotes ( Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 5ms
|
||||||||
| Subtotal | 3 / 13 | 12 / 13 | 13 / 13 | 4 / 13 | 4 / 13 | 11 / 13 | 12 / 13 | 10 / 13 |
| Percent | 23.07% | 92.3% | 100% | 30.76% | 30.76% | 84.61% | 92.3% | 76.92% |
| Duration | 2ms | 1ms | 4ms | 12ms | 2ms | 7ms | 1ms | 14ms |
font-face #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@font-face whitespace removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
font-family quote removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
url() quote removal in @font-face srcQuotes inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
format() string to keyword conversionThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
font-family quotes required for generic family keywordsUnquoting Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
unicode-range wildcard compression
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Use ranges for adjacent unicode-range valuesIf there are multiple adjacent (off by 1) unicode values in a unicode range,
the first and last item in a group can be combined in a range
( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Remove duplicate unicode-range valuesIf a unicode-range contains a duplicate value it can be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Remove unicode-range values that exist in other unicode rangesIf a unicode range contains a duplicate value that is stored in another range, the duplicate can be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Merge overlapping unicode rangesIf unicode ranges overlap, merge them into one range. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Merge unicode ranges with wildcards that are encompassed by larger rangesIf a unicode range with wildcards is fully encompassed by other ranges, merge
them into one range. For example, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Merge overlapping unicode ranges with wildcardsIf a unicode range with wildcards has a partial overlap with other ranges, merge
them into one range. For example, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Merge overlapping unicode ranges into wildcardWhen unicode ranges map to a set of values that could be represented with wildcards, they should be replaced with the wildcard to reduce character count. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 3 / 13 | 2 / 13 | 13 / 13 | 4 / 13 | 3 / 13 | 4 / 13 | 5 / 13 | 2 / 13 |
| Percent | 23.07% | 15.38% | 100% | 30.76% | 23.07% | 30.76% | 38.46% | 15.38% |
| Duration | 1ms | 1ms | 4ms | 13ms | 1ms | 8ms | 1ms | 8ms |
gradients #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Default gradient direction omission
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
180deg gradient direction omission
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Gradient direction keyword to angle
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Redundant gradient stop positions
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Default radial-gradient shape and position
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 5 | 0 / 5 | 5 / 5 | 0 / 5 | 0 / 5 | 1 / 5 | 4 / 5 | 0 / 5 |
| Percent | 0% | 0% | 100% | 0% | 0% | 20% | 80% | 0% |
| Duration | 2ms | 3ms | 3ms | 6ms | 3ms | 3ms | 1ms | 4ms |
import #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
url() to string form in @import
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
@import with media query
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Unquoted url() to string form in @import
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
@import with layer keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
@import with layer() and supports()
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 5 | 4 / 5 | 5 / 5 | 0 / 5 | 0 / 5 | 4 / 5 | 0 / 5 | 0 / 5 |
| Percent | 0% | 80% | 100% | 0% | 0% | 80% | 0% | 0% |
| Duration | 1ms | 1ms | 1ms | 4ms | 1ms | 3ms | 1ms | 4ms |
keyframes #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@keyframes
|
||||||||
0002
|
||||||||
Details
Keyframes from/to keyword optimization
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 2 | 0 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 0 / 2 |
| Percent | 0% | 0% | 100% | 100% | 100% | 100% | 100% | 0% |
| Duration | 1ms | 1ms | 1ms | 2ms | 1ms | 1ms | 1ms | 2ms |
layer #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Duplicate @layer statement removalDuplicate Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Non-adjacent @layer blocks can mergeLayer ordering is determined by first appearance of the layer name, not by
physical position of rule blocks. Two Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 2 | 0 / 2 | 2 / 2 | 0 / 2 | 0 / 2 | 0 / 2 | 2 / 2 | 0 / 2 |
| Percent | 50% | 0% | 100% | 0% | 0% | 0% | 100% | 0% |
| Duration | 1ms | 1ms | 5ms | 2ms | 1ms | 1ms | 1ms | 2ms |
media #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@media whitespace removalStrip whitespace inside a basic Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Nested @media must not be mergedNested Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Remove redundant 'all and' in @media
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Adjacent identical @media mergeAdjacent @media blocks with the same query should be merged into one. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Convert min-width to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Convert max-width to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Convert min-height to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Convert max-height to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Combined min/max-width to range syntax
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 9 | 1 / 9 | 9 / 9 | 1 / 9 | 1 / 9 | 1 / 9 | 8 / 9 | 1 / 9 |
| Percent | 11.11% | 11.11% | 100% | 11.11% | 11.11% | 11.11% | 88.88% | 11.11% |
| Duration | 1ms | 2ms | 4ms | 8ms | 2ms | 5ms | 1ms | 9ms |
merging #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Merge adjacent rules with same selectorAdjacent rules sharing the same selector can be merged into one rule with combined declarations. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Merge adjacent rules with same declarationsAdjacent rules with identical declarations can merge their selectors into a comma-separated list. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Merge adjacent @media with same queryAdjacent @media rules with the same query can be merged into a single @media block. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Remove empty @media ruleAn @media rule with no content should be removed entirely. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Partial merge of shared declarationsWhen adjacent rules share some declarations, the common part can be factored out. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Overridden @keyframes removalWhen two @keyframes share the same name, only the last definition is kept. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Merging rules is unsafe with the all propertyMerging Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Non-adjacent @media merge is unsafe due to cascadeMerging two identical Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Merging rules is unsafe with all:initialMerging Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Merging rules is unsafe with all:revert-layerMerging Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 7 / 10 | 3 / 10 | 10 / 10 | 9 / 10 | 6 / 10 | 5 / 10 | 9 / 10 | 4 / 10 |
| Percent | 70% | 30% | 100% | 90% | 60% | 50% | 90% | 40% |
| Duration | 2ms | 1ms | 5ms | 13ms | 2ms | 6ms | 1ms | 7ms |
nesting #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Basic nesting whitespace removalA nested style rule inside a parent rule should be minified in place, preserving the nesting structure while removing whitespace. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Nested & selector with pseudo-class
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Nested & with compound class selector
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Nested child combinator with implicit &
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Multi-level nestingThree levels of nesting ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Nested @media inside a style ruleA conditional Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Redundant & removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Doubled & selector
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0009
|
||||||||
Details
& in non-initial position
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Introduce nesting to shorten repeated parent selectorsThree flat rules sharing Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Introduce nesting for pseudo-class
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Introduce nesting for child combinator
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Flatten descendant nesting with empty parentWhen a parent rule has no declarations of its own, the nested child can be
flattened into a single descendant selector. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Flatten child combinator nesting with empty parent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Flatten next-sibling combinator nesting with empty parent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Flatten subsequent-sibling combinator nesting with empty parent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Nested rules with mixed combinators stay nestedWhen a parent has no own declarations but multiple nested children, keeping the nesting is shorter than flattening because the parent selector only appears once instead of being repeated for each child rule. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Flatten &:pseudo from empty parent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
Duplicate nested rules should dedup and flattenTwo identical Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Introduce nesting to shorten repeated class selectorsThis test validates simple repeated selectors with matching parent classes and different child classes get nested during minificaiton to reduce the duplication of the parent class in the selector. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 20 | 8 / 20 | 20 / 20 | 8 / 20 | 0 / 20 | 10 / 20 | 4 / 20 | 5 / 20 |
| Percent | 0% | 40% | 100% | 40% | 0% | 50% | 20% | 25% |
| Duration | 2ms | 2ms | 6ms | 18ms | 4ms | 12ms | 1ms | 18ms |
page #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@page whitespace removalBasic whitespace removal in a Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Named @page pseudo-class
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @page removalAn empty Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
@page margin at-rules
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 3 / 4 | 3 / 4 | 4 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 2 / 4 |
| Percent | 75% | 75% | 100% | 75% | 75% | 75% | 75% | 50% |
| Duration | 1ms | 1ms | 1ms | 2ms | 1ms | 2ms | 1ms | 2ms |
property #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@property whitespace removalRemove whitespace inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
@property descriptor preservationAll three descriptors ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 2 / 2 | 0 / 2 | 2 / 2 | 2 / 2 |
| Percent | 100% | 100% | 100% | 100% | 100% | 0% | 100% | 100% |
| Duration | 1ms | 1ms | 1ms | 2ms | 1ms | 1ms | 1ms | 1ms |
scope #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@scope whitespace removalBasic whitespace removal in Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
@scope with proximity limit
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @scope removalAn empty Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 3 | 1 / 3 | 3 / 3 | 1 / 3 | 1 / 3 | 2 / 3 | 1 / 3 | 0 / 3 |
| Percent | 33.33% | 33.33% | 100% | 33.33% | 33.33% | 66.66% | 33.33% | 0% |
| Duration | 1ms | 1ms | 1ms | 2ms | 1ms | 1ms | 1ms | 1ms |
selectors #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
nth-child
|
||||||||
0002
|
||||||||
Details
nth-child redundant +0 removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
nth-child positive sign removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
nth-child zero-step simplification
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
nth-child(2n) preserved
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
nth-child(1) to first-child
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
nth-last-child(1) to last-child
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
:nth-child(1n) shorthand
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
:nth-of-type(1) to :first-of-type
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
:nth-last-of-type(1) to :last-of-type
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Double-colon to single-colon pseudo-element
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Universal selector preservationThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Redundant universal selector before ID
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Attribute selector quote removalQuotes around attribute values can be removed when the value is a valid identifier. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
::view-transition-group must keep double colon
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Escape singular space in attribute selector valueWhen an attribute selector's value contains a single space, the quotes can be removed and the space can be escaped to reduce character count. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Multiple spaces in attribute value remain quotedWhen an attribute selector's value contains multiple spaces, the quotes surrounding them must remain in tact to be valid syntax. The spaces should not be escaped, because it is equal or fewer characters to keep them quoted. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 11 / 17 | 4 / 17 | 17 / 17 | 12 / 17 | 7 / 17 | 10 / 17 | 16 / 17 | 5 / 17 |
| Percent | 64.7% | 23.52% | 100% | 70.58% | 41.17% | 58.82% | 94.11% | 29.41% |
| Duration | 1ms | 1ms | 2ms | 13ms | 3ms | 10ms | 1ms | 11ms |
selectors-advanced #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
:is() decomposition with equal-specificity selectors
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
:is() must not decompose with mixed specificity
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
:has() whitespace removalWhitespace inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
:where() whitespace removalWhitespace inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
input:not(:invalid) to input:validOn form elements Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
:not(:dir(ltr)) to :dir(rtl)Every element has exactly one directionality -- Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Double :not() cancellation
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
input:not(:enabled) to input:disabledOn form-associated elements Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
input:not(:required) to input:optionalOn form-associated elements Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
a:not(:link) to a:visitedOn hyperlink elements ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 2ms
|
||||||||
0011
|
||||||||
Details
:is(:link, :visited) to :any-link
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
:is() scoped :not(:required) to :optionalWhen Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
h1-h6 selector list to :heading
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Sorting
|
||||||||
0015
|
||||||||
Details
De-dupe selectors in
|
||||||||
0016
|
||||||||
Details
Retaining correct specificity in
|
||||||||
0017
|
||||||||
Details
Advanced
|
||||||||
0018
|
||||||||
Details
:where() compound mergeAdjacent Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
:where() merge when shorter
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
:where() don't merge when longer
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
:where() merge with type selector reordering
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
:where() with conflicting type selectors - no merge
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 4 / 22 | 5 / 22 | 22 / 22 | 5 / 22 | 5 / 22 | 6 / 22 | 5 / 22 | 5 / 22 |
| Percent | 18.18% | 22.72% | 100% | 22.72% | 22.72% | 27.27% | 22.72% | 22.72% |
| Duration | 2ms | 1ms | 6ms | 18ms | 4ms | 13ms | 1ms | 13ms |
shorthands #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Margin 4-to-1 collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Margin 4-to-2 collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Margin 4-to-3 collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
background:none to background:0 0
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Color shortening and space removal before hash
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Inset shorthand collapse + zero-unit strip
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Padding 4-value to 1-value collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Overflow longhand to shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Gap longhand to shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Flex longhand to shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Outline longhand to shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Border-radius longhand to shorthandAll four Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 7ms
|
||||||||
0013
|
||||||||
Details
Margin longhand to shorthandIndividual Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Text-decoration longhand to shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Padding longhand to shorthandFour padding longhand properties collapse to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Border longhand to shorthandAll 12 border longhand properties collapse to a single Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Padding 4-to-2 value collapseWhen top equals bottom and right equals left, padding collapses from 4 values to 2. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Padding 4-to-3 value collapseWhen left equals right, the 4th value can be dropped. Top/bottom differ so 3 values remain. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
Border-radius 4-to-2 value collapseborder-radius follows the same top-right-bottom-left collapsing rules as margin/padding. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Border-radius slash syntax collapseBoth horizontal and vertical radii have identical values across all 4 corners, each side collapses to 1 value. The Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
Inset 4-to-2 value collapseThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
Margin 2-to-1 value collapseWhen both values in a 2-value margin are identical, collapse to a single value. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
place-items longhand merge (same value)When align-items and justify-items are the same, they merge into a single-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0024
|
||||||||
Details
place-content longhand merge (same value)When align-content and justify-content are the same, they merge into a single-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0025
|
||||||||
Details
place-self longhand merge (same value)When align-self and justify-self are the same, they merge into a single-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0026
|
||||||||
Details
Gap longhand merge (different values)When row-gap and column-gap differ, they merge into a 2-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0027
|
||||||||
Details
Columns longhand mergecolumn-width and column-count merge into the Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0028
|
||||||||
Details
list-style longhand mergelist-style-type, list-style-position, and list-style-image merge into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
Background longhand merge with defaultsBackground longhands merge into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0030
|
||||||||
Details
Font longhand mergefont-style, font-weight, font-size, line-height, and font-family merge into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
Transition longhand mergetransition-property, transition-duration, transition-timing-function, and transition-delay merge into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
Animation longhand mergeAll 8 animation longhands merge into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0033
|
||||||||
Details
Border default width omission
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0034
|
||||||||
Details
Background shorthand default omissionDefault background-position (0% 0%), background-repeat (repeat), and background-attachment (scroll) can be omitted from the Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0035
|
||||||||
Details
Font shorthand default value omission
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0036
|
||||||||
Details
Outline shorthand color optimizationColor values within shorthands like Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0037
|
||||||||
Details
Margin with auto values collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0038
|
||||||||
Details
border-color 4-to-1 value collapseborder-color follows the same top-right-bottom-left collapsing rules as margin/padding. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0039
|
||||||||
Details
Gap 2-to-1 value collapseWhen row-gap and column-gap are the same in a 2-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0040
|
||||||||
Details
Overflow 2-to-1 value collapseWhen overflow-x and overflow-y are the same in a 2-value Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0041
|
||||||||
Details
border shorthand must not clobber border-image (reorder required)border-image is declared before border longhands. A minifier collapsing the
longhands to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0042
|
||||||||
Details
border longhands then border-image (safe ordering)Border longhands come before border-image. Collapsing longhands to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0043
|
||||||||
Details
border shorthand intentionally resets border-imageDeclaring border-image then Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0044
|
||||||||
Details
border longhands with border-image longhands (collapse both)Both border and border-image expressed as longhands. Minifier should collapse
each group into its respective shorthand, with Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0045
|
||||||||
Details
font shorthand must not clobber font-variant-ligatures (reorder required)font-variant-ligatures is declared before font longhands. A minifier collapsing
the longhands to Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0046
|
||||||||
Details
font longhands before font-feature-settings (safe ordering)Font longhands come before font-feature-settings. Collapsing longhands to Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0047
|
||||||||
Details
font shorthand intentionally resets font-variant-numericDeclaring font-variant-numeric then Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0048
|
||||||||
Details
font longhands with font-kerning longhand (collapse, preserve order)Font longhands and font-kerning are both expressed as longhands. Minifier should
collapse the font longhands into Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0049
|
||||||||
Details
mask shorthand must not clobber mask-border (reorder required)mask-border is declared before mask longhands. A minifier collapsing the
longhands to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0050
|
||||||||
Details
mask longhands before mask-border (safe ordering)Mask longhands come before mask-border. Collapsing longhands to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0051
|
||||||||
Details
mask shorthand intentionally resets mask-borderDeclaring mask-border then Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0052
|
||||||||
Details
font shorthand must not clobber font-variation-settings (reorder required)font-variation-settings is declared before font longhands. A minifier collapsing
the longhands to Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0053
|
||||||||
Details
Padding longhand merge unsafe with var()Merging padding-top/right/bottom/left into Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0054
|
||||||||
Details
Longhand before shorthand is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0055
|
||||||||
Details
Border longhand merge unsafe with var()Merging Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0056
|
||||||||
Details
Shorthand plus !important override for mixed importanceWhen one longhand has Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0057
|
||||||||
Details
Padding longhand merge unsafe even with var() fallbackA valid fallback does not make merging safe. The fallback only triggers when the
property is undefined. If the property is defined with an invalid value (e.g.
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0058
|
||||||||
Details
Padding longhand merge unsafe when var() fallback is unresolvableWhen Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0059
|
||||||||
Details
Border longhand merge unsafe even with var() fallbackA valid fallback does not make merging safe. The fallback only triggers when the property is undefined. If the property is defined with an invalid value, the fallback is ignored and the entire shorthand declaration fails at computed value time. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0060
|
||||||||
Details
Border longhand merge unsafe when any var() fallback is unresolvableIf even one Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0061
|
||||||||
Details
Padding longhand merge safe with @property constraintWhen each custom property has an Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0062
|
||||||||
Details
Border longhand merge safe with @property constraintWhen each custom property has an Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0063
|
||||||||
Details
top/right/bottom/left to inset shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0064
|
||||||||
Details
Logical longhands to margin-inline shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0065
|
||||||||
Details
position-try-order + fallbacks to position-try shorthand
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0066
|
||||||||
Details
border-top before border is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0067
|
||||||||
Details
border-block-start before border-block is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0068
|
||||||||
Details
padding-inline-start before padding-inline is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0069
|
||||||||
Details
margin-top before margin is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0070
|
||||||||
Details
border-top-width before border-width is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0071
|
||||||||
Details
border-top-color before border-top is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0072
|
||||||||
Details
inset-block-start before inset-block is dead code
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0073
|
||||||||
Details
Transition shorthand default duration removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0074
|
||||||||
Details
Zero flex-basis can be omitted
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 29 / 74 | 8 / 74 | 74 / 74 | 22 / 74 | 21 / 74 | 19 / 74 | 54 / 74 | 3 / 74 |
| Percent | 39.18% | 10.81% | 100% | 29.72% | 28.37% | 25.67% | 72.97% | 4.05% |
| Duration | 13ms | 11ms | 24ms | 73ms | 12ms | 42ms | 2ms | 52ms |
starting-style #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@starting-style whitespace removalBasic whitespace removal in Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
@starting-style with discrete animation must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 2 | 2 / 2 | 2 / 2 | 1 / 2 | 2 / 2 | 2 / 2 | 1 / 2 | 2 / 2 |
| Percent | 0% | 100% | 100% | 50% | 100% | 100% | 50% | 100% |
| Duration | 1ms | 1ms | 1ms | 1ms | 1ms | 1ms | 1ms | 1ms |
supports #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@supports condition whitespaceSpaces inside the Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 14ms 1ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
Remove empty @supports ruleAn @supports rule with no content should be removed entirely, like empty style rules. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Elide @supports for universally supported property
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Elide @supports with multiple inner rules
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
@supports not with unsupported property must be preserved
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 3 / 5 | 1 / 5 | 5 / 5 | 3 / 5 | 3 / 5 | 1 / 5 | 3 / 5 | 1 / 5 |
| Percent | 60% | 20% | 100% | 60% | 60% | 20% | 60% | 20% |
| Duration | 1ms | 1ms | 1ms | 17ms | 1ms | 4ms | 1ms | 4ms |
transforms #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
translate3d to translate
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
translate to translateY
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
scale with equal axes
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
rotateZ to rotate
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
scale3d to scale
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
rotate3d to rotateY
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
scale(x, 1) to scaleX
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
translate3d(0,0,z) to translateZWhen X and Y are zero, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
rotate3d(1,0,0,a) to rotateXRotation around the X axis only simplifies to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
scale() percentage to number
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
scale property percentage to numberThe individual Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 11 | 0 / 11 | 11 / 11 | 7 / 11 | 0 / 11 | 8 / 11 | 11 / 11 | 0 / 11 |
| Percent | 0% | 0% | 100% | 63.63% | 0% | 72.72% | 100% | 0% |
| Duration | 1ms | 1ms | 2ms | 7ms | 1ms | 6ms | 1ms | 5ms |
values #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
font-weight bold to 700
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
font-weight normal to 400
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
url() quote removalQuotes inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Trailing zero removal in dimensions
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Redundant positive sign removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Leading zero padding removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
URL whitespace trimming
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Quote normalization
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Milliseconds to seconds conversion
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Absolute unit conversion to px
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Smart separator preservation in calc()Spaces around Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
var() custom property preservation
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Gradient function whitespaceWhitespace inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Nested calc() flattening and reduction
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Calc constant folding
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Calc addition folding
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Calc partial reductionComplex calc expressions with compatible units are partially reduced: px terms are combined while percentage terms are preserved. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Trailing zero removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
Grid template areas whitespace minificationExtra whitespace inside grid-template-areas strings is collapsed, and consecutive dots ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Background position center to percentage
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
Calc division with irrational result must keep calc
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 2ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
Multi-keyword display to single keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
cubic-bezier to linear keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0024
|
||||||||
Details
cubic-bezier to ease keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0025
|
||||||||
Details
Two-value background-repeat collapse
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0026
|
||||||||
Details
Two-value background-repeat to repeat-x
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0027
|
||||||||
Details
Turn to degrees conversion
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0028
|
||||||||
Details
min-width: initial to autoThe initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
Border shorthand canonical order
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0030
|
||||||||
Details
flex-flow canonical order
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
Unquote font-family nameQuotes around font-family names can be removed when the name is a valid CSS identifier sequence. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 6ms
|
||||||||
0032
|
||||||||
Details
Deduplicate font-family listDuplicate font names in a font-family list can be removed. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0033
|
||||||||
Details
Multi-keyword display: inline flow-root to inline-block
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0034
|
||||||||
Details
steps(1, start) to step-start keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0035
|
||||||||
Details
background-position keywords to numeric
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0036
|
||||||||
Details
cubic-bezier to ease-in keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0037
|
||||||||
Details
cubic-bezier to ease-out keyword
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0038
|
||||||||
Details
Two-value background-repeat to repeat-y
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0039
|
||||||||
Details
Calc multiply by 1 (identity)Multiplying a value by 1 has no effect. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0040
|
||||||||
Details
Calc add zero same unit (identity)Adding zero of the same unit has no effect. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0041
|
||||||||
Details
Calc double negation elimination
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0042
|
||||||||
Details
Calc double inversion eliminationDividing by a reciprocal cancels out. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0043
|
||||||||
Details
Calc sum flattening across nested calc()Nested additions inside calc() are flattened into a single addition. Two nested calc() sums are merged and all px terms are combined: Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0044
|
||||||||
Details
Calc product flattening with multiple numbersWhen a multiplication chain contains multiple plain numbers, they are multiplied together first. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0045
|
||||||||
Details
Calc distribute multiplication over sumMultiplication distributes over addition. Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0046
|
||||||||
Details
Calc combine like percentage termsTerms with the same unit are combined by adding their values. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0047
|
||||||||
Details
Calc division of pure numbers
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0048
|
||||||||
Details
Calc self-subtraction resolves to zero
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0049
|
||||||||
Details
Calc multiply by zero
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0050
|
||||||||
Details
Calc constant pi resolution
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0051
|
||||||||
Details
Calc constant e resolution
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0052
|
||||||||
Details
Resolve min() with all-known comparable valuesWhen all arguments to min() are known comparable values, the function can be fully resolved. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0053
|
||||||||
Details
Calc canonicalize compatible length unitsCompatible units convert to canonical units: Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0054
|
||||||||
Details
Calc single term unwrap
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0055
|
||||||||
Details
Calc division folding dimension by number
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0056
|
||||||||
Details
Calc combine like terms preserving incompatible units
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0057
|
||||||||
Details
Custom property values must not be color-minifiedCustom property values may be read by JavaScript via Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0058
|
||||||||
Details
Empty custom property declaration must not be discarded
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0059
|
||||||||
Details
Unrecognized properties must not be removedA rule with unrecognized property names is syntactically valid CSS. Minifiers must not discard it -- unknown properties may be meaningful to other tools or future CSS specifications. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0060
|
||||||||
Details
url() quotes required when URL contains parenthesesRemoving quotes from Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0061
|
||||||||
Details
Empty content string must not be removed
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0062
|
||||||||
Details
clamp() with identical arguments resolves to single valueWhen min, preferred, and max are all the same known value, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0063
|
||||||||
Details
max() with known values resolves to largestWhen all arguments to Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0064
|
||||||||
Details
opacity: initial to 1The initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0065
|
||||||||
Details
display: initial must not shortenThe initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0066
|
||||||||
Details
z-index: initial to autoThe initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0067
|
||||||||
Details
margin: initial to 0The initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0068
|
||||||||
Details
background-color: initial must not shortenThe initial value of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0069
|
||||||||
Details
calc() zero with different unit must not be dropped
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0070
|
||||||||
Details
Custom property value can be minified with @property constraintWhen Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0071
|
||||||||
Details
Convert time lengthsA length of time can be represented in Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0072
|
||||||||
Details
Convert background-position to percent when possibleThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0073
|
||||||||
Details
Remove spaces from quotes declarationsThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0074
|
||||||||
Details
Invalid quotes are removedThe Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0075
|
||||||||
Details
Convert
|
||||||||
| Subtotal | 16 / 75 | 20 / 75 | 75 / 75 | 58 / 75 | 20 / 75 | 34 / 75 | 57 / 75 | 31 / 75 |
| Percent | 21.33% | 26.66% | 100% | 77.33% | 26.66% | 45.33% | 76% | 41.33% |
| Duration | 6ms | 4ms | 21ms | 55ms | 6ms | 44ms | 1ms | 43ms |
whitespace #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Basic whitespace removalRemove newlines, indentation, and spaces around braces and colons. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Inter-rule whitespaceBlank lines between rules must be collapsed. No separator is needed between Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Tab characters and multi-line valuesValues split across lines with tab indentation must collapse correctly. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Selector list whitespaceSpaces around commas in selector lists ( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Trailing semicolon removalThe semicolon after the last declaration in a rule can be dropped. Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Consecutive semicolon removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
@media not -- space before media type required
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
@media -- space around
|
||||||||
0009
|
||||||||
Details
@supports not -- space before ( required
Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
@supports -- space after
|
||||||||
0011
|
||||||||
Details
calc() space around + operator requiredSpaces around Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
calc() spaces around * and / are removableUnlike Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
transform -- no space needed between adjacent functionsIn Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
background -- no space needed between ) and keywordIn Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
font shorthand -- no space needed around /In Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Descendant combinator -- space is the selector itselfIn Source
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0017
|
||||||||
Details
Space before hash token is removable
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Space before !important removable
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
Space preservation around + inside clamp()Spaces around Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Minify multi-line tabular formatted custom-propertySometimes values are indented, or add leading or trailing zeroes to make
repetition visually line up like a table of data. Reduce numeric values
( Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
Remove whitespace inside custom-property parenthesisWhitespace in a custom-property represets a token that must be retained,
however, each token can be collapsed to a single space. Spaces inside Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 13 / 21 | 17 / 21 | 21 / 21 | 14 / 21 | 16 / 21 | 13 / 21 | 16 / 21 | 12 / 21 |
| Percent | 61.9% | 80.95% | 100% | 66.66% | 76.19% | 61.9% | 76.19% | 57.14% |
| Duration | 2ms | 1ms | 4ms | 16ms | 1ms | 13ms | 1ms | 12ms |
zero-units #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Strip unit on zero length
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Keep unit on zero time
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Keep unit on zero percent
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Zero-unit strip in padding
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Leading zero removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Trailing zero removal
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Drop unit from zero-length flex-basis
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Keep unit on zero angle
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
0% in keyframes must keep the percent signIn keyframe selectors, Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
0fr must keep unitUnitless zero is invalid for Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Preserve unit on zero-percentage flex-basis
Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Remove leading zero on alpha in HSLA/RGBA in custom propertyThe leading zero can safely be removed in Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Remove 0 time from transition shorthandA transition time length of Source
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 10 / 13 | 12 / 13 | 13 / 13 | 9 / 13 | 10 / 13 | 9 / 13 | 13 / 13 | 8 / 13 |
| Percent | 76.92% | 92.3% | 100% | 69.23% | 76.92% | 69.23% | 100% | 61.53% |
| Duration | 1ms | 1ms | 6ms | 8ms | 1ms | 8ms | 1ms | 7ms |
Real-world tests
The following are the results of testing the minifiers on a corpus of 200 real world, open source, CSS files/libraries.
| Library | Original Size | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|---|
|
30 Days 30 Submits #18 v0.0.0 |
|||||||||
| 100% | 71.79% | 71.27% | 62.81% | 69.58% | 64.17% | 72.01% | 71.63% | 73.95% | |
| Duration | 6.004ms | 2.377ms | 7.709ms | 13.487ms | 4.924ms | 2.46ms | 0.458ms | 8.903ms | |
|
3D transforms v0.0.0 |
|||||||||
| 100% | 73.37% | 72.68% | 67.87% | 72.95% | 73.74% | 72.78% | 72.38% | 75.23% | |
| Duration | 14.978ms | 5.986ms | 33.198ms | 28.243ms | 14.702ms | 2.645ms | 0.823ms | 29.9ms | |
|
960.gs v0.0.0 |
|||||||||
| 100% | 57.31% | 56% | 44.9% | 57.31% | 57.27% | 57.31% | 57.31% | 57.31% | |
| Duration | 4.115ms | 1.869ms | 21.484ms | 12.464ms | 5.425ms | 1.445ms | 0.352ms | 9.843ms | |
|
98 v0.1.18 |
|||||||||
| 100% | 82.43% | 84.34% | 75.25% | 82.02% | 82.16% | 82.92% | ERROR | ERROR | |
| Duration | 21.947ms | 6.199ms | 45.859ms | 51.708ms | 22.505ms | 2.351ms | 0.358ms | 6.442ms | |
|
Academicons v1.9.6 |
|||||||||
| 100% | 77.41% | 71.33% | 70.83% | 77.3% | 71.04% | 77.3% | 71% | 71.39% | |
| Duration | 3.73ms | 2.394ms | 39.571ms | 16.306ms | 10.181ms | 1.323ms | 0.475ms | 11.564ms | |
|
AdminLTE v4.0.0 |
|||||||||
| 100% | 77.04% | 82.19% | 78.61% | 75.37% | 76.99% | 78.05% | 76.56% | 83.88% | |
| Duration | 295.998ms | 61.999ms | 2,272.729ms | 515.623ms | 210.891ms | 27.084ms | 17.622ms | 381.909ms | |
|
AdminHub v1.0.0 |
|||||||||
| 100% | 80.52% | 79.96% | 65.78% | 79.8% | 79.11% | 80.73% | 79.95% | 80.9% | |
| Duration | 4.098ms | 2.743ms | 13.77ms | 19.051ms | 9.028ms | 1.91ms | 0.721ms | 12.741ms | |
|
AMOLED-cord v5.0.11 |
|||||||||
| 100% | 87.21% | 89.73% | 75.61% | 83.53% | 84.04% | 87% | 86.19% | 91.43% | |
| Duration | 6.804ms | 1.946ms | 41.946ms | 36.925ms | 10.409ms | 2.894ms | 0.859ms | 20.132ms | |
|
Animate v4.1.1 |
|||||||||
| 100% | 78.07% | 77.94% | 37.95% | 24.83% | 76.71% | 76.96% | 25.08% | 81.4% | |
| Duration | 44.807ms | 9.939ms | 66.187ms | 52.43ms | 31.55ms | 6.902ms | 2.135ms | 95.191ms | |
|
Animating Hamburger Icons v0.1.0 |
|||||||||
| 100% | 61.13% | 61.29% | 50.53% | 44.51% | 59.87% | 60.92% | 47.21% | 61.56% | |
| Duration | 5.231ms | 1.374ms | 11.02ms | 16.513ms | 4.625ms | 1.787ms | 0.475ms | 13.647ms | |
|
Animo v1.0.3 |
|||||||||
| 100% | 74.43% | 74.98% | 25.75% | 20.1% | 72.98% | 74.32% | 60.87% | 75.35% | |
| Duration | 29.607ms | 5.386ms | 30.578ms | 39.592ms | 25.763ms | 4.664ms | 1.717ms | 51.694ms | |
|
Animsition v4.0.2 |
|||||||||
| 100% | 73.6% | 73.14% | 37.43% | 26.82% | 72.35% | 73.06% | 26.28% | 74.13% | |
| Duration | 16.723ms | 5.315ms | 17.559ms | 28.237ms | 10.449ms | 2.925ms | 0.92ms | 28.016ms | |
|
Awesome Bootstrap Checkbox v0.3.7 |
|||||||||
| 100% | 84.83% | 86.48% | 76.89% | 76.37% | 82.2% | 84.03% | 80.91% | 85.13% | |
| Duration | 3.855ms | 2.094ms | 9.842ms | 16.088ms | 4.569ms | 1.339ms | 0.4ms | 6.306ms | |
|
Balloon v1.0.0 |
|||||||||
| 100% | 85.74% | 87.56% | 84.38% | 84.7% | 85.22% | 86.33% | 84.87% | 86.97% | |
| Duration | 2.831ms | 0.874ms | 8.192ms | 13.967ms | 3.611ms | 0.807ms | 0.344ms | 5.07ms | |
|
Basscss v8.1.0 |
|||||||||
| 100% | 33.34% | 33.7% | 33.16% | 92.24% | 32.82% | 33.58% | 33.47% | 34.73% | |
| Duration | 9.089ms | 1.674ms | 54.509ms | 42.393ms | 6.324ms | 2.459ms | 0.794ms | 18.097ms | |
|
Beer CSS v4.0.21 |
|||||||||
| 100% | 82.32% | 83.26% | 79.38% | 81.94% | 81.89% | 82.69% | 82.22% | 83.48% | |
| Duration | 37.72ms | 11.707ms | 673.08ms | 155.51ms | 57.451ms | 9.515ms | 5.098ms | 126.745ms | |
|
Blooger_Website v0.0.0 |
|||||||||
| 100% | 66.41% | 66.19% | 55.79% | 66.77% | 66.21% | 67.56% | 66.44% | 68.24% | |
| Duration | 3.487ms | 1.21ms | 12.185ms | 14.704ms | 5.524ms | 1.362ms | 0.544ms | 8.426ms | |
|
Boilerform v1.1.2 |
|||||||||
| 100% | 58.48% | 58.35% | 50.08% | 58.14% | 58.37% | 58.64% | 59.14% | 58.94% | |
| Duration | 1.906ms | 0.585ms | 4.99ms | 8.697ms | 2.153ms | 0.863ms | 0.263ms | 3.341ms | |
|
Bojler v3.2.1 |
|||||||||
| 100% | 35.51% | 40.82% | 35.21% | 34.79% | 34.43% | 35.71% | 35.6% | 41.07% | |
| Duration | 5.203ms | 1.352ms | 35.45ms | 15.425ms | 4.668ms | 1.945ms | 0.48ms | 10.959ms | |
|
Bootplus v1.0.5 |
|||||||||
| 100% | 69.82% | 81.26% | 63.5% | 60% | 74.78% | 79.62% | ERROR | 83.1% | |
| Duration | 100.195ms | 31.521ms | 220.998ms | 197.084ms | 87.877ms | 14.704ms | 0.272ms | 138.046ms | |
|
Bootstrap 4 v4.6.2 |
|||||||||
| 100% | 79.86% | 80.05% | 73.46% | 71.32% | 80.02% | 80.32% | 71.8% | 81.56% | |
| Duration | 92.539ms | 21.037ms | 445.339ms | 259.685ms | 82.593ms | 15.446ms | 6.669ms | 173.018ms | |
|
Bootstrap 5 v5.3.8 |
|||||||||
| 100% | 82.12% | 82.17% | 78.57% | 79.17% | 81.43% | 82.88% | 81.01% | 83.9% | |
| Duration | 96.45ms | 23.3ms | 1,048.53ms | 250.953ms | 95.591ms | 19.217ms | 9.649ms | 207.355ms | |
|
Bttn v0.2.4 |
|||||||||
| 100% | 74.07% | 81.92% | 61.35% | 59.2% | 72.95% | 82.07% | 57.96% | 87.03% | |
| Duration | 19.888ms | 7.645ms | 64.635ms | 48.376ms | 14.137ms | 4.434ms | 1.528ms | 35.789ms | |
|
Cardinal v3.7.0 |
|||||||||
| 100% | 43.71% | 59.32% | 43.7% | 44.14% | 54.78% | 57.48% | 43.9% | 60.75% | |
| Duration | 63.223ms | 13.6ms | 176.808ms | 165.058ms | 46.687ms | 9.888ms | 4.262ms | 152.233ms | |
|
Checka11y v2.5.0 |
|||||||||
| 100% | 71.2% | 91.56% | 64.74% | 62.39% | 63.37% | 91.55% | 72.45% | 91.77% | |
| Duration | 36.808ms | 5.496ms | 74.485ms | 61.961ms | 15.87ms | 5.093ms | 1.757ms | 50.291ms | |
|
Chota v0.9.2 |
|||||||||
| 100% | 80.61% | 80.52% | 65.63% | 58.61% | 77.84% | 81.07% | 72% | 79.11% | |
| Duration | 18.951ms | 2.821ms | 33.306ms | 36.076ms | 10.914ms | 2.833ms | 1.48ms | 28.924ms | |
|
Classless v1.0.0 |
|||||||||
| 100% | 76.67% | 76.69% | 74.06% | 75.8% | 80.84% | 77.06% | 75.55% | 77.73% | |
| Duration | 13.127ms | 2.429ms | 20.265ms | 34.838ms | 11.625ms | 2.299ms | 1.083ms | 17.207ms | |
|
CleanSlate v0.10.1 |
|||||||||
| 100% | 66.55% | 73.59% | 56.25% | 54.88% | 125.11% | 72% | 60.27% | 75.59% | |
| Duration | 11.12ms | 5.177ms | 16.633ms | 27.271ms | 23.167ms | 2.003ms | 0.692ms | 15.741ms | |
|
ClickEffects v0.0.0 |
|||||||||
| 100% | 79.49% | 78.16% | 45.4% | 39.93% | 77.41% | 77.45% | 41.06% | 81.78% | |
| Duration | 21.834ms | 3.858ms | 25.097ms | 25.38ms | 19.201ms | 2.855ms | 1.021ms | 22.652ms | |
|
CodeFrame v4.0.9 |
|||||||||
| 100% | 78.44% | 78.38% | 77.63% | 77.94% | 78.3% | 78.87% | 78.44% | 79.4% | |
| Duration | 88.092ms | 19.348ms | 1,757.589ms | 232.08ms | 85.322ms | 17.302ms | 8.844ms | 203.559ms | |
|
Colofilter v0.0.0 |
|||||||||
| 100% | 81.58% | 87.86% | 59.42% | 69.89% | 79.58% | 83.21% | 68.32% | 84.83% | |
| Duration | 2.532ms | 0.862ms | 11.518ms | 13.048ms | 3.095ms | 0.969ms | 0.348ms | 11.173ms | |
|
Concise v4.0.1 |
|||||||||
| 100% | 73.64% | 74.88% | 66.54% | 61.27% | 73.17% | 74.49% | 62.94% | 74.7% | |
| Duration | 9.484ms | 2.462ms | 27.526ms | 29.34ms | 9.047ms | 2.068ms | 0.877ms | 21.001ms | |
|
Crayon v1.0.0 |
|||||||||
| 100% | 82.93% | 82.93% | 82.93% | 82.58% | 82.93% | 86.91% | 82.58% | 86.91% | |
| Duration | 3.18ms | 0.433ms | 7.904ms | 9.553ms | 2.081ms | 0.724ms | 0.318ms | 6.307ms | |
|
CrookedStyleSheets v0.0.0 |
|||||||||
| 100% | 72.13% | 74.23% | 72.44% | 54.9% | 71.32% | 71.51% | 72.67% | 86.85% | |
| Duration | 1.507ms | 0.681ms | 4.98ms | 7.183ms | 3.248ms | 1.758ms | 0.246ms | 6.836ms | |
|
cs16.css v0.0.0 |
|||||||||
| 100% | 38.07% | 85.64% | 84% | 68.93% | 28.24% | 85.85% | 86.3% | 89.36% | |
| Duration | 20.097ms | 1.385ms | 14.712ms | 32.67ms | 3.148ms | 2.05ms | 0.68ms | 16.13ms | |
|
CSS Diner v0.0.0 |
|||||||||
| 100% | 75.95% | 78.88% | 67.32% | 72.13% | 75.88% | 75.59% | 72.05% | ERROR | |
| Duration | 14.056ms | 2.923ms | 31.337ms | 38.354ms | 13.338ms | 2.814ms | 1.144ms | 9.002ms | |
|
css-extras v0.4.0 |
|||||||||
| 100% | 25.33% | 24.5% | 24.22% | 24.98% | 24.93% | 26.26% | 25.91% | 25.75% | |
| Duration | 2.872ms | 0.702ms | 4.723ms | 7.909ms | 3.859ms | 1.603ms | 0.557ms | 3.647ms | |
|
CSS Social Buttons v1.4.0 |
|||||||||
| 100% | 92.79% | 91.56% | 85.61% | 85.29% | 93.74% | 93.44% | 87.42% | 94.01% | |
| Duration | 27.796ms | 3.132ms | 88.779ms | 27.592ms | 10.503ms | 3.404ms | 0.979ms | 25.28ms | |
|
CSS Spinners v2.2.0 |
|||||||||
| 100% | 77.75% | 85.09% | 44.03% | 19.87% | 74.49% | 84.33% | 19.85% | 85.71% | |
| Duration | 73.125ms | 13.393ms | 73.15ms | 70.997ms | 49.144ms | 10.425ms | 3.201ms | 94.69ms | |
|
CSS3 Buttons v0.0.0 |
|||||||||
| 100% | 78.87% | 79.31% | 39.64% | 41.7% | 77.43% | 78.6% | 72.66% | 81.72% | |
| Duration | 18.327ms | 8.097ms | 31.47ms | 46.508ms | 16.417ms | 4.536ms | 1.25ms | 28.832ms | |
|
CSSCO v1.1.0 |
|||||||||
| 100% | 52.12% | 51.73% | 37.34% | 42.78% | 50.73% | 51.79% | 42.83% | 52.59% | |
| Duration | 1.661ms | 1.027ms | 4.838ms | 5.068ms | 2.032ms | 1.905ms | 0.269ms | 4.664ms | |
|
cssicon v1.0.0 |
|||||||||
| 100% | 81.26% | 81.09% | 73.69% | 67.22% | 68.63% | 81.9% | 68.06% | 82.46% | |
| Duration | 140.888ms | 43.285ms | 1,249.461ms | 491.421ms | 116.002ms | 22.258ms | 9.107ms | 212.003ms | |
|
CSS Plot v0.0.0 |
|||||||||
| 100% | 87.23% | 84.42% | 42.48% | 85.99% | 86.88% | 87.11% | 85.97% | 87.32% | |
| Duration | 8.185ms | 2.729ms | 81.355ms | 42.849ms | 9.476ms | 3.094ms | 1.028ms | 52.271ms | |
|
CSS Zen Garden #215 v0.0.0 |
|||||||||
| 100% | 90.36% | 90.97% | 86.55% | 69.44% | 90.13% | 90.86% | 87.02% | 91.06% | |
| Duration | 14.458ms | 2.484ms | 25.486ms | 66.889ms | 10.627ms | 3.627ms | 0.886ms | 15.726ms | |
|
Cutestrap1 v1.3.1 |
|||||||||
| 100% | 14.2% | 14.31% | 13.89% | 198.53% | 14.05% | 14.38% | 13.85% | 14.47% | |
| Duration | 8.725ms | 1.563ms | 14.772ms | 24.671ms | 5.381ms | 2.499ms | 0.651ms | 13.148ms | |
|
Cutestrap2 v2.0.0 |
|||||||||
| 100% | 51.7% | 51.91% | 51.15% | 49.85% | 50.58% | 52.63% | 50.83% | 52.56% | |
| Duration | 4.743ms | 1.327ms | 14.483ms | 20.098ms | 6.03ms | 1.931ms | 0.714ms | 10.155ms | |
|
Destyle v4.0.1 |
|||||||||
| 100% | 33.91% | 34.33% | 34.01% | 34.93% | 33.72% | 35.59% | 34.86% | 35.78% | |
| Duration | 1.612ms | 0.447ms | 4.093ms | 5.417ms | 1.92ms | 1.307ms | 0.243ms | 3.297ms | |
|
Devices v0.2.0 |
|||||||||
| 100% | 84.34% | 83.55% | 71.83% | 82.49% | 83.93% | 83.52% | 81.31% | 85.52% | |
| Duration | 28.64ms | 8.304ms | 75.789ms | 84.566ms | 24.945ms | 5.013ms | 2.23ms | 43.337ms | |
|
Doxygen Awesome v2.4.2 |
|||||||||
| 100% | 78.22% | 78.71% | 75.01% | 77.81% | 77.81% | 79.41% | 83.92% | ERROR | |
| Duration | 60.065ms | 7.634ms | 111.076ms | 88.871ms | 29.949ms | 5.508ms | 3.35ms | 48.898ms | |
|
Effeckt v0.5.0 |
|||||||||
| 100% | 77.93% | 79.94% | 57.55% | 49.61% | 75.04% | 78.96% | 50.4% | 80.29% | |
| Duration | 59.054ms | 13.648ms | 237.956ms | 110.811ms | 49.436ms | 9.279ms | 3.779ms | 141.1ms | |
|
ElegantFin v25.12.31 |
|||||||||
| 100% | 73.84% | 73.06% | 69.61% | 71.1% | 73.72% | 73.73% | 71.98% | 74.52% | |
| Duration | 28.383ms | 8.001ms | 202.261ms | 94.23ms | 32.213ms | 6.527ms | 3.447ms | 71.795ms | |
|
Enferno v13.1.1 |
|||||||||
| 100% | 65.98% | 62.9% | 57.25% | 62.9% | 66.88% | 63.35% | 62.2% | 67.59% | |
| Duration | 0.699ms | 0.217ms | 2.889ms | 2.139ms | 0.778ms | 0.895ms | 0.169ms | 1.721ms | |
|
Evil v0.0.0 |
|||||||||
| 100% | 37.18% | ERROR | 31.81% | ERROR | 32.92% | 46.22% | ERROR | ERROR | |
| Duration | 2.942ms | 0.384ms | 3.208ms | 1.072ms | 1.288ms | 1.022ms | 0.134ms | 0.828ms | |
|
Facebook Buttons v1.0.0 |
|||||||||
| 100% | 56.66% | 60.82% | 46.63% | 44.6% | 60.51% | 61.15% | ERROR | 61.93% | |
| Duration | 4.766ms | 0.95ms | 5.675ms | 7.404ms | 2.155ms | 1.476ms | 0.12ms | 3.922ms | |
|
FF-Ultima v4.3.0 |
|||||||||
| 100% | 47.08% | 67.69% | 65.72% | 65.69% | 32.18% | 67.23% | ERROR | ERROR | |
| Duration | 31.918ms | 3.503ms | 91.32ms | 48.97ms | 17.952ms | 3.987ms | 0.431ms | 3.597ms | |
|
Fileicon v0.1.1 |
|||||||||
| 100% | 80.43% | 76.13% | 72.88% | 78.16% | 80.36% | 80.07% | 74.83% | 79.6% | |
| Duration | 1.501ms | 0.372ms | 3.019ms | 6.156ms | 1.224ms | 0.809ms | 0.213ms | 2.163ms | |
|
Finimalism v12.0.0 |
|||||||||
| 100% | 75.99% | ERROR | 74.23% | ERROR | 75.19% | 77.21% | ERROR | ERROR | |
| Duration | 91.707ms | 5.826ms | 256.448ms | 4.119ms | 68.799ms | 12.118ms | 1.353ms | 2.012ms | |
|
Firefox-ONE v3.7.0 |
|||||||||
| 100% | 69.55% | 73.91% | 72.56% | 72.02% | 70.37% | 75.11% | ERROR | 76.21% | |
| Duration | 2.93ms | 0.863ms | 7.755ms | 8.805ms | 3.401ms | 1.061ms | 0.172ms | 9.83ms | |
|
Firefox-UWP-Style v0.0.0 |
|||||||||
| 100% | 58.63% | 78.41% | 76.08% | 75.76% | 40.09% | 77.44% | ERROR | ERROR | |
| Duration | 15.623ms | 3.23ms | 57.307ms | 54.519ms | 15.424ms | 4.265ms | 0.114ms | 1.479ms | |
|
Flakes v1.0.1 |
|||||||||
| 100% | 74.53% | 75.08% | 53.83% | ERROR | 73.39% | 75.29% | 70.91% | 76.64% | |
| Duration | 105.664ms | 27.086ms | 726.059ms | 26.523ms | 100.269ms | 38.489ms | 9.015ms | 188.911ms | |
|
Flex Layout Attribute v1.0.3 |
|||||||||
| 100% | 64.09% | 66.98% | 53.16% | 50.66% | 63.8% | 63.84% | 49.19% | 64.04% | |
| Duration | 3.143ms | 1.333ms | 13.99ms | 14.323ms | 3.443ms | 2.084ms | 0.444ms | 6.941ms | |
|
FluentBird v1.1.2 |
|||||||||
| 100% | 71.68% | 74.18% | 62.84% | ERROR | 65.17% | 73.17% | ERROR | ERROR | |
| Duration | 7.582ms | 2.02ms | 41.577ms | 1.472ms | 9.312ms | 2.981ms | 0.348ms | 7.991ms | |
|
Font Awesome v7.2.0 |
|||||||||
| 100% | 68.1% | 66.13% | 68.05% | 67.6% | 67.36% | 69.77% | 61.06% | 77.64% | |
| Duration | 53.624ms | 8.954ms | 2,483.095ms | 123.026ms | 48.445ms | 11.697ms | 5.385ms | 107.966ms | |
|
Foundation v6.9.0 |
|||||||||
| 100% | 76.48% | 81.16% | 71.61% | 66% | 75.83% | 77.85% | ERROR | 81.55% | |
| Duration | 72.821ms | 13.883ms | 417.511ms | 180.693ms | 77.286ms | 13.013ms | 0.962ms | 128.522ms | |
|
Freebies v0.0.0 |
|||||||||
| 100% | 47.44% | 47.69% | 47.07% | 47.27% | 47.38% | 47.65% | 47.28% | 48.09% | |
| Duration | 4.861ms | 1.531ms | 18.299ms | 15.149ms | 4.7ms | 1.968ms | 0.679ms | 10.264ms | |
|
Furatto v3.1.1 |
|||||||||
| 100% | 56.35% | 58.93% | 53.05% | 49.35% | 57.32% | 58.1% | ERROR | 59.44% | |
| Duration | 31.393ms | 12.958ms | 78.257ms | 97.226ms | 36.045ms | 6.116ms | 0.211ms | 58.766ms | |
|
Gallery v1.0.2 |
|||||||||
| 100% | 65.34% | 77.53% | 47.43% | 36.78% | 64.24% | 65.63% | 41.43% | 77.77% | |
| Duration | 5.495ms | 1.286ms | 6.447ms | 9.363ms | 4.397ms | 1.175ms | 0.427ms | 11.735ms | |
|
GitHub-Markdown v5.9.0 |
|||||||||
| 100% | 86.11% | 86.01% | 75% | 78.89% | 84.37% | 87.08% | 84.5% | 87.32% | |
| Duration | 8.587ms | 2.784ms | 27.779ms | 33.21ms | 10.028ms | 2.382ms | 1.135ms | 18.245ms | |
|
gitweb-theme v0.0.0 |
|||||||||
| 100% | 71.4% | 74.65% | 68.44% | 70.47% | 71.61% | 74.08% | 72.31% | 75.48% | |
| Duration | 6.113ms | 2.054ms | 18.801ms | 26.794ms | 8.844ms | 1.964ms | 0.711ms | 14.643ms | |
|
google-type v0.0.0 |
|||||||||
| 100% | 79.13% | 80.25% | 64.59% | ERROR | 78.52% | 79.83% | 77.81% | ERROR | |
| Duration | 20.324ms | 7.312ms | 47.953ms | 3.032ms | 26.482ms | 4.985ms | 2.02ms | 20.878ms | |
|
Gridism v0.2.2 |
|||||||||
| 100% | 50.14% | 49.46% | 48.08% | 48.25% | 50.37% | 50.56% | ERROR | 50.88% | |
| Duration | 1.43ms | 0.32ms | 2.662ms | 5.263ms | 1.381ms | 1.186ms | 0.125ms | 2.745ms | |
|
Gridlex v2.7.1 |
|||||||||
| 100% | 79.5% | 83.87% | 75.84% | 57.39% | 76.95% | 76.92% | 76.46% | 76.95% | |
| Duration | 17.756ms | 3.719ms | 29.029ms | 106.686ms | 15.332ms | 3.364ms | 1.344ms | 28.435ms | |
|
Gumby v2.6.4 |
|||||||||
| 100% | 89.18% | 89.53% | 80.19% | 80.56% | 89.16% | 91.04% | ERROR | 90.78% | |
| Duration | 73.688ms | 22.59ms | 325.951ms | 239.892ms | 93.69ms | 15.252ms | 2.408ms | 110.274ms | |
|
Gutenberg v0.7.0 |
|||||||||
| 100% | 46.5% | 48.27% | 46.07% | 47.9% | 46.5% | 49.55% | 49.55% | 50.4% | |
| Duration | 5.143ms | 1.071ms | 7.899ms | 11.73ms | 3.61ms | 2.012ms | 0.433ms | 6.462ms | |
|
HalfStyle v2.0.2 |
|||||||||
| 100% | 45.51% | 43.57% | 41.19% | ERROR | 38.87% | ERROR | 44.89% | ERROR | |
| Duration | 1.757ms | 0.648ms | 4.467ms | 0.949ms | 1.558ms | 0.955ms | 0.21ms | 8.284ms | |
|
Hint v3.0.0 |
|||||||||
| 100% | 66.35% | 67.06% | 60.78% | 66.35% | 67.67% | 68.34% | 65.92% | 69.6% | |
| Duration | 4.025ms | 1.168ms | 10.52ms | 10.953ms | 3.648ms | 1.769ms | 0.488ms | 8.296ms | |
|
Holmes v6.8.12 |
|||||||||
| 100% | 58.15% | 59.1% | 54.74% | 56.14% | 59.15% | 58.07% | 57.25% | 59.46% | |
| Duration | 4.5ms | 0.906ms | 3.166ms | 16.896ms | 3.237ms | 1.784ms | 0.338ms | 7.385ms | |
|
Hover Buttons v0.15.0 |
|||||||||
| 100% | 75.58% | 79.69% | 66.28% | 76.25% | 55.69% | 77.99% | 74.39% | 80.85% | |
| Duration | 26.56ms | 8.65ms | 94.629ms | 162.341ms | 14.738ms | 4.922ms | 1.755ms | 37.322ms | |
|
HTML Sheets of Paper v0.0.0 |
|||||||||
| 100% | 23.76% | 20.5% | 22.8% | 23.16% | 23.82% | 23.33% | 22.84% | 24.89% | |
| Duration | 1.168ms | 0.408ms | 2.098ms | 6.128ms | 1.065ms | 0.725ms | 0.156ms | 2.486ms | |
|
Hugo Universal Theme v1.4.1 |
|||||||||
| 100% | 78.52% | 82.03% | 71.06% | 73.14% | 76.15% | 81.22% | 74.8% | 83.84% | |
| Duration | 34.156ms | 10.721ms | 90.109ms | 117.994ms | 43.15ms | 7.048ms | 2.978ms | 56.05ms | |
|
Icon Hover Effects v0.0.0 |
|||||||||
| 100% | 79.4% | 79.29% | 53.9% | 44.74% | 75.61% | 77.98% | 59.37% | 79.04% | |
| Duration | 6.265ms | 1.91ms | 15.445ms | 13.38ms | 5.679ms | 2.049ms | 0.681ms | 16.888ms | |
|
Instagram.css v0.1.4 |
|||||||||
| 100% | 88.55% | 84.94% | 47.63% | 49.95% | 88.45% | 86.35% | 56.2% | 91.91% | |
| Duration | 4.078ms | 1.818ms | 13.213ms | 12.09ms | 7.865ms | 1.95ms | 0.565ms | 13.364ms | |
|
Justified v0.0.0 |
|||||||||
| 100% | 53.57% | 53.57% | 53.21% | 53.21% | 53.21% | 53.57% | 53.57% | 53.57% | |
| Duration | 0.112ms | 0.051ms | 0.371ms | 1.02ms | 0.193ms | 0.583ms | 0.083ms | 0.571ms | |
|
Kickoff v8.0.0 |
|||||||||
| 100% | 18.48% | 18.33% | 17.01% | 77.34% | 17.82% | 18.43% | 14.66% | 18.66% | |
| Duration | 29.975ms | 5.283ms | 136.513ms | 60.563ms | 18.207ms | 7.199ms | 2.363ms | 43.311ms | |
|
KNACSS v8.2.0 |
|||||||||
| 100% | ERROR | 72.88% | 72.26% | 73.1% | ERROR | 74.04% | 72.84% | 81.5% | |
| Duration | 2.627ms | 2.473ms | 27.123ms | 31.674ms | 6.867ms | 2.404ms | 1.174ms | 25.45ms | |
|
Less Framework v0.0.0 |
|||||||||
| 100% | 38.27% | 41.49% | 36.79% | 37.73% | 38.51% | 39.1% | 37.67% | 39.15% | |
| Duration | 4.319ms | 0.391ms | 2.043ms | 7.174ms | 2.92ms | 1.428ms | 0.206ms | 2.879ms | |
|
Linktree v0.0.0 |
|||||||||
| 100% | 86.45% | 86.54% | 82% | 47.26% | 47.1% | 86.66% | 86.46% | 86.79% | |
| Duration | 38.721ms | 7.509ms | 27.404ms | 32.553ms | 11.557ms | 4.219ms | 1.557ms | 37.185ms | |
|
littlebox v0.0.4 |
|||||||||
| 100% | 74.4% | 77.09% | 68.86% | 62.2% | 63.61% | 76.46% | 67.67% | 76.27% | |
| Duration | 79.871ms | 10.409ms | 185.45ms | 190.949ms | 40.215ms | 9.108ms | 3.486ms | 89.972ms | |
|
Load Awesome v1.1.0 |
|||||||||
| 100% | 92.73% | 98.46% | 58.98% | 41.43% | 93.22% | 98.05% | 41.74% | 100.05% | |
| Duration | 118.961ms | 15.07ms | 260.16ms | 180.645ms | 77.278ms | 15.648ms | 5.646ms | 153.681ms | |
|
Loaders v0.1.2 |
|||||||||
| 100% | 69.31% | 75.08% | 39.26% | 36.69% | 67.24% | 73.46% | 35.81% | 76.47% | |
| Duration | 20.022ms | 6.093ms | 33.153ms | 38.543ms | 14.934ms | 3.422ms | 1.473ms | 36.064ms | |
|
Luxbar v0.3.0 |
|||||||||
| 100% | 83.4% | 82.37% | 79.57% | 80.82% | 80.09% | 82.63% | 82.18% | 84% | |
| Duration | 3.043ms | 0.985ms | 6.347ms | 8.969ms | 2.874ms | 1.645ms | 0.361ms | 8.465ms | |
|
Lynx v1.4.0 |
|||||||||
| 100% | 72.05% | 72.22% | 65.38% | 68.09% | 71.9% | 72.6% | 67.63% | 72.79% | |
| Duration | 12.199ms | 3.263ms | 58.493ms | 43.314ms | 11.878ms | 3.579ms | 1.33ms | 27.333ms | |
|
markdown-css v0.0.0 |
|||||||||
| 100% | 80.95% | 83.37% | 73.35% | 75.48% | 80.69% | 82.86% | 83.93% | 83.4% | |
| Duration | 3.036ms | 0.507ms | 3.35ms | 10.141ms | 2.354ms | 0.96ms | 0.224ms | 3.04ms | |
|
Material for Bootstrap v4.1.1 |
|||||||||
| 100% | 81.01% | 82.81% | 73.89% | 70.55% | 81.08% | 81.35% | 73.82% | 83.33% | |
| Duration | 142.555ms | 25.121ms | 885.047ms | 322.527ms | 126.388ms | 22.18ms | 10.575ms | 239.213ms | |
|
medium.css v1.0.2 |
|||||||||
| 100% | 71.63% | 71.94% | 66.38% | 65.23% | 70.08% | 71.81% | 65.73% | 72.89% | |
| Duration | 2.296ms | 1.838ms | 5.362ms | 9.452ms | 2.225ms | 1.357ms | 0.355ms | 4.04ms | |
|
Meyer v2.0.0 |
|||||||||
| 100% | 66.35% | 66.35% | 64.12% | 66.27% | 64.12% | 66.35% | 66.35% | 66.35% | |
| Duration | 0.704ms | 0.361ms | 1.014ms | 2.366ms | 1.386ms | 1.307ms | 0.117ms | 1.263ms | |
|
Microsoft Metro Buttons v1.2.0 |
|||||||||
| 100% | 72.74% | 84.17% | 48.86% | 51.7% | 83.78% | 85.04% | ERROR | 86.92% | |
| Duration | 9.511ms | 1.781ms | 19.792ms | 20.821ms | 7.819ms | 2.674ms | 0.15ms | 12.922ms | |
|
Microtip v0.2.2 |
|||||||||
| 100% | 67.62% | 72.96% | 65.89% | 60.88% | 69.81% | 70.38% | 68.21% | 71.82% | |
| Duration | 2.746ms | 0.596ms | 6.163ms | 10.675ms | 2.266ms | 1.163ms | 0.304ms | 7.524ms | |
|
Mini v3.0.1 |
|||||||||
| 100% | 83.28% | 84.31% | 79.66% | 80.47% | 82.25% | 84.21% | 82.65% | 84.07% | |
| Duration | 24.556ms | 4.927ms | 61.554ms | 77.275ms | 19.272ms | 4.819ms | 2.291ms | 35.089ms | |
|
Mini Reset v0.0.7 |
|||||||||
| 100% | 70.29% | 60% | 68.97% | 70% | 70.44% | 70.29% | 70.15% | 71.03% | |
| Duration | 0.509ms | 0.131ms | 0.802ms | 4.148ms | 0.767ms | 0.595ms | 0.105ms | 5.244ms | |
|
Missing v1.3.0 |
|||||||||
| 100% | ERROR | 79.83% | 73.12% | 79.69% | 58.69% | 80.66% | 79.99% | 90.98% | |
| Duration | 6.421ms | 7.448ms | 192.755ms | 90.764ms | 36.163ms | 6.131ms | 3.489ms | 88.93ms | |
|
Mobi v3.1.1 |
|||||||||
| 100% | 77.02% | 76.78% | 69.17% | 64.43% | 81.78% | 78.06% | 64.87% | 77.77% | |
| Duration | 15.584ms | 1.756ms | 20.753ms | 20.756ms | 5.936ms | 1.907ms | 0.678ms | 14.288ms | |
|
Mocka v1.0.1 |
|||||||||
| 100% | 70.43% | 77.3% | 54.32% | 56.76% | 69.87% | 77.34% | 71.69% | 77.55% | |
| Duration | 1.918ms | 0.372ms | 3.472ms | 3.613ms | 1.25ms | 1.367ms | 0.19ms | 2.994ms | |
|
Modern CSS Resets v1.4.0 |
|||||||||
| 100% | 46.29% | 47.28% | 46.75% | 46.44% | 46.75% | 46.67% | 46.44% | 47.36% | |
| Duration | 0.57ms | 0.175ms | 0.931ms | 1.85ms | 0.571ms | 0.75ms | 0.103ms | 1.255ms | |
|
MVCSS v4.1.0 |
|||||||||
| 100% | 50.33% | 57.69% | 56.14% | 57.62% | 48.86% | 57.81% | 57.35% | 58.02% | |
| Duration | 10.342ms | 2.092ms | 45.097ms | 24.334ms | 9.617ms | 2.837ms | 0.9ms | 19.001ms | |
|
MVP v1.17.3 |
|||||||||
| 100% | 77.49% | 78.8% | 77.06% | 77.52% | 75.57% | 79.12% | 78.41% | 79.48% | |
| Duration | 4.08ms | 1.248ms | 10.54ms | 16.647ms | 4.771ms | 1.352ms | 0.567ms | 12.049ms | |
|
My Internet v1.0.0 |
|||||||||
| 100% | 44.14% | 68.32% | 62.75% | 66.91% | 56.18% | 68.17% | 67.62% | 101.62% | |
| Duration | 4.96ms | 1.6ms | 13.495ms | 15.897ms | 8.022ms | 2.163ms | 0.648ms | 13.854ms | |
|
Natural Selection v0.0.0 |
|||||||||
| 100% | 0% | 33.19% | 0% | 0% | 0% | 0% | 0% | 0% | |
| Duration | 1.218ms | 0.485ms | 6.612ms | 5.609ms | 1.013ms | 1.375ms | 0.181ms | 4.124ms | |
|
NES.css v2.3.0 |
|||||||||
| 100% | 91.98% | 90.01% | 90.58% | 91.31% | 90.66% | 91.85% | 90% | 92.08% | |
| Duration | 197.966ms | 38.214ms | 222.473ms | 290.169ms | 125.338ms | 22.121ms | 10.166ms | 230.493ms | |
|
Normalize v8.0.1 |
|||||||||
| 100% | 28.05% | 28.39% | 27.08% | 28.85% | 27.24% | 29.22% | 31.19% | 29.29% | |
| Duration | 1.44ms | 0.476ms | 2.931ms | 4.472ms | 1.47ms | 1.245ms | 0.208ms | 4.518ms | |
|
object-fit Polyfill v0.3.4 |
|||||||||
| 100% | 81.9% | 73.13% | 78.36% | 76.99% | 81.94% | 80.06% | 80.1% | 84.58% | |
| Duration | 0.634ms | 0.169ms | 2.277ms | 2.216ms | 0.613ms | 1.646ms | 0.114ms | 2.547ms | |
|
Obnoxious v3.5.2 |
|||||||||
| 100% | 70.43% | 70.16% | 69.05% | 69.72% | 70.44% | 69.72% | 68.72% | 72.08% | |
| Duration | 8.074ms | 2.101ms | 8.745ms | 17.339ms | 25.13ms | 2.115ms | 0.589ms | 18.042ms | |
|
Obsidian Colored Sidebar v2.0.0 |
|||||||||
| 100% | 77.34% | 68.48% | 68.13% | 67.07% | 77.34% | 71.77% | 70.34% | 71.9% | |
| Duration | 2.202ms | 1.022ms | 9.691ms | 9.217ms | 2.685ms | 1.609ms | 0.534ms | 10.238ms | |
|
Obsidian Modular CSS Layout v0.10.0 |
|||||||||
| 100% | 47.52% | 49.17% | 45.04% | 48.57% | 46.14% | 48.66% | 48.44% | 50.25% | |
| Duration | 8.493ms | 2.394ms | 37.42ms | 37.392ms | 7.878ms | 2.485ms | 1.073ms | 23.9ms | |
|
Obsidian Notebook Themes v2.2.3 |
|||||||||
| 100% | 72.14% | 69.37% | 70.26% | 69.04% | 68.98% | 72.08% | 70.94% | 72.21% | |
| Duration | 1.5ms | 0.513ms | 5.823ms | 5.101ms | 1.621ms | 1.321ms | 0.324ms | 3.403ms | |
|
OffCanvasMenuEffects v0.0.0 |
|||||||||
| 100% | 76.21% | 75.92% | 43.26% | 22.96% | 68.1% | 63.69% | 27.93% | 90.33% | |
| Duration | 3.287ms | 1.632ms | 5.269ms | 9.016ms | 8.941ms | 1.843ms | 0.469ms | 10.801ms | |
|
Orbit v1.4.11 |
|||||||||
| 100% | 84.72% | 84.45% | 84.71% | 79.22% | 83.5% | 81.62% | 84.43% | 86.83% | |
| Duration | 40.537ms | 18.621ms | 2,161.543ms | 196.34ms | 70.573ms | 11.732ms | 6.815ms | 111.717ms | |
|
OrgCSS v9.2.3 |
|||||||||
| 100% | 49.05% | 52.69% | 49.23% | 49.3% | 48.88% | 49.05% | 49.05% | 50.89% | |
| Duration | 11.658ms | 3.785ms | 319.534ms | 28.515ms | 18.088ms | 4.038ms | 1.031ms | 38.822ms | |
|
Paper v0.4.1 |
|||||||||
| 100% | 67.93% | 66.98% | 67.42% | 67.49% | 67.8% | 67.61% | 67.61% | 67.93% | |
| Duration | 0.804ms | 0.286ms | 4.285ms | 2.924ms | 0.982ms | 0.706ms | 0.139ms | 2.162ms | |
|
Pesticide v1.3.0 |
|||||||||
| 100% | 22.87% | 65.03% | 44.84% | 23.12% | 22.84% | 42.65% | 23.12% | 79.77% | |
| Duration | 15.517ms | 3.74ms | 24.491ms | 10.139ms | 10.873ms | 2.281ms | 0.578ms | 22.11ms | |
|
Phonon v1.5.1 |
|||||||||
| 100% | 78.9% | 79.16% | 74.71% | 76.95% | 76.42% | 79.29% | 77.59% | 80.56% | |
| Duration | 67.864ms | 15.583ms | 404.577ms | 175.763ms | 68.073ms | 12.379ms | 5.152ms | 113.748ms | |
|
Photon v0.1.2 |
|||||||||
| 100% | 72.68% | 69.08% | 59.55% | 65.84% | 68.89% | 72.89% | 62.33% | 70.46% | |
| Duration | 12.001ms | 3.698ms | 197.017ms | 38.917ms | 12.311ms | 2.944ms | 1.381ms | 30.103ms | |
|
Picnic v7.1.0 |
|||||||||
| 100% | 65.46% | 66.37% | 62.91% | 64.56% | 67.13% | 66.64% | 64.28% | 67.15% | |
| Duration | 28.652ms | 6.107ms | 73.66ms | 71.635ms | 23.349ms | 5.31ms | 2.469ms | 45.098ms | |
|
Pico v2.1.1 |
|||||||||
| 100% | 89.12% | 88.63% | 84.08% | 85.67% | 90.43% | 89.82% | 89.45% | 90.1% | |
| Duration | 28.415ms | 7.76ms | 189.24ms | 145.626ms | 32.981ms | 6.896ms | 3.867ms | 55.008ms | |
|
Pills v1.0.1 |
|||||||||
| 100% | 76.58% | 78.1% | 76.73% | 76.65% | 78.09% | 78.09% | ERROR | 79.07% | |
| Duration | 2.416ms | 0.625ms | 5.603ms | 7.246ms | 2.479ms | 1.509ms | 0.146ms | 4.373ms | |
|
Portfolio Template v0.0.0 |
|||||||||
| 100% | 62.98% | 65.14% | 62.8% | 64.3% | 63.98% | 65.27% | 65.35% | 66.13% | |
| Duration | 4.18ms | 1.05ms | 10.029ms | 9.301ms | 3.477ms | 1.124ms | 0.546ms | 11.956ms | |
|
Preboot v2.0.0 |
|||||||||
| 100% | 45.65% | 45.53% | 42.29% | 43.64% | 45.71% | 46.52% | 43.51% | 47.56% | |
| Duration | 5.755ms | 1.714ms | 24.72ms | 19.398ms | 5.925ms | 1.94ms | 0.604ms | 9.815ms | |
|
Pretty Checkbox v3.0.3 |
|||||||||
| 100% | 80.44% | 82.49% | 67.7% | 65.02% | 76.49% | 83.25% | 64.72% | 84.64% | |
| Duration | 6.877ms | 2.763ms | 20.15ms | 24.732ms | 7.341ms | 2.135ms | 0.858ms | 15.472ms | |
|
Progress Tracker v3.0.0 |
|||||||||
| 100% | 78.7% | 78.16% | 70.8% | 77.12% | 78.38% | 78.98% | 76.4% | 79.42% | |
| Duration | 2.233ms | 0.749ms | 7.736ms | 7.951ms | 2.697ms | 1.418ms | 0.465ms | 8.997ms | |
|
ProtonMail Themes v4.0.8 |
|||||||||
| 100% | 92.64% | 83.74% | 84.67% | 89.21% | 92.88% | 89.45% | 85.91% | 89.53% | |
| Duration | 1.617ms | 0.394ms | 5.35ms | 4.123ms | 1.251ms | 1.342ms | 0.22ms | 2.278ms | |
|
ProxMorph v2.7.3 |
|||||||||
| 100% | 54.45% | 55.29% | 52.67% | 52.71% | 53.19% | 54.96% | 53.6% | 56.88% | |
| Duration | 35.099ms | 7.076ms | 132.166ms | 88.223ms | 24.544ms | 5.791ms | 2.593ms | 54.229ms | |
|
Pure v3.0.0 |
|||||||||
| 100% | 58.7% | 58.92% | 58% | 58.38% | 59.93% | 59.69% | 59.04% | 59.89% | |
| Duration | 8.681ms | 2.185ms | 21.315ms | 31.05ms | 7.485ms | 2.107ms | 0.865ms | 13.195ms | |
|
Pygments Fruity v1.0.0 |
|||||||||
| 100% | 40.37% | 53.13% | 38.09% | 40.37% | 39.81% | 40.37% | 40.37% | 54.62% | |
| Duration | 1.96ms | 0.569ms | 9.463ms | 4.472ms | 1.471ms | 1.275ms | 0.213ms | 8.383ms | |
|
Ratchet v2.0.2 |
|||||||||
| 100% | 80.36% | 77.89% | 72.42% | 71.67% | 80% | 80.22% | 73.45% | 80.34% | |
| Duration | 10.576ms | 3.308ms | 40.762ms | 38.434ms | 9.786ms | 2.533ms | 1.168ms | 17.226ms | |
|
Remedy Quotes v0.1.0 |
|||||||||
| 100% | 35.59% | 47.34% | 33.88% | 35.59% | 33.96% | 60.47% | 34.32% | 49.6% | |
| Duration | 81.576ms | 1.559ms | 71.797ms | 20.847ms | 6.166ms | 1.944ms | 1.228ms | 14.942ms | |
|
Remedy v0.1.0 |
|||||||||
| 100% | 17.95% | 18.75% | 18.61% | 18.61% | 18.27% | 18.61% | 18.61% | 18.66% | |
| Duration | 1.107ms | 0.203ms | 2.829ms | 3.182ms | 0.967ms | 1.201ms | 0.128ms | 5.825ms | |
|
Repaintless v1.4.0 |
|||||||||
| 100% | 73.63% | 73.38% | 36.27% | 27.15% | 68.76% | 72.79% | 26.99% | 73.87% | |
| Duration | 7.138ms | 1.267ms | 6.601ms | 8.499ms | 4.169ms | 1.583ms | 0.354ms | 12.634ms | |
|
Reset v1.0.2 |
|||||||||
| 100% | 50.93% | 51.01% | 50.73% | 50.85% | 50.97% | 50.93% | 52.26% | 51.05% | |
| Duration | 1.137ms | 0.264ms | 2.116ms | 3.713ms | 0.775ms | 0.632ms | 0.173ms | 3.092ms | |
|
Responsive 4 v4.1.4 |
|||||||||
| 100% | 72.44% | 74.2% | 70.71% | 71.19% | 72.32% | 73.14% | 71.16% | 74.03% | |
| Duration | 36.527ms | 7.405ms | 98.331ms | 102.176ms | 33.718ms | 5.84ms | 2.983ms | 56.354ms | |
|
Responsive 5 v5.0.0 |
|||||||||
| 100% | 71.11% | 74.57% | 70.08% | 70.74% | 70.87% | 71.99% | 70.62% | 74.17% | |
| Duration | 27.068ms | 6.416ms | 90.251ms | 87.108ms | 30.249ms | 5.88ms | 2.645ms | 55.965ms | |
|
Ress v5.0.2 |
|||||||||
| 100% | 32.7% | 34.24% | 32.53% | 33.2% | 33% | 33.58% | 35.37% | 33.96% | |
| Duration | 1.863ms | 0.454ms | 3.908ms | 5.451ms | 1.757ms | 1.444ms | 0.261ms | 3.229ms | |
|
Sakura v1.5.1 |
|||||||||
| 100% | 71.91% | 74.81% | 72.58% | 72.73% | 67.66% | 73.78% | 79.88% | 75.56% | |
| Duration | 2.034ms | 0.586ms | 3.927ms | 7.609ms | 2.244ms | 0.791ms | 0.253ms | 3.199ms | |
|
Sanitize v13.0.0 |
|||||||||
| 100% | 29.81% | 29.71% | 27.5% | 28.43% | 29.37% | 29.71% | 27.97% | 29.79% | |
| Duration | 1.375ms | 0.447ms | 4.809ms | 5.449ms | 1.278ms | 1.372ms | 0.222ms | 3.184ms | |
|
SAPC-APCA v0.0.0 |
|||||||||
| 100% | 61.85% | 63.2% | 60.47% | 60.86% | 61.41% | 62.64% | ERROR | 64.89% | |
| Duration | 56.739ms | 13.928ms | 2,809.561ms | 178.744ms | 90.245ms | 12.089ms | 1.007ms | 106.494ms | |
|
Select v3.2.0 |
|||||||||
| 100% | 64.74% | 64.65% | 56.85% | 62.46% | 64.62% | 63.82% | 61.84% | 65.33% | |
| Duration | 0.93ms | 0.322ms | 2.348ms | 3.582ms | 1.02ms | 0.662ms | 0.158ms | 5.497ms | |
|
Select2 Bootstrap v1.2.5 |
|||||||||
| 100% | 74.22% | 73.6% | 67.95% | 64.34% | 75.55% | 74.71% | 63.85% | 75.75% | |
| Duration | 1.171ms | 0.557ms | 3.173ms | 3.864ms | 1.068ms | 0.677ms | 0.15ms | 4.544ms | |
|
Shards v3.0.0 |
|||||||||
| 100% | 83.71% | 82.79% | 78.54% | 79.44% | 83.22% | 82.96% | 80.51% | 85.74% | |
| Duration | 49.417ms | 13.915ms | 231.096ms | 131.777ms | 41.197ms | 9.002ms | 3.861ms | 122.512ms | |
|
Shina Fox v0.1.0 |
|||||||||
| 100% | 71.51% | 74.37% | 67.81% | 69.18% | 71.54% | 72.85% | 70.14% | 75.73% | |
| Duration | 11.33ms | 2.948ms | 28.004ms | 31.449ms | 11.849ms | 2.618ms | 1.133ms | 19.672ms | |
|
Sierra v3.5.0 |
|||||||||
| 100% | 63.47% | 64.62% | 52.15% | 44.67% | 62.3% | 64.5% | 44.37% | 65.28% | |
| Duration | 16.538ms | 4.97ms | 68.992ms | 42.753ms | 16.126ms | 4.283ms | 1.566ms | 36.626ms | |
|
Simple Grid v0.0.0 |
|||||||||
| 100% | 64.64% | 64.61% | 63.83% | 64.61% | 64.06% | 64.45% | 64.14% | 64.68% | |
| Duration | 1.032ms | 0.315ms | 3.551ms | 3.525ms | 1.357ms | 0.733ms | 0.178ms | 2.629ms | |
|
Simple Line Icons v2.5.4 |
|||||||||
| 100% | 83.81% | 78.06% | 77.93% | 83.71% | 77.92% | 83.71% | 77.89% | 78.1% | |
| Duration | 3.772ms | 1.056ms | 47.529ms | 11.801ms | 6.083ms | 1.881ms | 0.541ms | 11.769ms | |
|
Simple v2.3.7 |
|||||||||
| 100% | 68.17% | 69.59% | 68.15% | 68.29% | 67.64% | 69.57% | 68.45% | 69.86% | |
| Duration | 5.097ms | 1.878ms | 13.983ms | 19.096ms | 5.673ms | 2.019ms | 0.691ms | 10.852ms | |
|
SimpTip v1.0.4 |
|||||||||
| 100% | 83.72% | 84.82% | 80.07% | 68.89% | 84.39% | 85.03% | 69.74% | 85.53% | |
| Duration | 5.283ms | 2.009ms | 16.809ms | 12.1ms | 3.419ms | 1.614ms | 0.44ms | 6.914ms | |
|
Skeleton v2.0.4 |
|||||||||
| 100% | 50.65% | 52.08% | 49.01% | 50.41% | 50.41% | 50.99% | 49.67% | 51.14% | |
| Duration | 4.308ms | 1.059ms | 7.658ms | 14.307ms | 3.639ms | 1.613ms | 0.414ms | 5.824ms | |
|
SlitSlider v1.1.0 |
|||||||||
| 100% | 72.32% | 72.5% | 63.71% | 50.22% | 72.32% | 72.63% | 53.08% | 73.66% | |
| Duration | 0.8ms | 0.423ms | 2.391ms | 2.583ms | 0.948ms | 1.048ms | 0.14ms | 6.029ms | |
|
Social Sign-in Buttons v0.0.0 |
|||||||||
| 100% | 71.58% | 72.16% | 40.53% | 40.74% | 71.84% | 71.83% | ERROR | 73.85% | |
| Duration | 3.278ms | 1.046ms | 8.594ms | 9.601ms | 2.639ms | 1.341ms | 0.133ms | 5.728ms | |
|
SPCSS v0.9.0 |
|||||||||
| 100% | 73.74% | 73.96% | 71.3% | 66.16% | 74.12% | 74.07% | 72.66% | 74.23% | |
| Duration | 1.165ms | 0.368ms | 2.107ms | 4.29ms | 1.194ms | 0.649ms | 0.17ms | 2.113ms | |
|
Spectre v0.5.9 |
|||||||||
| 100% | 74.22% | 73.74% | 69.51% | 70.07% | 73.33% | 74.1% | 70.89% | 75.11% | |
| Duration | 24.877ms | 7.166ms | 181.891ms | 74.517ms | 24.88ms | 5.298ms | 2.602ms | 47.342ms | |
|
Spicetify Bloom v0.0.0 |
|||||||||
| 100% | 79.9% | 81.59% | 76.57% | 77.78% | 78.9% | 81.2% | 75.24% | 82.8% | |
| Duration | 21.513ms | 7.102ms | 156.743ms | 75.707ms | 19.746ms | 4.571ms | 2.403ms | 52.014ms | |
|
Spicetify Dribbblish v0.0.0 |
|||||||||
| 100% | 80.07% | 80.73% | 75.96% | 74.63% | 78.84% | 80.78% | 78.84% | 82.01% | |
| Duration | 6.211ms | 2.051ms | 35.767ms | 25.645ms | 6.383ms | 2.357ms | 0.887ms | 17.714ms | |
|
Spicetify Text v0.0.0 |
|||||||||
| 100% | 78.99% | 79.19% | 76.39% | 77.82% | 79.04% | 80.36% | 78.5% | 79.84% | |
| Duration | 7.854ms | 2.373ms | 36.458ms | 25.627ms | 8.195ms | 2.55ms | 1.121ms | 17.624ms | |
|
Spinkit v2.0.1 |
|||||||||
| 100% | 63.94% | 63.94% | 53.15% | 63.72% | 62.1% | 63.74% | 63.53% | 64.53% | |
| Duration | 4.072ms | 1.11ms | 14.436ms | 13.1ms | 4.36ms | 1.68ms | 0.529ms | 8.824ms | |
|
StackOverflow-Dark v5.1.2 |
|||||||||
| 100% | 72.38% | 77.1% | 76.57% | 71.53% | ERROR | 80.3% | ERROR | ERROR | |
| Duration | 59.219ms | 18.537ms | 146.582ms | 223.031ms | 24.411ms | 13.436ms | 0.743ms | 7.301ms | |
|
Swagger UI Themes 2 v2.1.0 |
|||||||||
| 100% | 74.04% | 89.25% | 61.37% | 81.74% | 73.32% | 89.31% | 78.2% | 90.71% | |
| Duration | 19.336ms | 7.907ms | 46.568ms | 76.252ms | 20.798ms | 4.853ms | 1.833ms | 32.361ms | |
|
Swagger UI Themes 3 v3.0.1 |
|||||||||
| 100% | 71.21% | 81.41% | 57.21% | 65.93% | 71.03% | 80.72% | 59.09% | 83.48% | |
| Duration | 16.491ms | 4.609ms | 52.138ms | 44.878ms | 17.73ms | 3.483ms | 1.52ms | 30.611ms | |
|
System v0.1.11 |
|||||||||
| 100% | 82.02% | 82.76% | 75.27% | 80.17% | 77.84% | 81.95% | 81.25% | 82.82% | |
| Duration | 5.652ms | 1.824ms | 21.703ms | 24.592ms | 5.924ms | 2.073ms | 0.857ms | 12.675ms | |
|
Tablecloth v1.0.0 |
|||||||||
| 100% | 84.52% | 87.97% | 73.63% | ERROR | 83.86% | 87.04% | ERROR | ERROR | |
| Duration | 4.133ms | 2.001ms | 9.705ms | 0.891ms | 4.322ms | 2.186ms | 0.182ms | 6.501ms | |
|
Tachyons v4.12.0 |
|||||||||
| 100% | 64.32% | 65.47% | 61.91% | 61.9% | 66.29% | 65.36% | ERROR | 66.91% | |
| Duration | 41.983ms | 11.202ms | 541.44ms | 118.114ms | 45.845ms | 11.601ms | 0.408ms | 94.163ms | |
|
The 50 Front-end Project #44 v0.0.0 |
|||||||||
| 100% | 71.87% | 72.36% | 68.2% | 72.28% | 68.13% | 73.21% | 71.66% | 73.39% | |
| Duration | 2.987ms | 1.107ms | 11.268ms | 9.76ms | 3.926ms | 1.274ms | 0.485ms | 7.378ms | |
|
The New CSS Reset v1.11.3 |
|||||||||
| 100% | 31.71% | 31.88% | 29.83% | 28.85% | 31.71% | 31.74% | 28.85% | 31.81% | |
| Duration | 0.637ms | 0.32ms | 1.707ms | 2.244ms | 0.756ms | 0.891ms | 0.129ms | 6.696ms | |
|
Toast v1.1.0 |
|||||||||
| 100% | 71.11% | 71.07% | 69.34% | 70.88% | 70.77% | 71.06% | 70.29% | 70.92% | |
| Duration | 2.041ms | 0.463ms | 10.857ms | 7.484ms | 2.014ms | 1.35ms | 0.254ms | 4.039ms | |
|
Tocas v5.7.0 |
|||||||||
| 100% | 72.3% | 70.95% | 64.56% | 70.93% | 70.16% | 72.23% | 69.57% | 71.48% | |
| Duration | 102.925ms | 29.874ms | 10,393.942ms | 335.233ms | 144.764ms | 26.663ms | 15.818ms | 251.383ms | |
|
Tooltip Twispy v1.0.6 |
|||||||||
| 100% | 80.84% | 84.52% | 55.33% | 83.08% | 80.54% | 85.07% | 82.82% | 85.31% | |
| Duration | 5.382ms | 0.552ms | 5.516ms | 4.999ms | 1.603ms | 1.064ms | 0.269ms | 2.987ms | |
|
Tootik v1.0.2 |
|||||||||
| 100% | 20.4% | 27.43% | 17.66% | 208.84% | 22.04% | 28.14% | 15.37% | 29.31% | |
| Duration | 9.135ms | 1.629ms | 19.382ms | 16.974ms | 3.949ms | 1.7ms | 0.543ms | 14.612ms | |
|
Tuesday v1.3.0 |
|||||||||
| 100% | 75.02% | 74.54% | 36.88% | 28.3% | 73.96% | 73.95% | 27.63% | 76.84% | |
| Duration | 6.754ms | 2.2ms | 10.799ms | 11.654ms | 7.024ms | 1.655ms | 0.596ms | 14.909ms | |
|
Tufte v1.8.0 |
|||||||||
| 100% | 74.05% | 74.45% | 69.92% | 70.24% | 72.09% | 73.85% | 73.8% | 74.68% | |
| Duration | 3.597ms | 1.158ms | 9.761ms | 11.095ms | 4.424ms | 1.8ms | 0.512ms | 7.286ms | |
|
Tui v2.1.2 |
|||||||||
| 100% | 73.74% | 72.77% | 67.49% | 72.64% | 66.55% | 74.09% | 70.22% | 75.07% | |
| Duration | 16.46ms | 5.963ms | 168.794ms | 49.796ms | 16.483ms | 4.889ms | 1.906ms | 39.225ms | |
|
tw-animate-css v1.4.0 |
|||||||||
| 100% | 53.29% | 82.93% | 73.3% | 84.66% | 48.73% | 88.94% | 87.13% | ERROR | |
| Duration | 1.879ms | 1.192ms | 8.634ms | 12.712ms | 4.49ms | 1.921ms | 0.791ms | 6.364ms | |
|
UIkit v3.25.17 |
|||||||||
| 100% | 69.93% | 71.15% | 69.65% | 68.79% | 69.8% | 70.14% | 70.14% | 70.98% | |
| Duration | 122.525ms | 28.984ms | 1,020.744ms | 402.637ms | 126.353ms | 21.168ms | 10.757ms | 206.019ms | |
|
Unfold v0.0.0 |
|||||||||
| 100% | 76.24% | 77.75% | 50.93% | 24.62% | 73.71% | 77.48% | ERROR | 79.29% | |
| Duration | 25.904ms | 10.118ms | 79.28ms | 61.36ms | 34.787ms | 6.697ms | 0.242ms | 69.884ms | |
|
Utility OpenType v0.1.4 |
|||||||||
| 100% | 83.18% | 82.77% | 79.7% | 55.18% | 82.61% | 83.66% | 84.11% | 83.94% | |
| Duration | 2.745ms | 0.971ms | 10.81ms | 7.791ms | 3.635ms | 1.975ms | 0.545ms | 8.232ms | |
|
Vim CSS3 Syntax v2.10.0 |
|||||||||
| 100% | 81.82% | 83.5% | 54.8% | ERROR | 64.61% | 83.69% | ERROR | ERROR | |
| Duration | 17.492ms | 2.482ms | 36.47ms | 1.761ms | 18.867ms | 3.773ms | 0.255ms | 6.695ms | |
|
Virtual Bookshelf v1.1.0 |
|||||||||
| 100% | 86.76% | 70.26% | 69.73% | 56.04% | 85.73% | 75.93% | 62.69% | 77.9% | |
| Duration | 1.321ms | 0.63ms | 3.509ms | 4.259ms | 1.751ms | 1.933ms | 0.287ms | 2.3ms | |
|
VitePress v1.6.4 |
|||||||||
| 100% | 74.36% | 75.05% | 67.18% | 72.37% | 73.56% | 75.46% | 73.28% | 75.29% | |
| Duration | 4.856ms | 1.545ms | 12.814ms | 19.665ms | 4.621ms | 1.59ms | 0.637ms | 8.735ms | |
|
Vivify v1.0.0 |
|||||||||
| 100% | 80.62% | 79.87% | 69.07% | 39.08% | 76.11% | 79.28% | 38.06% | 84.43% | |
| Duration | 21.311ms | 5.422ms | 62.189ms | 32.481ms | 18.421ms | 6.29ms | 1.534ms | 43.7ms | |
|
Voxels v1.0.0 |
|||||||||
| 100% | 72.19% | 74.29% | 72.5% | 54.95% | 71.38% | 71.57% | 72.73% | 86.92% | |
| Duration | 1.824ms | 0.69ms | 2.656ms | 5.088ms | 3.021ms | 0.872ms | 0.295ms | 4.441ms | |
|
w3css v4.10.0 |
|||||||||
| 100% | 97.04% | 97.08% | 95.24% | 95.68% | 96.32% | 97.01% | 95.93% | 98.44% | |
| Duration | 13.463ms | 2.801ms | 47.786ms | 35.765ms | 12.428ms | 3.163ms | 1.16ms | 22.549ms | |
|
Waffle Grid v1.3.6 |
|||||||||
| 100% | 79.24% | 77.19% | 72.8% | 72.06% | 77.21% | 75.92% | 71.21% | 75.97% | |
| Duration | 3.535ms | 0.856ms | 12.935ms | 10.204ms | 3.461ms | 1.805ms | 0.44ms | 8.406ms | |
|
Water v2.1.1 |
|||||||||
| 100% | 52.8% | 83.16% | 66.82% | 68.07% | 65.37% | 80.37% | 75.32% | 84.44% | |
| Duration | 20.543ms | 3.251ms | 43.521ms | 35.899ms | 9.894ms | 2.785ms | 1.497ms | 27.205ms | |
|
Weather Icons v2.0.10 |
|||||||||
| 100% | 84.57% | 84.96% | 72.61% | 33.75% | 83.27% | 86.11% | 32.94% | 85.47% | |
| Duration | 48.809ms | 46.119ms | 1,827.7ms | 101.807ms | 48.891ms | 12.116ms | 4.501ms | 125.884ms | |
|
Webgradients v0.0.0 |
|||||||||
| 100% | 71.56% | 72.71% | 66.3% | 65.07% | 71.66% | 64.56% | 67.52% | 75.59% | |
| Duration | 6.793ms | 1.981ms | 58.41ms | 18.874ms | 12.424ms | 2.398ms | 0.769ms | 17.128ms | |
|
Wenk v1.0.8 |
|||||||||
| 100% | 22.83% | 57.07% | 55.89% | 55.54% | 6.85% | 62.26% | 55.35% | 70.76% | |
| Duration | 0.738ms | 0.36ms | 2.347ms | 4.297ms | 0.449ms | 1.242ms | 0.2ms | 3.803ms | |
|
Windows 95 v0.0.0 |
|||||||||
| 100% | 74.27% | 74.68% | 62.53% | 73.28% | 71.09% | 74.99% | 73.05% | 75.6% | |
| Duration | 3.14ms | 1.041ms | 8.579ms | 11.786ms | 3.71ms | 1.54ms | 0.367ms | 5.804ms | |
|
Windows 98 v0.0.1 |
|||||||||
| 100% | 73.48% | 80.38% | 56.41% | 71.04% | 70% | 81.05% | 69.52% | 82.05% | |
| Duration | 2.173ms | 0.696ms | 5.324ms | 8.134ms | 1.837ms | 0.812ms | 0.285ms | 6.536ms | |
|
Wing v1.0.0 |
|||||||||
| 100% | 69.09% | 68.8% | 66.15% | 68.73% | 68.55% | 69.24% | 67.96% | 69.56% | |
| Duration | 3.255ms | 0.976ms | 10.702ms | 15.431ms | 3.407ms | 1.649ms | 0.411ms | 6.194ms | |
|
Woah v1.3.1 |
|||||||||
| 100% | 59.57% | 63.67% | 61.91% | 63.44% | 56.64% | 64.01% | 59.53% | 67.92% | |
| Duration | 5.517ms | 1.788ms | 10.588ms | 11.752ms | 6.321ms | 1.816ms | 0.655ms | 12.504ms | |
|
WTF Forms v2.2.0 |
|||||||||
| 100% | 74.01% | 73.93% | 70.52% | 51.77% | 72.87% | 74.24% | ERROR | 74.39% | |
| Duration | 2.639ms | 0.737ms | 6.552ms | 10.108ms | 2.631ms | 1.66ms | 0.195ms | 5.217ms | |
|
YaCy v4.1.2 |
|||||||||
| 100% | 66.14% | 77.59% | 53.32% | 54.77% | 76.69% | 79.43% | 61.59% | 79.84% | |
| Duration | 8.183ms | 2.541ms | 16.964ms | 28.98ms | 8.806ms | 2.15ms | 0.87ms | 17.079ms | |
|
Yue v1.1.1 |
|||||||||
| 100% | 79.3% | 79.04% | 73.96% | 77.44% | 77.07% | 79.15% | 79% | 79.3% | |
| Duration | 1.211ms | 0.76ms | 2.836ms | 6.19ms | 1.843ms | 1.244ms | 0.214ms | 2.619ms | |
|
Zotero Dark Theme v0.0.0 |
|||||||||
| 100% | 67.53% | 71.85% | 65.49% | 67.39% | 59.68% | 70.32% | 65.94% | 74.73% | |
| Duration | 4.861ms | 1.847ms | 15.083ms | 16.096ms | 4.208ms | 1.628ms | 0.457ms | 8.572ms | |
| clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass | ||
| Totals |
10,300,250 (9.82MB) |
7,487,417 (7.14MB) |
7,760,047 (7.4MB) |
6,736,329 (6.42MB) |
7,064,253 (6.74MB) |
7,365,491 (7.02MB) |
7,690,518 (7.33MB) |
7,231,551 (6.9MB) |
8,029,063 (7.66MB) |
| Percent Reduction | 100% | 72.69% | 75.34% | 65.4% | 68.58% | 71.51% | 74.66% | 70.21% | 77.95% |
| Total Durations | 4.317s | 1.057s | 39.180s | 10.362s | 3.840s | 864ms | 304ms | 7.196s | |
| Total Errors | 2 | 2 | 0 | 8 | 2 | 1 | 23 | 14 | |
comments #
0001Details
Basic comment removal
Standard
/* ... */comments should be stripped entirely.Source
Expected
Outputs
clean-css ✓
csskit ✓
csslop ✓
cssnano ✓
csso ✓
esbuild ✓
lightningcss ✓
sass ✓
0002Details
Inline comment removal
A comment embedded within a declaration value (
color: /* inline */ red) must be removed without breaking the surrounding value.Source
Expected
Outputs
clean-css ✓
csskit ✓
csslop ✓
cssnano ✓
csso ✓
esbuild ✓
lightningcss ✓
sass ✓
0003Details
Important comment preservation
Comments starting with
/*!are license/legal markers and must be preserved. Stripping them can cause legal compliance issues.Source
Expected
Outputs
clean-css ✓
csskit ✗
csslop ✓
cssnano ✓
csso ✗
esbuild ✓
lightningcss ✗
sass ✓
0004Details
Comment in custom property value must be preserved
--bar: a/**/btokenizes asident:aident:bwith no whitespace between them. Replacing the comment with a space producesa bwhich is a different token sequence. This matters for@container style()queries matching against custom property values.Source
Expected
Outputs
clean-css ✓
csskit ✗
csslop ✓
cssnano ✗
csso ✓
esbuild ✗
lightningcss ✗
sass ✗
0005Details
Comment in @container style query custom property must be preserved
@container style(--bar: a/**/b)uses a comment as a zero-width token separator. Replacing it with a space or removing it entirely changes the token sequence the query matches against, breaking the correspondence with the declaration--bar: a/**/b.Source
Expected
Outputs
clean-css ✗
csskit ✗
csslop ✓
cssnano ✗
csso ✗
esbuild ✗
lightningcss ✗
sass ✗