Skip to content

Latest commit

Β 

History

History
171 lines (148 loc) Β· 21.7 KB

readme.md

File metadata and controls

171 lines (148 loc) Β· 21.7 KB

πŸƒβ€β™‚οΈπŸƒβ€β™€οΈπŸƒ JS minification benchmarks

Benchmarks are gathered on the following minifiers:

If you like this project, please star it & follow me to see what other cool projects I'm working on! ❀️

πŸ‘Ÿ Methodology

  • Each minifier is executed in its own process
  • The measured time is an average taken from 10 consecutive runs
  • Each table is sorted by smallest minified size in ascending order
  • Each time is annotated with a multiplier relative to the fastest minifier
  • "Minzipped size" measures how well the minified file compresses with Gzip
  • Comments are not stripped because not all minifiers support it

πŸ“‹ Results

  • Unminified size: 555.8 kB
  • Unminified Gzip size: 130.5 kB
Minifier Minified size Minzipped size Time
terser πŸ†-52% 268.0 kB πŸ†-33% 87.9 kB 36x 2,747ms
esbuild -52% 270.4 kB -31% 90.6 kB πŸ† 75ms
terser.no-compress -51% 276.5 kB -32% 89.2 kB 16x 1,202ms
google-closure-compiler.simple -45% 306.3 kB -22% 101.9 kB 103x 7,786ms
swc -18% 459.6 kB -11% 116.2 kB 6x 474ms
babel-minify Failed β€” β€” β€”
google-closure-compiler.advanced Failed β€” β€” β€”
uglify-js Failed β€” β€” β€”
uglify-js.no-compress Failed β€” β€” β€”

  • Unminified size: 287.6 kB
  • Unminified Gzip size: 84.7 kB
Minifier Minified size Minzipped size Time
google-closure-compiler.advanced πŸ†-70% 87.4 kB -62% 32.5 kB 253x 8,009ms
uglify-js -70% 88.9 kB πŸ†-64% 31.0 kB 57x 1,826ms
terser -69% 90.3 kB -64% 31.2 kB 36x 1,149ms
esbuild -69% 90.5 kB -63% 32.2 kB πŸ† 32ms
babel-minify -68% 92.4 kB -63% 31.9 kB 101x 3,199ms
uglify-js.no-compress -68% 94.3 kB -63% 31.6 kB 11x 377ms
terser.no-compress -67% 95.0 kB -63% 31.9 kB 13x 412ms
google-closure-compiler.simple -67% 96.5 kB -60% 34.5 kB 131x 4,141ms
swc -49% 147.6 kB -51% 42.3 kB 3x 101ms

  • Unminified size: 542.6 kB
  • Unminified Gzip size: 96.8 kB
Minifier Minified size Minzipped size Time
google-closure-compiler.advanced πŸ†-89% 60.2 kB πŸ†-79% 20.9 kB 223x 6,629ms
uglify-js -88% 69.5 kB -75% 24.5 kB 57x 1,704ms
terser -87% 71.2 kB -74% 25.2 kB 38x 1,152ms
babel-minify -87% 71.9 kB -74% 25.3 kB 88x 2,620ms
esbuild -87% 72.6 kB -73% 26.2 kB πŸ† 30ms
uglify-js.no-compress -87% 75.2 kB -74% 25.8 kB 11x 344ms
terser.no-compress -87% 75.8 kB -73% 26.3 kB 15x 459ms
google-closure-compiler.simple -86% 77.4 kB -73% 26.3 kB 133x 3,950ms
swc -72% 155.9 kB -62% 37.6 kB 2x 79ms

  • Unminified size: 173.9 kB
  • Unminified Gzip size: 36.5 kB
Minifier Minified size Minzipped size Time
uglify-js πŸ†-67% 58.3 kB πŸ†-50% 18.5 kB 61x 1,229ms
terser -66% 59.2 kB -49% 18.7 kB 37x 762ms
babel-minify -66% 59.2 kB -49% 18.8 kB 85x 1,732ms
esbuild -66% 60.0 kB -47% 19.4 kB πŸ† 20ms
google-closure-compiler.simple -65% 60.9 kB -47% 19.7 kB 165x 3,340ms
uglify-js.no-compress -64% 63.0 kB -47% 19.5 kB 11x 230ms
terser.no-compress -64% 63.3 kB -47% 19.7 kB 14x 300ms
swc -42% 102.4 kB -30% 25.9 kB 2x 41ms
google-closure-compiler.advanced Failed β€” β€” β€”

  • Unminified size: 72.1 kB
  • Unminified Gzip size: 19.5 kB
