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.29 | v0.0.21 | v8.0.5 | v5.0.5 | v0.28.2 | v1.33.0 | v1.102.0 | |
| anchor | 2 / 5 | 1 / 5 | 5 / 5 | 2 / 5 | 2 / 5 | 1 / 5 | 0 / 5 | 1 / 5 |
| charset | 5 / 13 | 1 / 13 | 7 / 13 | 6 / 13 | 2 / 13 | 0 / 13 | 8 / 13 | 7 / 13 |
| colors | 26 / 83 | 71 / 83 | 83 / 83 | 40 / 83 | 29 / 83 | 39 / 83 | 47 / 83 | 25 / 83 |
| combined | 0 / 4 | 0 / 4 | 4 / 4 | 0 / 4 | 0 / 4 | 0 / 4 | 0 / 4 | 0 / 4 |
| comments | 5 / 7 | 3 / 7 | 7 / 7 | 4 / 7 | 4 / 7 | 4 / 7 | 3 / 7 | 4 / 7 |
| 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 | 17 / 23 | 6 / 23 | 23 / 23 | 13 / 23 | 17 / 23 | 12 / 23 | 14 / 23 | 6 / 23 |
| empty-rules | 7 / 7 | 0 / 7 | 7 / 7 | 7 / 7 | 7 / 7 | 6 / 7 | 6 / 7 | 6 / 7 |
| escaping | 3 / 15 | 13 / 15 | 15 / 15 | 4 / 15 | 4 / 15 | 12 / 15 | 14 / 15 | 11 / 15 |
| font-face | 3 / 13 | 2 / 13 | 13 / 13 | 4 / 13 | 3 / 13 | 4 / 13 | 5 / 13 | 2 / 13 |
| gradients | 0 / 11 | 0 / 11 | 11 / 11 | 1 / 11 | 0 / 11 | 1 / 11 | 4 / 11 | 0 / 11 |
| 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 / 12 | 5 / 12 | 12 / 12 | 1 / 12 | 1 / 12 | 5 / 12 | 2 / 12 | 1 / 12 |
| merging | 7 / 10 | 4 / 10 | 10 / 10 | 9 / 10 | 6 / 10 | 6 / 10 | 8 / 10 | 4 / 10 |
| nesting | 0 / 33 | 10 / 33 | 33 / 33 | 13 / 33 | 0 / 33 | 14 / 33 | 6 / 33 | 7 / 33 |
| page | 3 / 4 | 3 / 4 | 4 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 3 / 4 | 2 / 4 |
| property | 4 / 7 | 3 / 7 | 7 / 7 | 4 / 7 | 4 / 7 | 0 / 7 | 7 / 7 | 3 / 7 |
| scope | 1 / 3 | 1 / 3 | 3 / 3 | 1 / 3 | 1 / 3 | 2 / 3 | 1 / 3 | 0 / 3 |
| selectors | 11 / 17 | 5 / 17 | 17 / 17 | 12 / 17 | 8 / 17 | 11 / 17 | 17 / 17 | 5 / 17 |
| selectors-advanced | 4 / 25 | 5 / 25 | 25 / 25 | 5 / 25 | 5 / 25 | 7 / 25 | 5 / 25 | 5 / 25 |
| shorthands | 29 / 79 | 9 / 79 | 79 / 79 | 24 / 79 | 22 / 79 | 20 / 79 | 58 / 79 | 4 / 79 |
| 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 | 15 / 77 | 20 / 77 | 77 / 77 | 57 / 77 | 20 / 77 | 34 / 77 | 57 / 77 | 30 / 77 |
| whitespace | 13 / 21 | 19 / 21 | 21 / 21 | 15 / 21 | 16 / 21 | 13 / 21 | 16 / 21 | 13 / 21 |
| zero-units | 10 / 13 | 12 / 13 | 13 / 13 | 9 / 13 | 10 / 13 | 9 / 13 | 13 / 13 | 8 / 13 |
| Total | 173 / 518 | 204 / 518 | 512 / 518 | 249 / 518 | 175 / 518 | 221 / 518 | 318 / 518 | 148 / 518 |
| Total (%) | 33.39% | 39.38% | 98.84% | 48.06% | 33.78% | 42.66% | 61.38% | 28.57% |
| Total Duration | 90ms | 276ms | 409ms | 519ms | 113ms | 343ms | 13ms | 444ms |
Historical Trends
Pass rate over time across 59 recorded runs.
anchor #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
position-area center center shortens to center
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
5ms 102ms 9ms 54ms 5ms 22ms 1ms 3ms
|
||||||||
0002
|
||||||||
Details
position-area drops default center axis
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 2ms
|
||||||||
0003
|
||||||||
Details
@position-try equivalent to flip-block tacticA SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 12ms 3ms 1ms 1ms 1ms 3ms
|
||||||||
0004
|
||||||||
Details
Empty @position-try removalAn empty SourceView in Playground
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
SourceView in Playground
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 | 103ms | 24ms | 61ms | 7ms | 26ms | 1ms | 12ms |
charset #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@charset removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
2ms 4ms 1ms 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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Move @charset to the top of documentsIf a
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Replace unicode escapes with actual characterIf the SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 6ms 2ms 1ms 1ms 1ms 2ms
|
||||||||
0005
|
||||||||
Details
Do not replace unicode escapes in non-unicode charsetsIf the SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Handle multiple charsetsA SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
2ms 5ms 3ms 3ms 2ms 1ms 1ms 2ms
|
||||||||
0007
|
||||||||
Details
A UTF-16 @charset label means UTF-8Determining the fallback encoding says that if the SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
"utf-16" is a UTF-16LE label, so it also means UTF-8The Encoding Standard maps A minifier that string-matches only SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Shorten the @charset label to its shortest aliasLabels are looked up in the Encoding Standard, which gives every encoding
several aliases. SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
An unrecognised @charset label has no effectIf the label does not match an Encoding Standard label the lookup fails and
the stylesheet keeps the encoding it would have had anyway, so the rule is
inert and removable. Gecko SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
An uppercased @charset is not an encoding declarationCSS at-keywords are ASCII case-insensitive, but the @charset rule, and its value
are not: engines compare raw bytes against SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Never resolve escapes inside a @charset labelEngines read A minifier that unescapes strings would emit SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
A single-quoted @charset is not an encoding declaration
Normalising the quotes instead - which minifiers do to ordinary strings - turns a rule the browser ignored into a live encoding declaration. This is incorrect and may cause bugs. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 5 / 13 | 1 / 13 | 7 / 13 | 6 / 13 | 2 / 13 | 0 / 13 | 8 / 13 | 7 / 13 |
| Percent | 38.46% | 7.69% | 53.84% | 46.15% | 15.38% | 0% | 61.53% | 53.84% |
| Duration | 6ms | 11ms | 16ms | 16ms | 10ms | 10ms | 1ms | 15ms |
colors #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Hex shortening
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Hex to named color
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
rgb() to named color
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 4ms
|
||||||||
0004
|
||||||||
Details
rgba() with alpha=1Fully opaque SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
rgb() to named color (non-trivial)
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Hex shortening (non-white)
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0008
|
||||||||
Details
hsl() to named color
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
0009
|
||||||||
Details
rgba() zero alpha to short hex
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
HWB to shorter representation
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 2ms 1ms 1ms 2ms
|
||||||||
0011
|
||||||||
Details
Named color to shorter hex
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
RGB to named color (olive)
SourceView in Playground
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)
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
color-mix() with known colors flattened to named color
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
color-mix() default percentages flattened to named colorWhen SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0026
|
||||||||
Details
oklch() numeric minification
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0028
|
||||||||
Details
color-mix identity resolves to the color itself
SourceView in Playground
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. SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
color-mix with var(): minify literal color argument
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
color-mix with var(): minify hsl to named color
SourceView in Playground
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, SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 1ms 7ms 1ms 1ms 1ms 1ms
|
||||||||
0035
|
||||||||
Details
Out-of-gamut display-p3 color must not be clamped
Additionally SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 7ms
|
||||||||
0036
|
||||||||
Details
color-mix() with 100% first color eliminates to that color
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0038
|
||||||||
Details
Redundant 50% percentages removed from color-mix()
SourceView in Playground
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()
SourceView in Playground
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()
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0043
|
||||||||
Details
color-mix() with percentages summing over 100% must normalize
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0057
|
||||||||
Details
Named colors as quoted stringsWhen a quoted string contains a named color ( SourceView in Playground
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 ( SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 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 SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0063
|
||||||||
Details
Always shorten the color keyword transparent to hexAccording to the CSS3 color
specification, the color
keyword SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0064
|
||||||||
Details
Do not convert effectively transparent colors to transparentAll colors with an alpha of 0, are equivalent to the keyword SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0065
|
||||||||
Details
Simplify useless light-dark functionsThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0066
|
||||||||
Details
Shorten colors in light-dark functionsThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
0067
|
||||||||
Details
Shorten colors in light-dark functions and simplify if uselessAfter converting both colors in a SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0068
|
||||||||
Details
Remove useless calc's in hsl(from)The calculations used here can all be resolved and simplified during runtime.
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 9ms 5ms 1ms 1ms 1ms 4ms
|
||||||||
0069
|
||||||||
Details
Collapse whitesparound around calc in an hsl(from)Whitespace around adjacent SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 3ms 1ms 1ms 1ms 2ms
|
||||||||
0070
|
||||||||
Details
Convert LAB color to keyword name when shorterLAB color spaces with percents that exactly produce an in-gamut sRGB color value should be converted to hex or color keyword, whichever is shortest. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0071
|
||||||||
Details
Convert numeric LAB color to keyword name when shorterLAB color spaces with numbers that exactly produce an in-gamut sRGB color value should be converted to hex or color keyword, whichever is shortest. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0072
|
||||||||
Details
Remove
|
||||||||
0073
|
||||||||
Details
Short-hex to color keywordIf a short hex representation is longer than the color keyword representation, use the keyword. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0074
|
||||||||
Details
RRGGBBAA Hex to color keywordIf a longform hex can be represented with a shortform hex or color keyword, use the shortest representation. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0075
|
||||||||
Details
Numeric HSL values to color keywordIf an HSL color uses numeric values that could be represented with a shorter hex or color keyword representation, use the shortest option. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
0076
|
||||||||
Details
RGBA to color keywordConvert all RGBA color representations to hex or color keywords, whichever is shortest. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0077
|
||||||||
Details
Numeric HWB values to color keywordIf an HWB color uses numeric values that could be represented with a shorter hex or color keyword representation, use the shortest option. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0078
|
||||||||
Details
Do not convert
|
||||||||
0079
|
||||||||
Details
Color-mix in OKLCH to color keywordIf all values in the color mix are the same, they can be merged into a single color and reduced to its shortest representation. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0080
|
||||||||
Details
High precision OKLCH to color keywordGiven a high precision OKLCH color representation that is equivalent to an RGB
color value, in this case SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0081
|
||||||||
Details
Low precision OKLCH to color keywordLower decimal point precision (DPP) OKLCH representations are perceptually
identical to their higher precision versions. Given a lower precision OKLCH
color representation that is equivalent to an RGB color value, in this case
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0082
|
||||||||
Details
Remove space in border shorthand before hex with alphaThe See also: colors/0034 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0083
|
||||||||
Details
Do not rename grey/gray when used in a custom-property nameReferences to custom property names must not be changed. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 26 / 83 | 71 / 83 | 83 / 83 | 40 / 83 | 29 / 83 | 39 / 83 | 47 / 83 | 25 / 83 |
| Percent | 31.32% | 85.54% | 100% | 48.19% | 34.93% | 46.98% | 56.62% | 30.12% |
| Duration | 17ms | 25ms | 60ms | 88ms | 21ms | 52ms | 2ms | 112ms |
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:
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
3ms 1ms 4ms 6ms 1ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
Merge identical adjacent rules after color minificationAfter other optimizations are complete, like minifying color representations, merge any identical adjacent rules. Combines:
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
2ms 1ms 13ms 4ms 3ms 1ms 1ms 5ms
|
||||||||
0003
|
||||||||
Details
Introduce nesting to repeated selectors and deduplicate overridden propertiesNest adjacent rules where the selectors all start with the same prefix. Then, if any selectors are used in multiple nested rules with the same properties, remove the earlier defined property. If this results in any empty rules, remove those as well. Combines:
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 3ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Linear gradient optimizations and background property shorthandConvert all colors to their minified representation first, then apply advanced linear-gradient optimizations and combine all background properties to use the background property shorthand. Combines:
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 4ms 3ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 4 | 0 / 4 | 4 / 4 | 0 / 4 | 0 / 4 | 0 / 4 | 0 / 4 | 0 / 4 |
| Percent | 0% | 0% | 100% | 0% | 0% | 0% | 0% | 0% |
| Duration | 6ms | 6ms | 23ms | 16ms | 6ms | 3ms | 1ms | 10ms |
container #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@container whitespace removalRemove whitespace inside SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Empty @container removalAn SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Container style query whitespace
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 | 5ms | 2ms | 3ms | 1ms | 5ms |
counter-style #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@counter-style whitespace removalBasic whitespace minification inside a SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Empty @counter-style removalAn empty SourceView in Playground
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. SourceView in Playground
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 | 2ms | 1ms | 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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Duplicate selector removal within a ruleDuplicate selectors in a selector list should be deduplicated. SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 4ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Duplicate declaration removal with !importantWhen a property is declared with SourceView in Playground
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. SourceView in Playground
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, SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 4ms 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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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. SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0014
|
||||||||
Details
Duplicate shorthand property override
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
UNSAFE: border-top before border-block must not be removed
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0020
|
||||||||
Details
Remove overridden properties in rules with multiple selectorsIf the properties of all selectors in a rule get overridden later in the stylesheet, then that property can be removed from the earlier rule. If no properties are left in the rule (it is empty), the entire rule may be discarded. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
Convert double-colon before/after to single and de-dupe in same selectorThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
Convert double-colon before/after to single and de-dupe separate selectorThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
Do not abstract Data-URIs to custom-propertiesData-URIs can be quite long. When the same one is used multiple times, it could be stored in a custom-property and referenced. However, when GZipped, the custom-property and references actually result in a larger size compared to just letting the duplicate Data-URi's exist and be GZipped away. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 17 / 23 | 6 / 23 | 23 / 23 | 13 / 23 | 17 / 23 | 12 / 23 | 14 / 23 | 6 / 23 |
| Percent | 73.91% | 26.08% | 100% | 56.52% | 73.91% | 52.17% | 60.86% | 26.08% |
| Duration | 4ms | 13ms | 20ms | 25ms | 5ms | 15ms | 1ms | 21ms |
empty-rules #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Empty rule removal
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @media ruleAn SourceView in Playground
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 ( SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 5ms 1ms 1ms 1ms 5ms
|
||||||||
0007
|
||||||||
Details
Remove keyframes with only empty childrenIf all of the children of a keyframe definition are empty, the entire
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 7 / 7 | 0 / 7 | 7 / 7 | 7 / 7 | 7 / 7 | 6 / 7 | 6 / 7 | 6 / 7 |
| Percent | 100% | 0% | 100% | 100% | 100% | 85.71% | 85.71% | 85.71% |
| Duration | 1ms | 2ms | 4ms | 10ms | 2ms | 4ms | 1ms | 10ms |
escaping #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Escape sequence resolution in identifiers
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
See also: escaping/0015 SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Escape of special character in class name
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Hex escape in standard property name
SourceView in Playground
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
SourceView in Playground
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 ( SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0014
|
||||||||
Details
Escape semi-colons in attribute selectorsWhen an attribute selector includes a semi-colon it must either be surrounded in quotes or escaped. If the total number of escapes required is 3 or more, then prefer quotes to avoid additional characters. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Hex escape for hyphen-minus in class name
See also: escaping/0004 SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 3 / 15 | 13 / 15 | 15 / 15 | 4 / 15 | 4 / 15 | 12 / 15 | 14 / 15 | 11 / 15 |
| Percent | 20% | 86.66% | 100% | 26.66% | 26.66% | 80% | 93.33% | 73.33% |
| Duration | 2ms | 2ms | 8ms | 11ms | 2ms | 10ms | 1ms | 13ms |
font-face #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@font-face whitespace removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
font-family quote removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
url() quote removal in @font-face srcQuotes inside SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
unicode-range wildcard compression
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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
( SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
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, SourceView in Playground
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, SourceView in Playground
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. SourceView in Playground
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 | 6ms | 5ms | 9ms | 1ms | 8ms | 1ms | 10ms |
gradients #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Default gradient direction omission
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
180deg gradient direction omission
SourceView in Playground
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
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Redundant gradient stop positions
SourceView in Playground
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
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Combine adjacent identical colors in linear-gradient and remove 0%/100%If the same color has multiple adjacent color stops, the color stops can be
combined, retaining only the first and last percent and separating them with a
space. If the first percent is 0% or the last percent is 100% they can be
removed as these are automatically implied. If the first percent is the same as
the last percent of the previous color stop, it can become a unitless SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Combine adjacent identical colors in linear-gradientIf the same color has multiple adjacent color stops the color stops can be
combined, retaining only the first and last percent and separating them with a
space. When defining the start and stop of a color you can use SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Remove 0% and 100% from grouped color stops in gradientYou can group the start and stop of a color in a gradient together with a space
separation. However, 0% and 100% are not required because they are implied for
the first and last color in the list. You can also use a unitless SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Replace color-start with
|
||||||||
0010
|
||||||||
Details
Remove triple 100% from end of gradientIf a gradient's color stop ends with 100%, and is followed by another color of
100% start and 100% end, both can be removed, as the 100% will be implied.
Even though the prior color stop ends with the same percent as the start of the
next color, since the start is 100% it can be removed, instead of replaced with
unitless SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Remove triple 0% from start of gradientIf the first color in a gradient has a color start and stop of 0%, both can be
removed. If the following color starts with the same percent as the stop of the
previous color, it can be renamed to a unitless SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 11 | 0 / 11 | 11 / 11 | 1 / 11 | 0 / 11 | 1 / 11 | 4 / 11 | 0 / 11 |
| Percent | 0% | 0% | 100% | 9.09% | 0% | 9.09% | 36.36% | 0% |
| Duration | 2ms | 2ms | 15ms | 9ms | 6ms | 7ms | 1ms | 9ms |
import #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
url() to string form in @import
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
@import with media query
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
@import with layer keyword
SourceView in Playground
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()
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
| 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 | 2ms | 1ms | 3ms | 1ms | 6ms |
keyframes #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@keyframes
|
||||||||
0002
|
||||||||
Details
Keyframes from/to keyword optimization
SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
| 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 | 2ms | 1ms | 1ms | 2ms | 1ms | 4ms |
media #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@media whitespace removalStrip whitespace inside a basic SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0003
|
||||||||
Details
Remove redundant 'all and' in @media
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Convert min-width to range syntax
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Retain
|
||||||||
0011
|
||||||||
Details
Remove space after
|
||||||||
0012
|
||||||||
Details
Remove space after parens before "and" in media queryIf a media query contains an SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 1 / 12 | 5 / 12 | 12 / 12 | 1 / 12 | 1 / 12 | 5 / 12 | 2 / 12 | 1 / 12 |
| Percent | 8.33% | 41.66% | 100% | 8.33% | 8.33% | 41.66% | 16.66% | 8.33% |
| Duration | 1ms | 3ms | 6ms | 9ms | 2ms | 8ms | 1ms | 12ms |
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
Remove empty @media ruleAn @media rule with no content should be removed entirely. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Merging rules is unsafe with the all propertyMerging SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 7 / 10 | 4 / 10 | 10 / 10 | 9 / 10 | 6 / 10 | 6 / 10 | 8 / 10 | 4 / 10 |
| Percent | 70% | 40% | 100% | 90% | 60% | 60% | 80% | 40% |
| Duration | 2ms | 2ms | 8ms | 9ms | 2ms | 7ms | 1ms | 8ms |
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. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 &
SourceView in Playground
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 ( SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Redundant & removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Doubled & selector
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0009
|
||||||||
Details
& in non-initial position
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Flatten &:pseudo from empty parent
SourceView in Playground
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 SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 3ms
|
||||||||
0021
|
||||||||
Details
Merge nested children with the same rules and specificityComma-separated nested selectors are treated the same as SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
Do not merge nested child selectors with different specificityComma-separated nested selectors are treated the same as SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
Merge nested children with the same rules and specificity (IDs)Comma-separated nested selectors are treated the same as In this test, an unnested equivalent would look like
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0024
|
||||||||
Details
Merge nested child :before/:after pseudo-elements with same rulesThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0025
|
||||||||
Details
Merge matching nested attribute selectors and
|
||||||||
0026
|
||||||||
Details
Un-nest unnecessarily nested pseudo-classes with empty parentIf there is only one nested selector and it is a pseudo-class, with no other styles applied to the parent, un-nest it. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0027
|
||||||||
Details
Un-nest unnecessarily nested classes with empty parentIf there is only one nested selector and it is a class, with no other styles applied to the parent, un-nest it. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0028
|
||||||||
Details
Nest general siblingsIf an adjacent rule uses the same selector followed by an adjacent sibling, nest them together. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
Remove redundant
|
||||||||
0030
|
||||||||
Details
Merge nested and un-nested rules that are otherwise identicalIf a selector has a descendant with a rule declaration that is identical to a rule of the same descendant but nested, merge the two if adjacent. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
Do not merge matching nested/un-nested rules with different specifictyMultiple selectors on the same level of a nested structure will be treated like
Example: SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
Remove useless
|
||||||||
0033
|
||||||||
Details
Do not remove :is when it contains potentially unsupported selectorsIf a new CSS feature is used in a selector and the browser does not recognize it
the entire rule will be ignored, even if there are other valid selectors
attached to the rule ( SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 0 / 33 | 10 / 33 | 33 / 33 | 13 / 33 | 0 / 33 | 14 / 33 | 6 / 33 | 7 / 33 |
| Percent | 0% | 30.3% | 100% | 39.39% | 0% | 42.42% | 18.18% | 21.21% |
| Duration | 4ms | 6ms | 27ms | 29ms | 5ms | 21ms | 1ms | 33ms |
page #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@page whitespace removalBasic whitespace removal in a SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 2ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
Named @page pseudo-class
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @page removalAn empty SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
@page margin at-rules
SourceView in Playground
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 | 3ms | 1ms | 2ms |
property #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
|
||||||||
0002
|
||||||||
Details
|
||||||||
0003
|
||||||||
Details
Remove comments inside
|
||||||||
0004
|
||||||||
Details
Remove
|
||||||||
0005
|
||||||||
Details
Remove
|
||||||||
0006
|
||||||||
Details
Remove
|
||||||||
0007
|
||||||||
Details
Remove whitespace around
|
||||||||
| Subtotal | 4 / 7 | 3 / 7 | 7 / 7 | 4 / 7 | 4 / 7 | 0 / 7 | 7 / 7 | 3 / 7 |
| Percent | 57.14% | 42.85% | 100% | 57.14% | 57.14% | 0% | 100% | 42.85% |
| Duration | 1ms | 1ms | 2ms | 4ms | 1ms | 4ms | 1ms | 5ms |
scope #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@scope whitespace removalBasic whitespace removal in SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
@scope with proximity limit
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
Empty @scope removalAn empty SourceView in Playground
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 | 2ms | 1ms | 2ms |
selectors #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
nth-child
|
||||||||
0002
|
||||||||
Details
nth-child redundant +0 removal
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
nth-child(2n) preserved
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
:nth-child(1n) shorthand
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
Universal selector preservationThe SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 11 / 17 | 5 / 17 | 17 / 17 | 12 / 17 | 8 / 17 | 11 / 17 | 17 / 17 | 5 / 17 |
| Percent | 64.7% | 29.41% | 100% | 70.58% | 47.05% | 64.7% | 100% | 29.41% |
| Duration | 2ms | 2ms | 7ms | 12ms | 2ms | 10ms | 1ms | 11ms |
selectors-advanced #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
:is() decomposition with equal-specificity selectors
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
:has() whitespace removalWhitespace inside SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
:where() whitespace removalWhitespace inside SourceView in Playground
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 SourceView in Playground
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 -- SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
Double :not() cancellation
SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 ( SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0019
|
||||||||
Details
:where() merge when shorter
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0021
|
||||||||
Details
:where() merge with type selector reordering
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0023
|
||||||||
Details
Remove
|
||||||||
0024
|
||||||||
Details
Remove
|
||||||||
0025
|
||||||||
Details
Retain
|
||||||||
| Subtotal | 4 / 25 | 5 / 25 | 25 / 25 | 5 / 25 | 5 / 25 | 7 / 25 | 5 / 25 | 5 / 25 |
| Percent | 16% | 20% | 100% | 20% | 20% | 28% | 20% | 20% |
| Duration | 4ms | 2ms | 15ms | 20ms | 4ms | 15ms | 1ms | 17ms |
shorthands #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Margin 4-to-1 collapse
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Inset shorthand collapse + zero-unit strip
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Overflow longhand to shorthand
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Gap longhand to shorthand
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
Flex longhand to shorthand
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Outline longhand to shorthand
SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Margin longhand to shorthandIndividual SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 1ms 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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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. SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
Background longhand merge with defaultsBackground longhands merge into SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0030
|
||||||||
Details
Font longhand mergefont-style, font-weight, font-size, line-height, and font-family merge into SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0031
|
||||||||
Details
Transition longhand mergetransition-property, transition-duration, transition-timing-function, and transition-delay merge into SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
Animation longhand mergeAll 8 animation longhands merge into SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0033
|
||||||||
Details
Border default width omission
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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 SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
0039
|
||||||||
Details
Gap 2-to-1 value collapseWhen row-gap and column-gap are the same in a 2-value SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0042
|
||||||||
Details
border longhands then border-image (safe ordering)Border longhands come before border-image. Collapsing longhands to SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 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 SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 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 SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0047
|
||||||||
Details
font shorthand intentionally resets font-variant-numericDeclaring font-variant-numeric then SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 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 SourceView in Playground
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)
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0050
|
||||||||
Details
mask longhands before mask-border (safe ordering)Mask longhands come before SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0051
|
||||||||
Details
mask shorthand intentionally resets mask-borderDeclaring SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 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 SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0053
|
||||||||
Details
Padding longhand merge unsafe with var()Merging padding-top/right/bottom/left into SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0055
|
||||||||
Details
Border longhand merge unsafe with var()Merging SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0056
|
||||||||
Details
Shorthand plus !important override for mixed importanceWhen one longhand has SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 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.
SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 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. SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 2ms 1ms 1ms 1ms
|
||||||||
0061
|
||||||||
Details
Padding longhand merge safe with @property constraintWhen each custom property has an SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0062
|
||||||||
Details
Border longhand merge safe with @property constraintWhen each custom property has an SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0063
|
||||||||
Details
top/right/bottom/left to inset shorthand
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 2ms 4ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0066
|
||||||||
Details
border-top before border is dead code
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 4ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0072
|
||||||||
Details
inset-block-start before inset-block is dead code
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0075
|
||||||||
Details
Combine background position X and YIf SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0076
|
||||||||
Details
Combine background properties into shorthandThe background properties shown in this test can all be combined into a single
shorthange SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 6ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0077
|
||||||||
Details
Do not use border shorthand with double inheritConverting to shorthand when the border color and style are both SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 5ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0078
|
||||||||
Details
Combine border sides using shorthand when all matchIf all border sides are defined with the same values, combine them using the border shorthand. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 2ms
|
||||||||
0079
|
||||||||
Details
Border shorthand with two border-color valuesIf you have a singular SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 3ms 2ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 29 / 79 | 9 / 79 | 79 / 79 | 24 / 79 | 22 / 79 | 20 / 79 | 58 / 79 | 4 / 79 |
| Percent | 36.7% | 11.39% | 100% | 30.37% | 27.84% | 25.31% | 73.41% | 5.06% |
| Duration | 14ms | 45ms | 122ms | 60ms | 16ms | 45ms | 2ms | 42ms |
starting-style #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@starting-style whitespace removalBasic whitespace removal in SourceView in Playground
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
SourceView in Playground
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 | 2ms | 1ms | 1ms | 1ms | 1ms |
supports #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
@supports condition whitespaceSpaces inside the SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 15ms 1ms 1ms 1ms 2ms
|
||||||||
0002
|
||||||||
Details
Remove empty @supports ruleAn @supports rule with no content should be removed entirely, like empty style rules. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 | 2ms | 18ms | 1ms | 3ms | 1ms | 4ms |
transforms #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
translate3d to translate
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0002
|
||||||||
Details
translate to translateY
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
scale with equal axes
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0004
|
||||||||
Details
rotateZ to rotate
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
scale3d to scale
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
rotate3d to rotateY
SourceView in Playground
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
SourceView in Playground
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, SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0010
|
||||||||
Details
scale() percentage to number
SourceView in Playground
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 SourceView in Playground
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 | 4ms | 6ms | 1ms | 6ms | 1ms | 6ms |
values #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
font-weight bold to 700
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0003
|
||||||||
Details
url() quote removalQuotes inside SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Redundant positive sign removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Leading zero padding removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0007
|
||||||||
Details
URL whitespace trimming
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Quote normalization
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0009
|
||||||||
Details
Milliseconds to seconds conversion
SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 2ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0012
|
||||||||
Details
var() custom property preservation
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0013
|
||||||||
Details
Gradient function whitespaceWhitespace inside SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0015
|
||||||||
Details
Calc constant folding
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0016
|
||||||||
Details
Calc addition folding
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Trailing zero removal
SourceView in Playground
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 ( SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0022
|
||||||||
Details
Multi-keyword display to single keyword
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0027
|
||||||||
Details
Turn to degrees conversion
SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0029
|
||||||||
Details
Border shorthand canonical order
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0030
|
||||||||
Details
flex-flow canonical order
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0032
|
||||||||
Details
Deduplicate font-family listDuplicate font names in a font-family list can be removed. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0041
|
||||||||
Details
Calc double negation elimination
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 6ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0042
|
||||||||
Details
Calc double inversion eliminationDividing by a reciprocal cancels out. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 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: SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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. SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0049
|
||||||||
Details
Calc multiply by zero
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0050
|
||||||||
Details
Calc constant pi resolution
SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0051
|
||||||||
Details
Calc constant e resolution
SourceView in Playground
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. SourceView in Playground
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: SourceView in Playground
Expected
ValidateOutputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0054
|
||||||||
Details
Calc single term unwrap
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0060
|
||||||||
Details
url() quotes required when URL contains parenthesesRemoving quotes from SourceView in Playground
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
SourceView in Playground
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, SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 3ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0063
|
||||||||
Details
max() with known values resolves to largestWhen all arguments to SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0068
|
||||||||
Details
Shorten
|
||||||||
0069
|
||||||||
Details
calc() zero with different unit must not be dropped
SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0074
|
||||||||
Details
Invalid quotes are removedThe SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0075
|
||||||||
Details
Convert
|
||||||||
0076
|
||||||||
Details
Remove current directory indicator from start of URLIf a file path in a URL (for a background, mask, etc) begins with a period and a
forward-slash ( SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0077
|
||||||||
Details
Remove quotes and escape single space in URLIf a url contains 1 or fewer spaces, the space can be escaped and the quotes can be removed. If there are 2 or more spaces, then keeping the quotes results in the same or smaller output. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 15 / 77 | 20 / 77 | 77 / 77 | 57 / 77 | 20 / 77 | 34 / 77 | 57 / 77 | 30 / 77 |
| Percent | 19.48% | 25.97% | 100% | 74.02% | 25.97% | 44.15% | 74.02% | 38.96% |
| Duration | 7ms | 22ms | 23ms | 56ms | 9ms | 45ms | 2ms | 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. Also removes trailing semi-colon. SourceView in Playground
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 SourceView in Playground
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. SourceView in Playground
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 ( SourceView in Playground
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. SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Consecutive semicolon removal
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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 SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0018
|
||||||||
Details
Space before !important removable
SourceView in Playground
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 SourceView in Playground
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
( SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
| Subtotal | 13 / 21 | 19 / 21 | 21 / 21 | 15 / 21 | 16 / 21 | 13 / 21 | 16 / 21 | 13 / 21 |
| Percent | 61.9% | 90.47% | 100% | 71.42% | 76.19% | 61.9% | 76.19% | 61.9% |
| Duration | 2ms | 4ms | 5ms | 13ms | 2ms | 13ms | 1ms | 14ms |
zero-units #
| test | clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass |
|---|---|---|---|---|---|---|---|---|
0001
|
||||||||
Details
Strip unit on zero length
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0005
|
||||||||
Details
Leading zero removal
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0006
|
||||||||
Details
Trailing zero removal
SourceView in Playground
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
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 1ms 1ms 2ms 1ms 1ms
|
||||||||
0008
|
||||||||
Details
Keep unit on zero angle
SourceView in Playground
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, SourceView in Playground
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 SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 5ms 1ms 1ms 1ms 1ms 1ms 1ms
|
||||||||
0011
|
||||||||
Details
Preserve unit on zero-percentage flex-basis
SourceView in Playground
Expected
Outputsclean-css
csskit
csslop
cssnano
csso
esbuild
lightningcss
sass
1ms 1ms 1ms 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 SourceView in Playground
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 SourceView in Playground
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 | 6ms | 2ms | 10ms | 2ms | 11ms | 1ms | 9ms |
Real-world tests
The following are the results of testing the minifiers on a corpus of 201 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.59% | 69.58% | 64.17% | 72.01% | 71.63% | 73.95% | |
| Duration | 7.276ms | 4.649ms | 11.246ms | 13.838ms | 5.114ms | 62.98ms | 0.4ms | 8.319ms | |
|
3D transforms v0.0.0 |
|||||||||
| 100% | 73.37% | 72.68% | 67.87% | 72.95% | 73.74% | 72.78% | 72.38% | 75.43% | |
| Duration | 18.061ms | 7.755ms | 39.194ms | 30.298ms | 15.692ms | 2.565ms | 0.716ms | 30.816ms | |
|
960.gs v0.0.0 |
|||||||||
| 100% | 57.31% | 56% | 44.9% | 57.31% | 57.27% | 57.31% | 57.31% | 57.31% | |
| Duration | 3.807ms | 2.492ms | 26.404ms | 12.511ms | 5.338ms | 1.995ms | 0.351ms | 7.771ms | |
|
98 v0.1.18 |
|||||||||
| 100% | 82.43% | 84.39% | 75.14% | 82.1% | 82.16% | 82.92% | 81.83% | ERROR | |
| Duration | 22.783ms | 6.986ms | 66.684ms | 56.594ms | 19.471ms | 2.383ms | 1.212ms | 4.04ms | |
|
Academicons v1.9.6 |
|||||||||
| 100% | 77.41% | 71.33% | 70.83% | 77.3% | 71.04% | 77.3% | 71% | 71.39% | |
| Duration | 3.521ms | 2.945ms | 49.843ms | 14.025ms | 6.964ms | 1.643ms | 0.488ms | 13.758ms | |
|
AdminLTE v4.0.0 |
|||||||||
| 100% | 77.04% | 82.15% | 77.05% | 75.9% | 76.99% | 78.05% | 76.56% | 83.91% | |
| Duration | 340.225ms | 106.637ms | 3,201.216ms | 505.729ms | 204.122ms | 27.629ms | 15.588ms | 398.336ms | |
|
AdminHub v1.0.0 |
|||||||||
| 100% | 80.52% | 79.94% | 65.56% | 79.82% | 79.11% | 80.73% | 79.95% | 80.9% | |
| Duration | 4.421ms | 3.717ms | 17.912ms | 20.978ms | 6.86ms | 1.299ms | 0.68ms | 17.077ms | |
|
AMOLED-cord v5.0.11 |
|||||||||
| 100% | 87.21% | 89.71% | 75.04% | 84.58% | 84.04% | 87% | 86.19% | 91.43% | |
| Duration | 7.143ms | 6.646ms | 50.049ms | 21.081ms | 6.786ms | 1.836ms | 0.96ms | 20.528ms | |
|
Animate v4.1.1 |
|||||||||
| 100% | 78.07% | 77.84% | 37.95% | 24.83% | 76.71% | 76.96% | 25.08% | 81.4% | |
| Duration | 65.329ms | 24.78ms | 75.495ms | 50.106ms | 33.923ms | 6.123ms | 2.328ms | 88.901ms | |
|
Animating Hamburger Icons v0.1.0 |
|||||||||
| 100% | 61.13% | 61.29% | 50.4% | 44.51% | 59.87% | 60.92% | 47.21% | 61.56% | |
| Duration | 9.36ms | 4.386ms | 15.079ms | 14.792ms | 4.655ms | 2.215ms | 0.513ms | 11.332ms | |
|
Animo v1.0.3 |
|||||||||
| 100% | 74.43% | 74.98% | 25.75% | 20.1% | 72.98% | 74.32% | 60.87% | 75.35% | |
| Duration | 36.901ms | 5.739ms | 35.081ms | 43.828ms | 26.392ms | 4.611ms | 1.8ms | 52.284ms | |
|
Animsition v4.0.2 |
|||||||||
| 100% | 73.6% | 73.14% | 37.41% | 26.89% | 72.35% | 73.06% | 26.28% | 74.13% | |
| Duration | 16.715ms | 7.508ms | 24.269ms | 19.014ms | 10.414ms | 2.578ms | 0.945ms | 26.546ms | |
|
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.583ms | 3.253ms | 13.287ms | 20.127ms | 3.209ms | 1.395ms | 0.406ms | 7.126ms | |
|
Balloon v1.0.0 |
|||||||||
| 100% | 85.74% | 87.52% | 84.02% | 84.7% | 85.22% | 86.33% | 84.87% | 86.97% | |
| Duration | 2.873ms | 1.445ms | 9.412ms | 23.007ms | 2.536ms | 0.992ms | 0.379ms | 4.416ms | |
|
Basscss v8.1.0 |
|||||||||
| 100% | 33.34% | 33.7% | 33.14% | 92.24% | 32.82% | 33.58% | 33.47% | 34.73% | |
| Duration | 8.881ms | 2.78ms | 66.724ms | 49.212ms | 6.251ms | 2.346ms | 0.845ms | 20.106ms | |
|
Beer CSS v4.0.21 |
|||||||||
| 100% | 82.32% | 83.4% | 79.28% | 81.95% | 81.89% | 82.69% | 82.22% | 83.48% | |
| Duration | 37.389ms | 24.588ms | 831.028ms | 159.033ms | 58.553ms | 9.012ms | 5.226ms | 125.232ms | |
|
Blooger_Website v0.0.0 |
|||||||||
| 100% | 66.41% | 66.19% | 55.01% | 66.83% | 66.21% | 67.56% | 66.44% | 68.24% | |
| Duration | 3.302ms | 2.408ms | 14.985ms | 14.208ms | 6.454ms | 1.241ms | 0.533ms | 10.333ms | |
|
Boilerform v1.1.2 |
|||||||||
| 100% | 58.48% | 58.35% | 49.97% | 58.14% | 58.37% | 58.64% | 59.14% | 58.94% | |
| Duration | 1.851ms | 1.386ms | 6.352ms | 7.352ms | 1.578ms | 1.185ms | 0.273ms | 10.182ms | |
|
Bojler v3.2.1 |
|||||||||
| 100% | 35.51% | 40.82% | 35.13% | 34.79% | 34.43% | 35.71% | 35.6% | 41.07% | |
| Duration | 6.091ms | 2.177ms | 42.295ms | 16.76ms | 5.58ms | 1.893ms | 0.519ms | 10.253ms | |
|
Bootplus v1.0.5 |
|||||||||
| 100% | 69.82% | 81.26% | 59.66% | 60% | 74.78% | 79.62% | 54.07% | 83.12% | |
| Duration | 100.421ms | 46.484ms | 664.16ms | 217.502ms | 79.145ms | 14.939ms | 5.658ms | 145.11ms | |
|
Bootstrap 4 v4.6.2 |
|||||||||
| 100% | 79.86% | 80.02% | 73.26% | 71.98% | 80.02% | 80.32% | 71.8% | 81.57% | |
| Duration | 105.064ms | 38.478ms | 711.145ms | 275.942ms | 77.768ms | 15.037ms | 6.857ms | 173.561ms | |
|
Bootstrap 5 v5.3.8 |
|||||||||
| 100% | 82.12% | 82.13% | 78.47% | 79.93% | 81.43% | 82.88% | 81.01% | 83.9% | |
| Duration | 101.931ms | 44.47ms | 1,339.755ms | 260.024ms | 84.528ms | 18.919ms | 9.793ms | 219.947ms | |
|
Bttn v0.2.4 |
|||||||||
| 100% | 74.07% | 81.92% | 63.43% | 59.2% | 72.95% | 82.07% | 57.96% | 87.07% | |
| Duration | 27.46ms | 12.041ms | 97.198ms | 48.428ms | 13.762ms | 3.402ms | 1.59ms | 34.061ms | |
|
Cardinal v3.7.0 |
|||||||||
| 100% | 43.71% | 59.32% | 43.6% | 44.14% | 54.78% | 57.48% | 43.9% | 60.75% | |
| Duration | 67.237ms | 19.948ms | 236.13ms | 169.447ms | 43.48ms | 9.51ms | 4.091ms | 162.858ms | |
|
Checka11y v2.5.0 |
|||||||||
| 100% | 71.2% | 91.57% | 70.9% | 62.49% | 63.37% | 91.55% | 72.45% | 91.77% | |
| Duration | 39.456ms | 8.807ms | 106.8ms | 60.17ms | 16.167ms | 4.524ms | 1.95ms | 50.459ms | |
|
Chota v0.9.2 |
|||||||||
| 100% | 80.61% | 80.06% | 65.78% | 58.67% | 77.84% | 81.07% | 72% | 79.11% | |
| Duration | 18.537ms | 4.873ms | 42.401ms | 34.77ms | 10.923ms | 2.705ms | 1.547ms | 25.301ms | |
|
Classless v1.0.0 |
|||||||||
| 100% | 76.67% | 76.64% | 73.65% | 79.45% | 80.84% | 77.06% | 75.55% | 77.81% | |
| Duration | 19.129ms | 3.943ms | 30.261ms | 32.627ms | 8.622ms | 2.129ms | 1.052ms | 17.032ms | |
|
CleanSlate v0.10.1 |
|||||||||
| 100% | 66.55% | 73.59% | 55.92% | 55.37% | 125.11% | 72% | 60.27% | 75.59% | |
| Duration | 12.933ms | 7.331ms | 39.395ms | 24.885ms | 22.839ms | 2.025ms | 0.74ms | 16.133ms | |
|
ClickEffects v0.0.0 |
|||||||||
| 100% | 79.49% | 78.15% | 45.4% | 39.93% | 77.41% | 77.45% | 41.06% | 81.78% | |
| Duration | 19.584ms | 7.592ms | 33.353ms | 27.939ms | 17.259ms | 3.018ms | 1.135ms | 26.368ms | |
|
CodeFrame v4.0.9 |
|||||||||
| 100% | 78.44% | 78.34% | 77.67% | 78.05% | 78.3% | 78.87% | 78.44% | 79.4% | |
| Duration | 112.32ms | 30.726ms | 1,885.149ms | 220.671ms | 94.083ms | 17.871ms | 9.141ms | 229.668ms | |
|
Colofilter v0.0.0 |
|||||||||
| 100% | 81.58% | 87.86% | 59.53% | 69.89% | 79.58% | 83.21% | 68.32% | 84.83% | |
| Duration | 2.84ms | 1.32ms | 13.97ms | 12.714ms | 4.671ms | 1.148ms | 0.389ms | 6.269ms | |
|
Concise v4.0.1 |
|||||||||
| 100% | 73.64% | 74.88% | 66.3% | 61.27% | 73.17% | 74.49% | 62.94% | 74.7% | |
| Duration | 14.494ms | 3.784ms | 31.514ms | 35.68ms | 8.992ms | 1.681ms | 0.909ms | 19.978ms | |
|
Crayon v1.0.0 |
|||||||||
| 100% | 82.93% | 82.93% | 82.93% | 82.58% | 82.93% | 86.91% | 82.58% | 86.91% | |
| Duration | 5.444ms | 0.662ms | 5.142ms | 8.868ms | 1.392ms | 0.78ms | 0.306ms | 8.338ms | |
|
CrookedStyleSheets v0.0.0 |
|||||||||
| 100% | 72.13% | 74.06% | 72.44% | 54.9% | 71.32% | 71.51% | 72.67% | 86.85% | |
| Duration | 1.737ms | 0.974ms | 3.783ms | 5.273ms | 2.84ms | 0.966ms | 0.293ms | 4.46ms | |
|
cs16.css v0.0.0 |
|||||||||
| 100% | 38.07% | 85.64% | 84.56% | 75.13% | 28.24% | 85.85% | 86.3% | 89.36% | |
| Duration | 23.396ms | 3.763ms | 23.373ms | 26.261ms | 3.112ms | 1.973ms | 0.712ms | 12.242ms | |
|
CSS Diner v0.0.0 |
|||||||||
| 100% | 75.95% | 78.88% | 67.2% | 72.22% | 75.88% | 75.59% | 72.05% | ERROR | |
| Duration | 25.473ms | 4.605ms | 40.746ms | 40.695ms | 10.703ms | 2.637ms | 1.238ms | 9.483ms | |
|
css-extras v0.4.0 |
|||||||||
| 100% | 25.33% | 24.72% | 24.11% | 25.02% | 24.93% | 26.26% | 25.91% | 25.75% | |
| Duration | 5.215ms | 0.749ms | 5.678ms | 6.381ms | 4.016ms | 1.485ms | 0.52ms | 3.484ms | |
|
CSS Social Buttons v1.4.0 |
|||||||||
| 100% | 92.79% | 91.56% | 85.5% | 85.29% | 93.74% | 93.44% | 87.42% | 94.09% | |
| Duration | 43.042ms | 4.624ms | 120.525ms | 23.965ms | 12.57ms | 3.127ms | 1.029ms | 28.075ms | |
|
CSS Spinners v2.2.0 |
|||||||||
| 100% | 77.75% | 85.09% | 44% | 19.87% | 74.49% | 84.33% | 19.85% | 85.71% | |
| Duration | 71.363ms | 14.687ms | 79.67ms | 75.08ms | 45.037ms | 9.925ms | 3.578ms | 95.5ms | |
|
CSS3 Buttons v0.0.0 |
|||||||||
| 100% | 78.87% | 79.31% | 39.61% | 41.76% | 77.43% | 78.6% | 72.66% | 81.72% | |
| Duration | 17.342ms | 6.443ms | 57.641ms | 39.782ms | 16.908ms | 2.796ms | 1.315ms | 26.049ms | |
|
CSSCO v1.1.0 |
|||||||||
| 100% | 52.12% | 51.73% | 37.43% | 42.81% | 50.73% | 51.79% | 42.83% | 52.59% | |
| Duration | 2.315ms | 0.918ms | 7.674ms | 4.808ms | 1.837ms | 1.711ms | 0.266ms | 4.813ms | |
|
cssicon v1.0.0 |
|||||||||
| 100% | 81.26% | 81.09% | 72.7% | 67.9% | 68.63% | 81.9% | 68.06% | 82.46% | |
| Duration | 163.339ms | 65.613ms | 1,425.682ms | 520.032ms | 115.06ms | 22.822ms | 9.186ms | 225.551ms | |
|
CSS Plot v0.0.0 |
|||||||||
| 100% | 87.23% | 84.42% | 42.48% | 85.99% | 86.88% | 87.11% | 85.97% | 87.32% | |
| Duration | 9.425ms | 4.819ms | 106.067ms | 50.582ms | 9.137ms | 2.759ms | 1.074ms | 53.917ms | |
|
CSS Zen Garden #215 v0.0.0 |
|||||||||
| 100% | 90.36% | 90.97% | 86.54% | 69.44% | 90.13% | 90.86% | 87.02% | 91.06% | |
| Duration | 17.602ms | 2.202ms | 60.375ms | 61.6ms | 11.932ms | 3.35ms | 0.991ms | 15.5ms | |
|
Cutestrap1 v1.3.1 |
|||||||||
| 100% | 14.2% | 14.31% | 13.79% | 198.53% | 14.05% | 14.38% | 13.85% | 14.47% | |
| Duration | 9.814ms | 2.31ms | 17.748ms | 27.849ms | 4.61ms | 2.022ms | 0.674ms | 11.175ms | |
|
Cutestrap2 v2.0.0 |
|||||||||
| 100% | 51.7% | 51.95% | 51.02% | 49.89% | 50.58% | 52.63% | 50.83% | 52.56% | |
| Duration | 5.226ms | 1.786ms | 21.213ms | 19.05ms | 4.708ms | 1.77ms | 0.77ms | 10.204ms | |
|
Destyle v4.0.1 |
|||||||||
| 100% | 33.91% | 34.33% | 34.27% | 34.93% | 33.72% | 35.59% | 34.86% | 35.78% | |
| Duration | 1.769ms | 0.649ms | 4.681ms | 5.162ms | 1.766ms | 0.748ms | 0.244ms | 3.159ms | |
|
Devices v0.2.0 |
|||||||||
| 100% | 84.34% | 83.55% | 70.93% | 82.5% | 83.93% | 83.52% | 81.31% | 85.54% | |
| Duration | 29.386ms | 14.381ms | 138.539ms | 82.273ms | 23.457ms | 5.181ms | 2.359ms | 41.725ms | |
|
Doxygen Awesome v2.4.2 |
|||||||||
| 100% | 78.22% | 78.67% | 74.73% | 77.93% | 77.81% | 79.41% | 83.92% | ERROR | |
| Duration | 65.052ms | 12.566ms | 179.51ms | 76.461ms | 27.565ms | 5.126ms | 3.354ms | 28.355ms | |
|
Effeckt v0.5.0 |
|||||||||
| 100% | 77.93% | 79.6% | 57.46% | 49.61% | 75.04% | 78.96% | 50.4% | 80.29% | |
| Duration | 68.676ms | 26.954ms | 297.08ms | 116.962ms | 48.227ms | 9.998ms | 3.852ms | 100.549ms | |
|
ElegantFin v25.12.31 |
|||||||||
| 100% | 73.84% | 73.03% | 69.41% | 72.18% | 73.72% | 73.73% | 71.98% | 74.57% | |
| Duration | 26.395ms | 15.616ms | 256.365ms | 87.006ms | 28.866ms | 6.855ms | 3.667ms | 72.83ms | |
|
Enferno v13.1.1 |
|||||||||
| 100% | 65.98% | 62.9% | 56.87% | 62.9% | 66.88% | 63.35% | 62.2% | 67.97% | |
| Duration | 0.612ms | 0.334ms | 3.505ms | 2.003ms | 0.637ms | 1.294ms | 0.168ms | 1.716ms | |
|
Evil v0.0.0 |
|||||||||
| 100% | 37.18% | ERROR | 31.81% | ERROR | 32.92% | 46.22% | 17.93% | ERROR | |
| Duration | 2.891ms | 0.387ms | 3.62ms | 1.105ms | 2.2ms | 1.191ms | 0.183ms | 0.783ms | |
|
Facebook Buttons v1.0.0 |
|||||||||
| 100% | 56.66% | 60.82% | 46.68% | 44.6% | 60.51% | 61.15% | 37.59% | 61.93% | |
| Duration | 4.827ms | 1.409ms | 7.62ms | 9.412ms | 2.294ms | 0.841ms | 0.301ms | 3.973ms | |
|
FF-Ultima v4.3.0 |
|||||||||
| 100% | 47.08% | 67.88% | 65.19% | 65.96% | 32.18% | 67.24% | 65.96% | ERROR | |
| Duration | 30.942ms | 4.519ms | 99.616ms | 46.728ms | 18.24ms | 3.899ms | 1.952ms | 3.601ms | |
|
Fileicon v0.1.1 |
|||||||||
| 100% | 80.43% | 76.13% | 73.56% | 78.16% | 80.36% | 80.07% | 74.83% | 79.82% | |
| Duration | 1.326ms | 0.558ms | 4.135ms | 7.315ms | 1.231ms | 0.691ms | 0.208ms | 2.11ms | |
|
Finimalism v12.0.0 |
|||||||||
| 100% | 75.99% | ERROR | 73.58% | ERROR | 75.19% | 77.21% | 75.83% | ERROR | |
| Duration | 76.537ms | 6.911ms | 580.027ms | 2.202ms | 61.703ms | 11.772ms | 6.379ms | 2.109ms | |
|
Firefox-ONE v3.7.0 |
|||||||||
| 100% | 69.55% | 73.96% | 71.47% | 72.1% | 70.37% | 75.11% | 71.65% | 76.21% | |
| Duration | 2.735ms | 1.437ms | 12.426ms | 8.01ms | 3.234ms | 1.484ms | 0.495ms | 5.502ms | |
|
Firefox-UWP-Style v0.0.0 |
|||||||||
| 100% | 58.63% | 78.48% | 75.13% | 76.14% | 40.09% | 77.44% | 75.32% | ERROR | |
| Duration | 16.647ms | 3.454ms | 80.427ms | 53.76ms | 15.859ms | 4.154ms | 1.877ms | 1.467ms | |
|
Flakes v1.0.1 |
|||||||||
| 100% | 74.53% | 75.08% | 53.64% | ERROR | 73.39% | 75.29% | 70.91% | 76.67% | |
| Duration | 105.977ms | 38.672ms | 849.021ms | 19.938ms | 93.903ms | 47.625ms | 9.43ms | 209.471ms | |
|
Flex Layout Attribute v1.0.3 |
|||||||||
| 100% | 64.09% | 66.98% | 53.16% | 50.66% | 63.8% | 63.84% | 49.19% | 64.04% | |
| Duration | 2.984ms | 1.75ms | 14.978ms | 16.761ms | 4.505ms | 1.751ms | 0.438ms | 7.088ms | |
|
FluentBird v1.1.2 |
|||||||||
| 100% | 71.68% | 74.21% | 61.93% | ERROR | 65.17% | 73.17% | 70.83% | ERROR | |
| Duration | 7.423ms | 2.177ms | 51.96ms | 1.318ms | 8.198ms | 2.49ms | 0.971ms | 4.05ms | |
|
Font Awesome v7.2.0 |
|||||||||
| 100% | 68.1% | 66.07% | 67.96% | 67.6% | 67.36% | 69.77% | 61.06% | 77.64% | |
| Duration | 46.534ms | 15.268ms | 2,542.331ms | 104.253ms | 46.042ms | 11.15ms | 5.612ms | 113.558ms | |
|
Foundation v6.9.0 |
|||||||||
| 100% | 76.48% | 81.16% | 71.65% | 66.17% | 75.83% | 77.85% | 68% | 82.03% | |
| Duration | 71.245ms | 15.916ms | 596.21ms | 236.28ms | 64.609ms | 12.449ms | 5.968ms | 142.36ms | |
|
Freebies v0.0.0 |
|||||||||
| 100% | 47.44% | 47.68% | 47.04% | 47.27% | 47.38% | 47.65% | 47.28% | 48.09% | |
| Duration | 4.744ms | 2.135ms | 21.936ms | 21.431ms | 4.526ms | 1.96ms | 0.711ms | 10.333ms | |
|
Furatto v3.1.1 |
|||||||||
| 100% | 56.35% | 58.93% | 52.84% | 49.39% | 57.32% | 58.1% | 52.39% | 59.45% | |
| Duration | 29.785ms | 16.899ms | 147.825ms | 106.588ms | 36.219ms | 5.892ms | 2.794ms | 55.915ms | |
|
Gallery v1.0.2 |
|||||||||
| 100% | 65.34% | 77.53% | 47.43% | 36.78% | 64.24% | 65.63% | 41.43% | 78.43% | |
| Duration | 5.556ms | 1.449ms | 7.705ms | 11.54ms | 4.466ms | 1.675ms | 0.504ms | 13.911ms | |
|
GitHub-Markdown v5.9.0 |
|||||||||
| 100% | 86.11% | 86.01% | 74.87% | 79.09% | 84.37% | 87.08% | 84.5% | 87.32% | |
| Duration | 8.279ms | 5.693ms | 42.027ms | 40.966ms | 10.112ms | 2.33ms | 1.19ms | 18.179ms | |
|
gitweb-theme v0.0.0 |
|||||||||
| 100% | 71.4% | 74.65% | 68.29% | 70.47% | 71.61% | 74.08% | 72.31% | 75.48% | |
| Duration | 6.098ms | 3.089ms | 27.197ms | 25.43ms | 9.891ms | 1.703ms | 0.758ms | 11.166ms | |
|
google-type v0.0.0 |
|||||||||
| 100% | 79.13% | 80.18% | 64.24% | ERROR | 78.52% | 79.83% | 77.81% | ERROR | |
| Duration | 18.371ms | 13.308ms | 64.431ms | 4.433ms | 27.239ms | 4.81ms | 2.152ms | 19.87ms | |
|
Gridism v0.2.2 |
|||||||||
| 100% | 50.14% | 49.46% | 48.08% | 48.25% | 50.37% | 50.56% | 48.36% | 50.88% | |
| Duration | 1.055ms | 0.647ms | 3.204ms | 4.073ms | 1.273ms | 0.788ms | 0.186ms | 2.603ms | |
|
Gridlex v2.7.1 |
|||||||||
| 100% | 79.5% | 83.87% | 75.81% | 57.39% | 76.95% | 76.92% | 76.46% | 76.95% | |
| Duration | 14.69ms | 5.769ms | 34.7ms | 117.052ms | 13.484ms | 3.032ms | 1.431ms | 26.935ms | |
|
Gumby v2.6.4 |
|||||||||
| 100% | 89.18% | 89.53% | 77.77% | 80.58% | 89.16% | 91.04% | 82.08% | 90.78% | |
| Duration | 63.696ms | 35.065ms | 983.59ms | 239.309ms | 88.388ms | 13.997ms | 5.858ms | 116.631ms | |
|
Gutenberg v0.7.0 |
|||||||||
| 100% | 46.5% | 48.27% | 46.18% | 47.9% | 46.5% | 49.55% | 49.55% | 50.4% | |
| Duration | 4.829ms | 1.478ms | 10.114ms | 12.56ms | 3.582ms | 1.05ms | 0.461ms | 6.499ms | |
|
HalfStyle v2.0.2 |
|||||||||
| 100% | 45.51% | 43.57% | 41.03% | ERROR | 38.87% | ERROR | 44.89% | ERROR | |
| Duration | 1.774ms | 1.493ms | 5.819ms | 1.098ms | 1.507ms | 0.918ms | 0.224ms | 3.02ms | |
|
Hint v3.0.0 |
|||||||||
| 100% | 66.35% | 67.01% | 60.3% | 67.74% | 67.67% | 68.34% | 65.92% | 69.6% | |
| Duration | 4.138ms | 3.044ms | 14.756ms | 9.53ms | 4.379ms | 1.491ms | 0.529ms | 8.915ms | |
|
Holmes v6.8.12 |
|||||||||
| 100% | 58.15% | 59.1% | 54.74% | 56.14% | 59.15% | 58.07% | 57.25% | 59.46% | |
| Duration | 4.577ms | 2.417ms | 3.884ms | 16.339ms | 3.599ms | 1.769ms | 0.373ms | 12.083ms | |
|
Hover Buttons v0.15.0 |
|||||||||
| 100% | 75.58% | 79.69% | 65.57% | 76.25% | 55.69% | 77.99% | 74.39% | 80.85% | |
| Duration | 25.749ms | 13.36ms | 121.724ms | 87.892ms | 14.176ms | 4.564ms | 1.866ms | 35.629ms | |
|
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.13ms | 0.434ms | 2.578ms | 2.736ms | 0.865ms | 0.699ms | 0.161ms | 3.541ms | |
|
Hugo Universal Theme v1.4.1 |
|||||||||
| 100% | 78.52% | 82% | 70.68% | 73.19% | 76.15% | 81.22% | 74.8% | 83.86% | |
| Duration | 31.187ms | 17.166ms | 172.986ms | 94.042ms | 39.314ms | 6.462ms | 3.204ms | 59.355ms | |
|
Icon Hover Effects v0.0.0 |
|||||||||
| 100% | 79.4% | 79.29% | 53.88% | 44.74% | 75.61% | 77.98% | 59.37% | 79.27% | |
| Duration | 6.318ms | 2.474ms | 19.808ms | 14.909ms | 5.538ms | 2.123ms | 0.72ms | 11.718ms | |
|
Instagram.css v0.1.4 |
|||||||||
| 100% | 88.55% | 84.94% | 46.77% | 49.95% | 88.45% | 86.35% | 56.2% | 91.91% | |
| Duration | 4.078ms | 2.821ms | 21.412ms | 9.991ms | 21.028ms | 2.048ms | 0.629ms | 14.679ms | |
|
Justified v0.0.0 |
|||||||||
| 100% | 53.57% | 53.57% | 53.21% | 53.21% | 53.21% | 53.57% | 53.57% | 53.57% | |
| Duration | 0.099ms | 0.052ms | 0.376ms | 0.784ms | 0.187ms | 0.936ms | 0.05ms | 0.446ms | |
|
Kickoff v8.0.0 |
|||||||||
| 100% | 18.48% | 18.33% | 17% | 77.34% | 17.82% | 18.43% | 14.66% | 18.66% | |
| Duration | 29.737ms | 7.794ms | 160.707ms | 55.972ms | 15.801ms | 7.647ms | 2.295ms | 47.088ms | |
|
KNACSS v8.2.0 |
|||||||||
| 100% | ERROR | 72.87% | 72.3% | 73.4% | ERROR | 74.04% | 72.84% | 81.5% | |
| Duration | 2.535ms | 4.705ms | 34.345ms | 27.805ms | 6.672ms | 2.225ms | 1.274ms | 25.614ms | |
|
Less Framework v0.0.0 |
|||||||||
| 100% | 38.27% | 41.49% | 36.63% | 37.73% | 38.51% | 39.1% | 37.67% | 39.15% | |
| Duration | 4.242ms | 0.529ms | 2.513ms | 3.417ms | 3.613ms | 0.788ms | 0.186ms | 3.311ms | |
|
Linktree v0.0.0 |
|||||||||
| 100% | 86.45% | 86.54% | 81.68% | 47.26% | 47.1% | 86.66% | 86.46% | 86.8% | |
| Duration | 32.539ms | 10.34ms | 43.134ms | 28.695ms | 14.657ms | 3.929ms | 1.483ms | 28.987ms | |
|
littlebox v0.0.4 |
|||||||||
| 100% | 74.4% | 77.09% | 67.18% | 62.46% | 63.61% | 76.46% | 67.67% | 76.27% | |
| Duration | 55.279ms | 11.547ms | 237.143ms | 199.078ms | 42.19ms | 8.233ms | 3.642ms | 94.173ms | |
|
Load Awesome v1.1.0 |
|||||||||
| 100% | 92.73% | 98.46% | 58.9% | 41.4% | 93.22% | 98.05% | 41.74% | 100.05% | |
| Duration | 125.085ms | 16.467ms | 323.793ms | 164.638ms | 68.767ms | 15.281ms | 5.956ms | 171.094ms | |
|
Loaders v0.1.2 |
|||||||||
| 100% | 69.31% | 75.04% | 39.06% | 36.74% | 67.24% | 73.46% | 35.81% | 76.47% | |
| Duration | 17.926ms | 8.418ms | 43.886ms | 36.956ms | 16.181ms | 3.967ms | 1.637ms | 82.182ms | |
|
Luxbar v0.3.0 |
|||||||||
| 100% | 83.4% | 82.37% | 79.81% | 81.05% | 80.09% | 82.63% | 82.18% | 84% | |
| Duration | 2.709ms | 1.477ms | 8.315ms | 9.898ms | 2.781ms | 1.437ms | 0.384ms | 7.62ms | |
|
Lynx v1.4.0 |
|||||||||
| 100% | 72.05% | 72.11% | 65.57% | 68.12% | 71.9% | 72.6% | 67.63% | 72.79% | |
| Duration | 9.497ms | 4.834ms | 76.601ms | 48.191ms | 10.684ms | 2.871ms | 1.461ms | 29.814ms | |
|
markdown-css v0.0.0 |
|||||||||
| 100% | 80.95% | 83.37% | 73.35% | 75.48% | 80.69% | 82.86% | 83.93% | 83.4% | |
| Duration | 1.452ms | 0.882ms | 4.469ms | 7.806ms | 2.153ms | 0.805ms | 0.249ms | 2.879ms | |
|
Material for Bootstrap v4.1.1 |
|||||||||
| 100% | 81.01% | 82.81% | 73.53% | 70.57% | 81.08% | 81.35% | 73.82% | 83.34% | |
| Duration | 128.001ms | 27.033ms | 1,412.006ms | 315.751ms | 129.274ms | 24.222ms | 11.203ms | 262.732ms | |
|
medium.css v1.0.2 |
|||||||||
| 100% | 71.63% | 71.94% | 65.82% | 65.23% | 70.08% | 71.81% | 65.73% | 72.89% | |
| Duration | 2.06ms | 2.005ms | 7.022ms | 6.802ms | 2.131ms | 0.977ms | 0.326ms | 4.121ms | |
|
Meyer v2.0.0 |
|||||||||
| 100% | 66.35% | 66.35% | 64.12% | 66.27% | 64.12% | 66.35% | 66.35% | 66.35% | |
| Duration | 0.63ms | 0.266ms | 1.109ms | 2.186ms | 1.241ms | 0.619ms | 0.113ms | 1.105ms | |
|
Microsoft Metro Buttons v1.2.0 |
|||||||||
| 100% | 72.74% | 84.17% | 48.5% | 51.7% | 83.78% | 85.04% | 79.54% | 86.92% | |
| Duration | 8.984ms | 1.868ms | 30.901ms | 21.91ms | 7.947ms | 2.544ms | 0.91ms | 12.16ms | |
|
Microtip v0.2.2 |
|||||||||
| 100% | 67.62% | 72.96% | 65.8% | 64.58% | 69.81% | 70.38% | 68.21% | 71.82% | |
| Duration | 2.399ms | 0.976ms | 8.247ms | 11.195ms | 3.054ms | 1.428ms | 0.318ms | 7.921ms | |
|
Mini v3.0.1 |
|||||||||
| 100% | 83.28% | 84.09% | 80.71% | 86.4% | 82.25% | 84.21% | 82.65% | 84.07% | |
| Duration | 21.833ms | 8.281ms | 101.368ms | 65.062ms | 18.107ms | 4.464ms | 2.401ms | 37.148ms | |
|
Mini Reset v0.0.7 |
|||||||||
| 100% | 70.29% | 60% | 68.97% | 70% | 70.44% | 70.29% | 70.15% | 71.03% | |
| Duration | 0.424ms | 0.176ms | 0.868ms | 1.792ms | 0.668ms | 0.584ms | 0.098ms | 1.526ms | |
|
Missing v1.3.0 |
|||||||||
| 100% | ERROR | 79.72% | 72.98% | 79.85% | 58.69% | 80.66% | 79.99% | 90.98% | |
| Duration | 4.373ms | 14.927ms | 233.503ms | 87.358ms | 31.469ms | 6.253ms | 3.686ms | 115.912ms | |
|
Mobi v3.1.1 |
|||||||||
| 100% | 77.02% | 76.78% | 68.95% | 64.43% | 81.78% | 78.06% | 64.87% | 77.77% | |
| Duration | 11.594ms | 2.665ms | 26.445ms | 21.495ms | 6.645ms | 1.466ms | 0.71ms | 10.005ms | |
|
Mocka v1.0.1 |
|||||||||
| 100% | 70.43% | 77.3% | 54.32% | 56.76% | 69.87% | 77.34% | 71.69% | 77.55% | |
| Duration | 1.965ms | 0.532ms | 3.532ms | 4.51ms | 1.182ms | 1.203ms | 0.197ms | 3.702ms | |
|
Modern CSS Resets v1.4.0 |
|||||||||
| 100% | 46.29% | 47.28% | 46.67% | 46.44% | 46.75% | 46.67% | 46.44% | 47.36% | |
| Duration | 0.564ms | 0.239ms | 1.051ms | 2.85ms | 0.575ms | 0.614ms | 0.111ms | 1.133ms | |
|
MVCSS v4.1.0 |
|||||||||
| 100% | 50.33% | 57.69% | 55.56% | 57.62% | 48.86% | 57.81% | 57.35% | 58.02% | |
| Duration | 10.119ms | 3.133ms | 60.989ms | 22.047ms | 7.994ms | 2.79ms | 0.949ms | 18.702ms | |
|
MVP v1.17.3 |
|||||||||
| 100% | 77.49% | 78.75% | 76.66% | 77.59% | 75.57% | 79.12% | 78.41% | 79.48% | |
| Duration | 3.964ms | 2.218ms | 14.679ms | 15.714ms | 4.392ms | 1.176ms | 0.63ms | 8.407ms | |
|
My Internet v1.0.0 |
|||||||||
| 100% | 44.14% | 68.32% | 61.88% | 67.11% | 56.18% | 68.17% | 67.62% | 101.62% | |
| Duration | 5.01ms | 2.416ms | 20.568ms | 14.685ms | 5.672ms | 1.905ms | 0.721ms | 13.665ms | |
|
Natural Selection v0.0.0 |
|||||||||
| 100% | 0% | 33.19% | 0% | 0% | 0% | 0% | 0% | 0% | |
| Duration | 1.268ms | 0.724ms | 1.185ms | 6.435ms | 0.501ms | 1.181ms | 0.194ms | 4.891ms | |
|
NES.css v2.3.0 |
|||||||||
| 100% | 91.98% | 90.01% | 90.64% | 91.32% | 90.66% | 91.85% | 90% | 92.08% | |
| Duration | 204.057ms | 41.201ms | 337.186ms | 300.902ms | 108.805ms | 23.684ms | 10.607ms | 237.313ms | |
|
Normalize v8.0.1 |
|||||||||
| 100% | 28.05% | 28.39% | 27.45% | 28.85% | 27.24% | 29.22% | 31.19% | 29.29% | |
| Duration | 1.307ms | 0.538ms | 3.329ms | 4.918ms | 1.442ms | 0.752ms | 0.206ms | 4.869ms | |
|
object-fit Polyfill v0.3.4 |
|||||||||
| 100% | 81.9% | 73.13% | 77.18% | 76.99% | 81.94% | 80.06% | 80.1% | 84.58% | |
| Duration | 0.622ms | 0.247ms | 2.497ms | 2.31ms | 0.569ms | 0.54ms | 0.127ms | 2.613ms | |
|
Obnoxious v3.5.2 |
|||||||||
| 100% | 70.43% | 70.16% | 68.96% | 69.72% | 70.44% | 69.72% | 68.72% | 72.08% | |
| Duration | 6.26ms | 3.568ms | 10.205ms | 18.509ms | 23.459ms | 2.104ms | 0.656ms | 20.615ms | |
|
Obsidian Colored Sidebar v2.0.0 |
|||||||||
| 100% | 77.34% | 68.48% | 68.14% | 75.23% | 77.34% | 71.77% | 70.34% | 71.9% | |
| Duration | 2.147ms | 1.518ms | 12.441ms | 14.051ms | 2.476ms | 1.782ms | 0.588ms | 9.41ms | |
|
Obsidian Modular CSS Layout v0.10.0 |
|||||||||
| 100% | 47.52% | 49.16% | 44.93% | 48.57% | 46.14% | 48.66% | 48.44% | 50.25% | |
| Duration | 8.277ms | 4.401ms | 40.827ms | 41.394ms | 8.694ms | 2.505ms | 1.135ms | 25.776ms | |
|
Obsidian Notebook Themes v2.2.3 |
|||||||||
| 100% | 72.14% | 69.4% | 69.57% | 70.7% | 68.98% | 72.08% | 70.94% | 72.21% | |
| Duration | 1.474ms | 0.827ms | 7.464ms | 5.406ms | 1.531ms | 1.238ms | 0.37ms | 4.394ms | |
|
OffCanvasMenuEffects v0.0.0 |
|||||||||
| 100% | 76.21% | 75.92% | 43.21% | 22.96% | 68.1% | 63.69% | 27.93% | 90.33% | |
| Duration | 3.245ms | 2.224ms | 6.714ms | 7.741ms | 6.915ms | 1.81ms | 0.518ms | 10.893ms | |
|
Orbit v1.4.11 |
|||||||||
| 100% | 84.72% | 84.8% | 84.74% | 79.91% | 83.5% | 81.62% | 84.43% | 86.83% | |
| Duration | 37.108ms | 24.993ms | 2,447.546ms | 194.951ms | 63.195ms | 11.961ms | 6.872ms | 121.014ms | |
|
OrgCSS v9.2.3 |
|||||||||
| 100% | 49.05% | 52.69% | 49.22% | 49.3% | 48.88% | 49.05% | 49.05% | 50.89% | |
| Duration | 10.973ms | 5.328ms | 296.683ms | 24.923ms | 9.21ms | 4.175ms | 1.073ms | 29.347ms | |
|
Paper v0.4.1 |
|||||||||
| 100% | 67.93% | 66.98% | 67.42% | 67.49% | 67.8% | 67.61% | 67.61% | 67.93% | |
| Duration | 0.76ms | 0.394ms | 4.957ms | 5.094ms | 0.915ms | 0.66ms | 0.133ms | 5.284ms | |
|
Pesticide v1.3.0 |
|||||||||
| 100% | 22.87% | 65.03% | 44.84% | 23.12% | 22.84% | 42.65% | 23.12% | 80.74% | |
| Duration | 15.452ms | 4.465ms | 32.25ms | 9.845ms | 10.417ms | 2.145ms | 0.66ms | 20.042ms | |
|
Phonon v1.5.1 |
|||||||||
| 100% | 78.9% | 79.13% | 74.71% | 77.53% | 76.42% | 79.29% | 77.59% | 80.59% | |
| Duration | 60.655ms | 24.335ms | 577.399ms | 175.244ms | 67.066ms | 13.112ms | 5.524ms | 122.695ms | |
|
Photon v0.1.2 |
|||||||||
| 100% | 72.68% | 69.08% | 59.35% | 65.84% | 68.89% | 72.89% | 62.33% | 70.46% | |
| Duration | 11.955ms | 5.616ms | 226.245ms | 43.705ms | 12.283ms | 3.061ms | 1.435ms | 30.21ms | |
|
Picnic v7.1.0 |
|||||||||
| 100% | 65.46% | 66.37% | 62.65% | 64.6% | 67.13% | 66.64% | 64.28% | 67.15% | |
| Duration | 26.797ms | 9.566ms | 102.575ms | 72.262ms | 22.497ms | 4.85ms | 2.419ms | 51.06ms | |
|
Pico v2.1.1 |
|||||||||
| 100% | 89.12% | 88.67% | 83.99% | 87.56% | 90.43% | 89.82% | 89.45% | 90.1% | |
| Duration | 24.559ms | 11.099ms | 308.791ms | 149.175ms | 34.767ms | 6.427ms | 4.059ms | 54.83ms | |
|
Pills v1.0.1 |
|||||||||
| 100% | 76.58% | 78.1% | 76.73% | 76.65% | 78.09% | 78.09% | 75.48% | 79.07% | |
| Duration | 2.353ms | 0.948ms | 7.236ms | 10.919ms | 2.333ms | 1.028ms | 0.319ms | 5.298ms | |
|
Portfolio Template v0.0.0 |
|||||||||
| 100% | 62.98% | 65.14% | 61.96% | 64.31% | 63.98% | 65.27% | 65.35% | 66.13% | |
| Duration | 4.927ms | 1.685ms | 18.389ms | 8.696ms | 3.348ms | 1.687ms | 0.566ms | 8.309ms | |
|
Preboot v2.0.0 |
|||||||||
| 100% | 45.65% | 45.53% | 42.21% | 43.64% | 45.71% | 46.52% | 43.51% | 47.57% | |
| Duration | 5.633ms | 3.827ms | 30.275ms | 16.007ms | 5.67ms | 1.96ms | 0.67ms | 9.997ms | |
|
Pretty Checkbox v3.0.3 |
|||||||||
| 100% | 80.44% | 82.49% | 67.37% | 65.02% | 76.49% | 83.25% | 64.72% | 84.64% | |
| Duration | 6.787ms | 6.847ms | 28.322ms | 26.466ms | 6.954ms | 2.386ms | 0.911ms | 15.026ms | |
|
Progress Tracker v3.0.0 |
|||||||||
| 100% | 78.7% | 78.32% | 70.71% | 77.14% | 78.38% | 78.98% | 76.4% | 79.42% | |
| Duration | 2.193ms | 1.454ms | 9.634ms | 7.743ms | 2.425ms | 1.368ms | 0.448ms | 5.869ms | |
|
ProtonMail Themes v4.0.8 |
|||||||||
| 100% | 92.64% | 83.74% | 84.67% | 92.05% | 92.88% | 89.45% | 85.91% | 89.53% | |
| Duration | 1.557ms | 0.554ms | 5.457ms | 7.976ms | 1.143ms | 1.153ms | 0.26ms | 2.084ms | |
|
ProxMorph v2.7.3 |
|||||||||
| 100% | 54.45% | 55.29% | 52.09% | 52.71% | 53.19% | 54.96% | 53.6% | 56.89% | |
| Duration | 33.08ms | 10.831ms | 235.444ms | 84.164ms | 23.316ms | 5.879ms | 2.73ms | 57.215ms | |
|
Pure v3.0.0 |
|||||||||
| 100% | 58.7% | 58.92% | 58.09% | 58.38% | 59.93% | 59.69% | 59.04% | 59.89% | |
| Duration | 8.279ms | 3.35ms | 32.181ms | 31.808ms | 7.085ms | 2.132ms | 0.878ms | 13.46ms | |
|
Pygments Fruity v1.0.0 |
|||||||||
| 100% | 40.37% | 53.13% | 24.22% | 40.37% | 39.81% | 40.37% | 40.37% | 54.62% | |
| Duration | 1.913ms | 0.844ms | 8.717ms | 4.367ms | 1.432ms | 1.351ms | 0.211ms | 4.24ms | |
|
Ratchet v2.0.2 |
|||||||||
| 100% | 80.36% | 77.89% | 72.27% | 71.67% | 80% | 80.22% | 73.45% | 80.34% | |
| Duration | 10.164ms | 4.96ms | 53.901ms | 34.517ms | 9.295ms | 2.766ms | 1.123ms | 19.413ms | |
|
Remedy Quotes v0.1.0 |
|||||||||
| 100% | 35.59% | 47.34% | 33.88% | 35.59% | 33.96% | 60.47% | 34.32% | 49.6% | |
| Duration | 83.477ms | 4.734ms | 83.092ms | 21.226ms | 6.347ms | 2.021ms | 1.27ms | 15.032ms | |
|
Remedy v0.1.0 |
|||||||||
| 100% | 17.95% | 18.75% | 18.61% | 18.61% | 18.27% | 18.61% | 18.61% | 18.66% | |
| Duration | 1.021ms | 0.463ms | 1.833ms | 2.576ms | 0.866ms | 1.133ms | 0.135ms | 1.603ms | |
|
Repaintless v1.4.0 |
|||||||||
| 100% | 73.63% | 73.38% | 36.27% | 27.15% | 68.76% | 72.79% | 26.99% | 73.87% | |
| Duration | 3.785ms | 3.941ms | 7.578ms | 7.353ms | 4.134ms | 1.464ms | 0.398ms | 8.314ms | |
|
Reset v1.0.2 |
|||||||||
| 100% | 50.93% | 51.01% | 50.69% | 50.85% | 50.97% | 50.93% | 52.26% | 51.05% | |
| Duration | 0.651ms | 0.399ms | 3.116ms | 3.56ms | 0.709ms | 0.75ms | 0.162ms | 3.103ms | |
|
Responsive 4 v4.1.4 |
|||||||||
| 100% | 72.44% | 74.2% | 70.53% | 71.19% | 72.32% | 73.14% | 71.16% | 74.03% | |
| Duration | 31.976ms | 9.683ms | 140.304ms | 113.403ms | 33.617ms | 5.868ms | 3.116ms | 62.75ms | |
|
Responsive 5 v5.0.0 |
|||||||||
| 100% | 71.11% | 74.57% | 69.99% | 70.74% | 70.87% | 71.99% | 70.62% | 74.17% | |
| Duration | 25.003ms | 9.079ms | 115.041ms | 86.891ms | 29.854ms | 5.287ms | 2.773ms | 51.912ms | |
|
Ress v5.0.2 |
|||||||||
| 100% | 32.7% | 34.24% | 32.35% | 33.2% | 33% | 33.58% | 35.37% | 33.96% | |
| Duration | 1.813ms | 0.686ms | 5.276ms | 5.557ms | 1.59ms | 1.318ms | 0.27ms | 4.117ms | |
|
Sakura v1.5.1 |
|||||||||
| 100% | 71.91% | 74.81% | 70.23% | 72.73% | 67.66% | 73.78% | 79.88% | 75.56% | |
| Duration | 2.06ms | 0.871ms | 5.018ms | 10.518ms | 2.11ms | 0.802ms | 0.264ms | 3.17ms | |
|
Sanitize v13.0.0 |
|||||||||
| 100% | 29.81% | 29.71% | 27.42% | 28.43% | 29.37% | 29.71% | 27.97% | 29.79% | |
| Duration | 1.336ms | 0.688ms | 5.447ms | 5.488ms | 1.265ms | 0.75ms | 0.273ms | 3.085ms | |
|
SAPC-APCA v0.0.0 |
|||||||||
| 100% | 61.85% | 63.18% | 60.35% | 60.92% | 61.41% | 62.64% | 60.69% | 64.89% | |
| Duration | 54.667ms | 21.721ms | 3,139.241ms | 166.812ms | 83.681ms | 12.2ms | 5.938ms | 115.979ms | |
|
Select v3.2.0 |
|||||||||
| 100% | 64.74% | 64.65% | 56.26% | 62.46% | 64.62% | 63.82% | 61.84% | 65.33% | |
| Duration | 0.891ms | 0.48ms | 2.867ms | 3.474ms | 0.99ms | 0.676ms | 0.159ms | 1.949ms | |
|
Select2 Bootstrap v1.2.5 |
|||||||||
| 100% | 74.22% | 73.6% | 67.95% | 64.34% | 75.55% | 74.71% | 63.85% | 75.75% | |
| Duration | 1.143ms | 0.732ms | 3.657ms | 3.966ms | 1.085ms | 1.326ms | 0.167ms | 2.074ms | |
|
Shards v3.0.0 |
|||||||||
| 100% | 83.71% | 82.78% | 77.92% | 79.45% | 83.22% | 82.96% | 80.51% | 85.77% | |
| Duration | 41.13ms | 21.733ms | 425.64ms | 145.401ms | 36.19ms | 8.493ms | 4.013ms | 88.596ms | |
|
Shina Fox v0.1.0 |
|||||||||
| 100% | 71.51% | 74.36% | 67.49% | 69.65% | 71.54% | 72.85% | 70.14% | 75.79% | |
| Duration | 11.035ms | 3.976ms | 37.597ms | 33.999ms | 9.114ms | 2.291ms | 1.172ms | 20.262ms | |
|
Sierra v3.5.0 |
|||||||||
| 100% | 63.47% | 64.62% | 51.88% | 44.67% | 62.3% | 64.5% | 44.37% | 65.28% | |
| Duration | 16.455ms | 7.388ms | 85.203ms | 43.126ms | 15.235ms | 3.841ms | 1.627ms | 34.842ms | |
|
Simple Grid v0.0.0 |
|||||||||
| 100% | 64.64% | 64.61% | 63.83% | 64.61% | 64.06% | 64.45% | 64.14% | 64.68% | |
| Duration | 0.991ms | 0.491ms | 4.093ms | 3.266ms | 1.251ms | 1.034ms | 0.18ms | 2.516ms | |
|
Simple Line Icons v2.5.4 |
|||||||||
| 100% | 83.81% | 78.06% | 77.84% | 83.71% | 77.92% | 83.71% | 77.89% | 78.1% | |
| Duration | 3.589ms | 1.621ms | 53.202ms | 12.738ms | 6.131ms | 2.064ms | 0.531ms | 9.423ms | |
|
Simple v2.3.7 |
|||||||||
| 100% | 68.17% | 69.59% | 68.14% | 68.44% | 67.64% | 69.57% | 68.45% | 69.86% | |
| Duration | 5.047ms | 3.254ms | 18.95ms | 17.202ms | 5.34ms | 1.698ms | 0.766ms | 11.382ms | |
|
SimpTip v1.0.4 |
|||||||||
| 100% | 83.72% | 84.82% | 79.81% | 68.89% | 84.39% | 85.03% | 69.74% | 85.53% | |
| Duration | 4.292ms | 2.396ms | 20.26ms | 12.565ms | 3.357ms | 1.73ms | 0.462ms | 7.011ms | |
|
Skeleton v2.0.4 |
|||||||||
| 100% | 50.65% | 52.08% | 48.94% | 50.41% | 50.41% | 50.99% | 49.67% | 51.14% | |
| Duration | 4.149ms | 1.401ms | 9.477ms | 13.945ms | 3.587ms | 0.973ms | 0.423ms | 5.786ms | |
|
SlitSlider v1.1.0 |
|||||||||
| 100% | 72.32% | 72.5% | 63.71% | 50.22% | 72.32% | 72.63% | 53.08% | 73.66% | |
| Duration | 0.778ms | 0.558ms | 2.817ms | 2.294ms | 0.908ms | 1.097ms | 0.153ms | 1.672ms | |
|
Social Sign-in Buttons v0.0.0 |
|||||||||
| 100% | 71.58% | 72.16% | 39.85% | 40.74% | 71.84% | 71.83% | 45.58% | 73.85% | |
| Duration | 3.429ms | 1.561ms | 13.757ms | 9.877ms | 2.548ms | 0.973ms | 0.411ms | 6.576ms | |
|
SPCSS v0.9.0 |
|||||||||
| 100% | 73.74% | 73.96% | 71.25% | 66.16% | 74.12% | 74.07% | 72.66% | 74.23% | |
| Duration | 1.162ms | 0.542ms | 2.524ms | 3.827ms | 1.155ms | 1.143ms | 0.182ms | 2.072ms | |
|
Spectre v0.5.9 |
|||||||||
| 100% | 74.22% | 73.73% | 69.31% | 70.07% | 73.33% | 74.1% | 70.89% | 75.11% | |
| Duration | 23.988ms | 11.482ms | 195.232ms | 76.557ms | 24.002ms | 5.38ms | 2.624ms | 46.672ms | |
|
Spicetify Bloom v0.0.0 |
|||||||||
| 100% | 79.9% | 81.55% | 76.23% | 78.25% | 78.9% | 81.2% | 75.24% | 82.81% | |
| Duration | 20.148ms | 10.726ms | 208.283ms | 72.064ms | 18.496ms | 4.516ms | 2.528ms | 53.579ms | |
|
Spicetify Dribbblish v0.0.0 |
|||||||||
| 100% | 80.07% | 80.76% | 75.79% | 76.1% | 78.84% | 80.78% | 78.84% | 82.01% | |
| Duration | 5.843ms | 3.284ms | 60.456ms | 26.877ms | 6.067ms | 1.895ms | 0.885ms | 14.06ms | |
|
Spicetify Text v0.0.0 |
|||||||||
| 100% | 78.99% | 79.16% | 76.24% | 77.88% | 79.04% | 80.36% | 78.5% | 79.84% | |
| Duration | 7.487ms | 3.78ms | 78.55ms | 24.319ms | 8ms | 2.445ms | 1.205ms | 19.448ms | |
|
Spinkit v2.0.1 |
|||||||||
| 100% | 63.94% | 63.92% | 53.14% | 63.72% | 62.1% | 63.74% | 63.53% | 64.53% | |
| Duration | 4.035ms | 1.998ms | 14.134ms | 10.853ms | 5.527ms | 1.76ms | 0.585ms | 9.054ms | |
|
StackOverflow-Dark v5.1.2 |
|||||||||
| 100% | 72.38% | 77.08% | 75.92% | 71.53% | ERROR | 80.3% | 0% | ERROR | |
| Duration | 59.186ms | 26.146ms | 174.844ms | 228.811ms | 20.871ms | 13.291ms | 1.44ms | 3.222ms | |
|
Swagger UI Themes 2 v2.1.0 |
|||||||||
| 100% | 74.04% | 89.25% | 58.13% | 81.74% | 73.32% | 89.31% | 78.2% | 90.71% | |
| Duration | 17.987ms | 12.95ms | 81.723ms | 71.784ms | 19.175ms | 4.886ms | 1.922ms | 34.74ms | |
|
Swagger UI Themes 3 v3.0.1 |
|||||||||
| 100% | 71.21% | 81.41% | 55.7% | 66.39% | 71.03% | 80.72% | 59.09% | 83.49% | |
| Duration | 16.384ms | 7.57ms | 73.269ms | 46.514ms | 16.786ms | 3.287ms | 1.618ms | 25.787ms | |
|
System v0.1.11 |
|||||||||
| 100% | 82.02% | 82.73% | 72.1% | 79.98% | 77.84% | 81.95% | 81.25% | 82.82% | |
| Duration | 5.423ms | 3.284ms | 28.511ms | 21.511ms | 5.594ms | 1.98ms | 0.903ms | 15.383ms | |
|
Tablecloth v1.0.0 |
|||||||||
| 100% | 84.52% | 87.97% | 69.8% | ERROR | 83.86% | 87.04% | 80.58% | ERROR | |
| Duration | 4.109ms | 2.833ms | 13.933ms | 0.755ms | 4.147ms | 1.388ms | 0.519ms | 1.583ms | |
|
Tachyons v4.12.0 |
|||||||||
| 100% | 64.32% | 65.47% | 61.88% | 61.9% | 66.29% | 65.36% | 62.03% | 67.02% | |
| Duration | 42.586ms | 16.988ms | 585.612ms | 120.727ms | 44.103ms | 11.113ms | 4.38ms | 96.564ms | |
|
Tent v1.4.3 |
|||||||||
| 100% | 76.48% | 76.41% | 66.77% | 67.1% | 76.64% | 76.76% | 67.05% | 77.24% | |
| Duration | 8.952ms | 4.102ms | 51.49ms | 24.705ms | 7.873ms | 2.446ms | 0.926ms | 21.092ms | |
|
The 50 Front-end Project #44 v0.0.0 |
|||||||||
| 100% | 71.87% | 72.32% | 68.19% | 72.28% | 68.13% | 73.21% | 71.66% | 73.39% | |
| Duration | 2.906ms | 2.922ms | 12.727ms | 10.518ms | 3.533ms | 1.901ms | 0.542ms | 7.678ms | |
|
The New CSS Reset v1.11.3 |
|||||||||
| 100% | 31.71% | 31.88% | 29.86% | 28.85% | 31.71% | 31.74% | 28.85% | 31.81% | |
| Duration | 0.63ms | 0.659ms | 1.751ms | 2.12ms | 0.656ms | 1.105ms | 0.134ms | 2.059ms | |
|
Toast v1.1.0 |
|||||||||
| 100% | 71.11% | 71.07% | 69.29% | 70.88% | 70.77% | 71.06% | 70.29% | 70.92% | |
| Duration | 2.064ms | 1.237ms | 12.28ms | 5.774ms | 2.032ms | 1.089ms | 0.28ms | 3.905ms | |
|
Tocas v5.7.0 |
|||||||||
| 100% | 72.3% | 70.96% | 64.21% | 70.94% | 70.16% | 72.23% | 69.57% | 71.48% | |
| Duration | 103.974ms | 53.564ms | 9,755.965ms | 333.039ms | 135.673ms | 28.563ms | 16.072ms | 277.198ms | |
|
Tooltip Twispy v1.0.6 |
|||||||||
| 100% | 80.84% | 84.52% | 55.24% | 83.58% | 80.54% | 85.07% | 82.82% | 85.31% | |
| Duration | 2.394ms | 0.779ms | 6.021ms | 5.113ms | 1.567ms | 0.834ms | 0.232ms | 3.059ms | |
|
Tootik v1.0.2 |
|||||||||
| 100% | 20.4% | 27.43% | 17.18% | 208.84% | 22.04% | 28.14% | 15.37% | 29.31% | |
| Duration | 8.855ms | 2.336ms | 25.006ms | 19.775ms | 3.691ms | 1.519ms | 0.555ms | 9.83ms | |
|
Tuesday v1.3.0 |
|||||||||
| 100% | 75.02% | 74.54% | 36.88% | 28.3% | 73.96% | 73.95% | 27.63% | 76.84% | |
| Duration | 6.646ms | 3.371ms | 10.059ms | 11.708ms | 6.967ms | 1.516ms | 0.69ms | 18.11ms | |
|
Tufte v1.8.0 |
|||||||||
| 100% | 74.05% | 74.45% | 69.27% | 70.24% | 72.09% | 73.85% | 73.8% | 74.68% | |
| Duration | 3.524ms | 1.502ms | 11.034ms | 9.575ms | 3.927ms | 1ms | 0.498ms | 6.78ms | |
|
Tui v2.1.2 |
|||||||||
| 100% | 73.74% | 72.77% | 67.46% | 72.64% | 66.55% | 74.09% | 70.22% | 75.07% | |
| Duration | 17.625ms | 9.089ms | 193.479ms | 49.653ms | 15.69ms | 4.798ms | 1.766ms | 44.598ms | |
|
tw-animate-css v1.4.0 |
|||||||||
| 100% | 53.29% | 83.42% | 73.29% | 85.13% | 48.73% | 88.94% | 87.13% | ERROR | |
| Duration | 1.803ms | 1.33ms | 10.209ms | 13.791ms | 4.631ms | 2.116ms | 0.687ms | 2.813ms | |
|
UIkit v3.25.17 |
|||||||||
| 100% | 69.93% | 71.15% | 69.5% | 69.17% | 69.8% | 70.14% | 70.14% | 71.05% | |
| Duration | 124.895ms | 39.091ms | 1,782.149ms | 405.423ms | 112.502ms | 22.13ms | 10.756ms | 216.547ms | |
|
Unfold v0.0.0 |
|||||||||
| 100% | 76.24% | 77.75% | 50.87% | 24.62% | 73.71% | 77.48% | 30.73% | 79.3% | |
| Duration | 26.587ms | 12.126ms | 109.326ms | 58.731ms | 30.128ms | 6.812ms | 2.773ms | 66.093ms | |
|
Utility OpenType v0.1.4 |
|||||||||
| 100% | 83.18% | 82.77% | 79.69% | 55.18% | 82.61% | 83.66% | 84.11% | 83.94% | |
| Duration | 2.63ms | 5.318ms | 13.127ms | 9.265ms | 3.962ms | 2.015ms | 0.497ms | 8.379ms | |
|
Vim CSS3 Syntax v2.10.0 |
|||||||||
| 100% | 81.82% | 83.5% | 54.71% | ERROR | 64.61% | 83.69% | 83.46% | ERROR | |
| Duration | 10.538ms | 2.652ms | 43.583ms | 1.386ms | 16.317ms | 3.241ms | 1.611ms | 3.023ms | |
|
Virtual Bookshelf v1.1.0 |
|||||||||
| 100% | 86.76% | 70.26% | 69.08% | 68.76% | 85.73% | 75.93% | 62.69% | 77.9% | |
| Duration | 5.467ms | 0.893ms | 4.562ms | 3.702ms | 2.502ms | 1.36ms | 0.276ms | 2.009ms | |
|
VitePress v1.6.4 |
|||||||||
| 100% | 74.36% | 75% | 66.56% | 72.99% | 73.56% | 75.46% | 73.28% | 75.29% | |
| Duration | 13.177ms | 2.442ms | 14.842ms | 16.068ms | 4.234ms | 1.718ms | 0.627ms | 8.368ms | |
|
Vivify v1.0.0 |
|||||||||
| 100% | 80.62% | 79.87% | 69.07% | 39.08% | 76.11% | 79.28% | 38.06% | 84.43% | |
| Duration | 22.001ms | 11.136ms | 73.94ms | 33.59ms | 21.875ms | 4.976ms | 1.649ms | 42.887ms | |
|
Voxels v1.0.0 |
|||||||||
| 100% | 72.19% | 74.13% | 72.5% | 54.95% | 71.38% | 71.57% | 72.73% | 86.92% | |
| Duration | 1.779ms | 0.942ms | 3.367ms | 4.82ms | 3.338ms | 1.372ms | 0.276ms | 4.904ms | |
|
w3css v4.10.0 |
|||||||||
| 100% | 97.04% | 97.08% | 95.15% | 95.68% | 96.32% | 97.01% | 95.93% | 98.44% | |
| Duration | 12.362ms | 4.365ms | 64.981ms | 34.859ms | 10.441ms | 2.564ms | 1.141ms | 19.926ms | |
|
Waffle Grid v1.3.6 |
|||||||||
| 100% | 79.24% | 75.56% | 72.75% | 72.06% | 77.21% | 75.92% | 71.21% | 75.97% | |
| Duration | 3.445ms | 1.485ms | 15.609ms | 10.522ms | 3.659ms | 1.71ms | 0.492ms | 9.157ms | |
|
Water v2.1.1 |
|||||||||
| 100% | 52.8% | 83.12% | 66.04% | 69.33% | 65.37% | 80.37% | 75.32% | 84.44% | |
| Duration | 20.229ms | 4.952ms | 44.249ms | 30.989ms | 11.141ms | 2.575ms | 1.488ms | 25.393ms | |
|
Weather Icons v2.0.10 |
|||||||||
| 100% | 84.57% | 84.96% | 72.61% | 33.75% | 83.27% | 86.11% | 32.94% | 85.47% | |
| Duration | 44.55ms | 55.016ms | 1,839.753ms | 99.892ms | 52.765ms | 12.829ms | 4.428ms | 130.641ms | |
|
Webgradients v0.0.0 |
|||||||||
| 100% | 71.56% | 72.71% | 63.67% | 65.29% | 71.66% | 64.56% | 67.52% | 75.59% | |
| Duration | 6.547ms | 2.823ms | 62.578ms | 23.757ms | 12.751ms | 2.468ms | 0.851ms | 21.326ms | |
|
Wenk v1.0.8 |
|||||||||
| 100% | 22.83% | 57.07% | 55.89% | 55.54% | 6.85% | 62.26% | 55.35% | 70.76% | |
| Duration | 0.665ms | 0.501ms | 2.776ms | 4.625ms | 0.407ms | 1.296ms | 0.196ms | 3.429ms | |
|
Windows 95 v0.0.0 |
|||||||||
| 100% | 74.27% | 74.68% | 63.72% | 73.28% | 71.09% | 74.99% | 73.05% | 75.6% | |
| Duration | 3.727ms | 1.65ms | 11.058ms | 11.41ms | 3.643ms | 1.341ms | 0.407ms | 5.746ms | |
|
Windows 98 v0.0.1 |
|||||||||
| 100% | 73.48% | 80.38% | 56.61% | 71.04% | 70% | 81.05% | 69.52% | 82.05% | |
| Duration | 2.157ms | 1.161ms | 7.215ms | 7.797ms | 1.742ms | 0.799ms | 0.283ms | 3.367ms | |
|
Wing v1.0.0 |
|||||||||
| 100% | 69.09% | 68.8% | 66.14% | 68.73% | 68.55% | 69.24% | 67.96% | 69.56% | |
| Duration | 3.158ms | 1.533ms | 13.422ms | 15.467ms | 3.312ms | 1.553ms | 0.417ms | 6.006ms | |
|
Woah v1.3.1 |
|||||||||
| 100% | 59.57% | 63.67% | 61.36% | 63.44% | 56.64% | 64.01% | 59.53% | 67.92% | |
| Duration | 5.365ms | 2.729ms | 17.551ms | 11.265ms | 6.223ms | 1.966ms | 0.645ms | 13.97ms | |
|
WTF Forms v2.2.0 |
|||||||||
| 100% | 74.01% | 73.93% | 70.11% | 51.96% | 72.87% | 74.24% | 71.09% | 74.39% | |
| Duration | 2.617ms | 1.085ms | 9.526ms | 9.916ms | 2.615ms | 1.392ms | 0.383ms | 5.009ms | |
|
YaCy v4.1.2 |
|||||||||
| 100% | 66.14% | 77.59% | 53.24% | 54.77% | 76.69% | 79.43% | 61.59% | 79.95% | |
| Duration | 8.235ms | 3.801ms | 23.535ms | 29.525ms | 8.726ms | 2.011ms | 0.973ms | 13.74ms | |
|
Yue v1.1.1 |
|||||||||
| 100% | 79.3% | 79.04% | 73.96% | 77.44% | 77.07% | 79.15% | 79% | 79.3% | |
| Duration | 1.138ms | 1.091ms | 3.63ms | 4.926ms | 1.725ms | 1.402ms | 0.219ms | 2.543ms | |
|
Zotero Dark Theme v0.0.0 |
|||||||||
| 100% | 67.53% | 71.85% | 65.35% | 67.39% | 59.68% | 70.32% | 65.94% | 74.73% | |
| Duration | 4.659ms | 2.483ms | 19.232ms | 17.041ms | 3.782ms | 1.599ms | 0.461ms | 8.599ms | |
| clean-css | csskit | csslop | cssnano | csso | esbuild | lightningcss | sass | ||
| Total Errors | 2 | 2 | 0 | 8 | 2 | 1 | 0 | 14 | |
| Totals (184) |
9,212,174 (8.79MB) |
6,671,698 (6.36MB) |
6,879,148 (6.56MB) |
5,967,376 (5.69MB) |
6,133,544 (5.85MB) |
6,562,628 (6.26MB) |
6,844,818 (6.53MB) |
5,890,328 (5.62MB) |
7,007,874 (6.68MB) |
| Percent of Original Size | 100% | 72.42% | 74.67% | 64.78% | 66.58% | 71.24% | 74.3% | 63.94% | 76.07% |
| Total Durations | 3.952s | 1.459s | 44.374s | 9.702s | 3.297s | 800ms | 316ms | 6.928s | |
comments #
0001Details
Basic comment removal
Standard
/* ... */comments should be stripped entirely.Source
View in PlaygroundExpected
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
View in PlaygroundExpected
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
View in PlaygroundExpected
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
View in PlaygroundExpected
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
View in PlaygroundExpected
Outputs
clean-css ✗
csskit ✗
csslop ✓
cssnano ✗
csso ✗
esbuild ✗
lightningcss ✗
sass ✗
0006Details
Remove comments from inside keyframes percents
Comments inside of keyframes should be removed.
Source
View in PlaygroundExpected
Outputs
clean-css ✓
csskit ✓
csslop ✓
cssnano ✓
csso ✓
esbuild ✓
lightningcss ✓
sass ✓
0007Details
Remove comments from custom-property values
If a custom-property is assigned to only a CSS comment, the entire comment can safely be removed. However, the custom-property declaration must remain. If a custom-property contains values with a comment between them, then the comment token must remain, though it's contents can be removed.
Source
View in PlaygroundExpected
Outputs
clean-css ✗
csskit ✗
csslop ✓
cssnano ✗
csso ✗
esbuild ✗
lightningcss ✗
sass ✗