Minifier Minified size Minzipped size Time
uglify-js πŸ†-69% 22.8 kB πŸ†-58% 8.2 kB 52x 652ms
terser -68% 23.4 kB -57% 8.4 kB 26x 328ms
babel-minify -68% 23.8 kB -57% 8.5 kB 60x 748ms
esbuild -67% 24.0 kB -56% 8.7 kB πŸ† 12ms
uglify-js.no-compress -66% 25.1 kB -56% 8.7 kB 9x 116ms
terser.no-compress -65% 25.3 kB -55% 8.9 kB 11x 142ms
google-closure-compiler.simple -55% 32.9 kB -43% 11.2 kB 214x 2,647ms
swc -42% 42.5 kB -42% 11.4 kB 1x 17ms
google-closure-compiler.advanced Failed β€” β€” β€”

  • Unminified size: 860.3 kB
  • Unminified Gzip size: 173.1 kB
Minifier Minified size Minzipped size Time
terser πŸ†-53% 407.2 kB πŸ†-34% 114.6 kB 37x 2,156ms
esbuild -53% 408.3 kB -33% 117.3 kB πŸ† 57ms
terser.no-compress -52% 420.8 kB -34% 115.3 kB 15x 898ms
google-closure-compiler.simple -51% 421.8 kB -28% 124.7 kB 109x 6,283ms
swc -33% 581.8 kB -20% 139.5 kB 6x 377ms
babel-minify Failed β€” β€” β€”
google-closure-compiler.advanced Failed β€” β€” β€”
uglify-js Failed β€” β€” β€”
uglify-js.no-compress Failed β€” β€” β€”

  • Unminified size: 1.2 MB
  • Unminified Gzip size: 249.0 kB
Minifier Minified size Minzipped size Time
uglify-js πŸ†-49% 644.5 kB πŸ†-37% 159.1 kB 67x 5,783ms
babel-minify -49% 645.3 kB -36% 161.4 kB 121x 10,497ms
esbuild -49% 647.2 kB -35% 163.3 kB πŸ† 86ms
terser -48% 653.4 kB -37% 159.1 kB 35x 3,088ms
google-closure-compiler.simple -48% 660.1 kB -33% 167.1 kB 89x 7,712ms
uglify-js.no-compress -46% 675.4 kB -35% 162.9 kB 12x 1,081ms
terser.no-compress -46% 675.6 kB -35% 162.9 kB 15x 1,338ms
swc -24% 958.8 kB -22% 196.2 kB 6x 528ms
google-closure-compiler.advanced Failed β€” β€” β€”

  • Unminified size: 223.2 kB
  • Unminified Gzip size: 62.3 kB
Minifier Minified size Minzipped size Time
uglify-js πŸ†-58% 94.2 kB πŸ†-50% 31.2 kB 46x 1,277ms
terser -58% 95.0 kB -50% 31.3 kB 25x 707ms
esbuild -58% 95.2 kB -49% 31.8 kB πŸ† 28ms
babel-minify -58% 95.3 kB -50% 31.5 kB 68x 1,912ms
google-closure-compiler.simple -56% 99.5 kB -47% 33.0 kB 123x 3,435ms
uglify-js.no-compress -55% 101.0 kB -49% 32.2 kB 10x 279ms
terser.no-compress -55% 101.3 kB -49% 32.2 kB 11x 324ms
swc -40% 134.6 kB -39% 38.2 kB 1x 50ms
google-closure-compiler.advanced Failed β€” β€” β€”

Want to see more projects listed? PRs welcome!

πŸ₯‡ Results

Best minification performance

UglifyJS takes first place for minification performance. This is quite impressive as it doesn't support or leverage new and concise ES6+ syntax (hence the failed minifications for "terser v5.5.1").

Terser takes a very close second, only short at most by 1%. Terser is a fork of uglify-es and comes with support for ES6+.

Fastest minifier

esbuild runs 10x+ laps around everyone else! Nothing comes close to the Go compiled minifier/bundler.

esbuild's minification supports cutting-edge ESNext syntax and performs very competitivelyβ€”only short at most by 2% from UglifyJs.

⚑️ Pro Tip: Harness the speed of esbuild in your Webpack build for minification (and even transpilation) with esbuild-loader.