Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/privatenumber/minification-benchmarks

🏃‍♂️🏃‍♀️🏃 JS minification benchmarks: babel-minify, esbuild, terser, uglify-js, swc, google closure compiler, tdewolff/minify
https://github.com/privatenumber/minification-benchmarks

babel-minify benchmarks esbuild google-closure-compiler gzip gzip-size javascript measures minification minification-benchmarks minification-performance minifier minifiers size speed swc tesrser uglify-js uglifyjs webpack

Last synced: about 2 months ago
JSON representation

🏃‍♂️🏃‍♀️🏃 JS minification benchmarks: babel-minify, esbuild, terser, uglify-js, swc, google closure compiler, tdewolff/minify

Awesome Lists containing this project

README

        





minification benchmarks

> What's the best JavaScript minifier?

This project benchmarks the following minifiers:

- [babel-minify](https://github.com/babel/minify/tree/master/packages/babel-minify) v0.5.2
- [bun](https://github.com/oven-sh/bun) v1.1.21
- [esbuild](https://github.com/evanw/esbuild) v0.23.0
- [google-closure-compiler](https://github.com/google/closure-compiler-npm/tree/master/packages/google-closure-compiler) v20240317.0.0
- [tedivm/jshrink](https://github.com/tedious/JShrink) v1.7.0
- [@swc/core](https://github.com/swc-project/swc) v1.7.4
- [@tdewolff/minify](https://github.com/tdewolff/minify#readme) v2.20.37
- [terser](https://github.com/terser/terser) v5.31.3
- [uglify-js](https://github.com/mishoo/UglifyJS) v3.19.1

_Benchmarks last updated on Jul 31, 2024._





## 🙋‍♂️ Why?

1. To help you pick a minifier that fits your needs
2. To promote JS minifiers and document their performances
3. To encourage healthy competition and improvement amongst minifiers

## 👟 Methodology

- Each minifier is executed in its own process with a 10s timeout
- Artifact integrity is verified by a test before and after minification
- Minifier upgrade PRs are automated via [WhiteSource Renovate](https://www.whitesourcesoftware.com/free-developer-tools/renovate/)
- Benchmarks are updated on every PR via [GitHub Actions](https://github.com/privatenumber/minification-benchmarks/actions/workflows/benchmark.yml)

## ⏱ Metrics

Minifiers are ranked by smallest minzipped size.

#### Minified size

Size of the minified output.

#### Minzipped size

Size of the minified output with [Gzip compression](https://en.wikipedia.org/wiki/Gzip).

For minifiers, this measures how compressable the output is.

For users, this measures network transfer size, which is usually the metric that matters most.

#### Time

How long minification took (average of 5 runs). Each time is annotated with a multiplier relative to the fastest minifier.

## 📋 Results

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "react v17.0.2"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10,11]
y-axis "Gzip size" 0 --> 19385
bar [19385,8173,8177,8193,8317,8448,8543,8631,8651,8668,8746,11040]
```

| Artifact | Original size | Gzip size | |
| :-------------------------------------------------------------------------------------------------------------------------------- | -------------------------------: | ------------------------------: | ----------------------------: |
| [react v17.0.2](https://www.npmjs.com/package/react/v/17.0.2) ([Source](https://unpkg.com/[email protected]/cjs/react.development.js)) | `72.13 kB` | `19.39 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | -68% `22.87 kB` | **🏆-58% `8.17 kB`** | *8x* `21 ms` |
| 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-69% `22.66 kB`** | -58% `8.18 kB` | *190x* `482 ms` |
| 3. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `22.83 kB` | -58% `8.19 kB` | *1291x* `3,269 ms` |
| 4. [terser](packages/minifiers/minifiers/terser.ts) | -68% `23.14 kB` | -57% `8.32 kB` | *106x* `269 ms` |
| 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -67% `23.60 kB` | -56% `8.45 kB` | *233x* `590 ms` |
| 6. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -67% `23.70 kB` | -56% `8.54 kB` | *5x* `13 ms` |
| 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -67% `23.53 kB` | -55% `8.63 kB` | **🏆 `3 ms`** |
| 8. [bun](packages/minifiers/minifiers/bun.ts) | -67% `24.01 kB` | -55% `8.65 kB` | *5x* `13 ms` |
| 9. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -65% `25.03 kB` | -55% `8.67 kB` | *35x* `90 ms` |
| 10. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -65% `25.08 kB` | -55% `8.75 kB` | *47x* `120 ms` |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -43% `40.82 kB` | -43% `11.04 kB` | *41x* `105 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "moment v2.29.1"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10,11]
y-axis "Gzip size" 0 --> 36231
bar [36231,18560,18686,18690,18910,19119,19334,19496,19569,19683,19850,24998]
```

| Artifact | Original size | Gzip size | |
| :-------------------------------------------------------------------------------------------------------------------- | -------------------------------: | -------------------------------: | ---------------------------: |
| [moment v2.29.1](https://www.npmjs.com/package/moment/v/2.29.1) ([Source](https://unpkg.com/[email protected]/moment.js)) | `173.90 kB` | `36.23 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-67% `57.85 kB`** | **🏆-49% `18.56 kB`** | *208x* `1,131 ms` |
| 2. [@swc/core](packages/minifiers/minifiers/swc.ts) | -67% `58.21 kB` | -48% `18.69 kB` | *9x* `52 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -66% `59.14 kB` | -48% `18.69 kB` | *122x* `664 ms` |
| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `58.27 kB` | -48% `18.91 kB` | *711x* `3,856 ms` |
| 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `59.70 kB` | -47% `19.12 kB` | *252x* `1,367 ms` |
| 6. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -66% `59.82 kB` | -47% `19.33 kB` | *4x* `23 ms` |
| 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `59.95 kB` | -46% `19.50 kB` | **🏆 `5 ms`** |
| 8. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -64% `62.50 kB` | -46% `19.57 kB` | *39x* `217 ms` |
| 9. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -64% `63.15 kB` | -46% `19.68 kB` | *50x* `273 ms` |
| 10. [bun](packages/minifiers/minifiers/bun.ts) | -64% `61.84 kB` | -45% `19.85 kB` | *2x* `16 ms` |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -44% `97.63 kB` | -31% `25.00 kB` | *45x* `246 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "jquery v3.5.1"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10,11]
y-axis "Gzip size" 0 --> 84498
bar [84498,30867,30879,30912,31468,31470,31621,31799,31954,32630,33086,40879]
```

| Artifact | Original size | Gzip size | |
| :---------------------------------------------------------------------------------------------------------------------- | -------------------------------: | -------------------------------: | ---------------------------: |
| [jquery v3.5.1](https://www.npmjs.com/package/jquery/v/3.5.1) ([Source](https://unpkg.com/[email protected]/dist/jquery.js)) | `287.63 kB` | `84.50 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | -69% `89.15 kB` | **🏆-63% `30.87 kB`** | *10x* `92 ms` |
| 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-69% `88.51 kB`** | -63% `30.88 kB` | *181x* `1,544 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -69% `89.54 kB` | -63% `30.91 kB` | *105x* `899 ms` |
| 4. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -69% `89.85 kB` | -63% `31.47 kB` | **🏆 `9 ms`** |
| 5. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -67% `94.08 kB` | -63% `31.47 kB` | *36x* `310 ms` |
| 6. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -67% `94.55 kB` | -63% `31.62 kB` | *42x* `365 ms` |
| 7. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -68% `92.10 kB` | -62% `31.80 kB` | *264x* `2,255 ms` |
| 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -69% `90.07 kB` | -62% `31.95 kB` | *4x* `39 ms` |
| 9. [bun](packages/minifiers/minifiers/bun.ts) | -68% `92.56 kB` | -61% `32.63 kB` | *3x* `26 ms` |
| 10. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -68% `92.70 kB` | -61% `33.09 kB` | *511x* `4,363 ms` |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -50% `144.14 kB` | -52% `40.88 kB` | *36x* `315 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "vue v2.6.12"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10,11]
y-axis "Gzip size" 0 --> 89668
bar [89668,42478,42927,42939,43925,44230,44368,44376,44450,44679,45340,57169]
```

| Artifact | Original size | Gzip size | |
| :------------------------------------------------------------------------------------------------------------- | --------------------------------: | -------------------------------: | ---------------------------: |
| [vue v2.6.12](https://www.npmjs.com/package/vue/v/2.6.12) ([Source](https://unpkg.com/[email protected]/dist/vue.js)) | `342.15 kB` | `89.67 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | -66% `115.47 kB` | **🏆-53% `42.48 kB`** | *11x* `134 ms` |
| 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-67% `113.98 kB`** | -52% `42.93 kB` | *181x* `2,119 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -66% `116.83 kB` | -52% `42.94 kB` | *95x* `1,110 ms` |
| 4. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -66% `117.90 kB` | -51% `43.93 kB` | *211x* `2,476 ms` |
| 5. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -66% `115.61 kB` | -51% `44.23 kB` | *403x* `4,717 ms` |
| 6. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -65% `118.14 kB` | -51% `44.37 kB` | *3x* `40 ms` |
| 7. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `117.81 kB` | -51% `44.38 kB` | **🏆 `12 ms`** |
| 8. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -63% `126.14 kB` | -50% `44.45 kB` | *31x* `365 ms` |
| 9. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -63% `126.58 kB` | -50% `44.68 kB` | *37x* `440 ms` |
| 10. [bun](packages/minifiers/minifiers/bun.ts) | -64% `121.70 kB` | -49% `45.34 kB` | *2x* `28 ms` |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -42% `197.36 kB` | -36% `57.17 kB` | *35x* `416 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "lodash v4.17.21"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10,11]
y-axis "Gzip size" 0 --> 96690
bar [96690,24659,24972,25180,25186,25503,25862,26200,26221,26469,26498,36327]
```

| Artifact | Original size | Gzip size | |
| :----------------------------------------------------------------------------------------------------------------------- | -------------------------------: | -------------------------------: | ---------------------------: |
| [lodash v4.17.21](https://www.npmjs.com/package/lodash/v/4.17.21) ([Source](https://unpkg.com/[email protected]/lodash.js)) | `544.09 kB` | `96.69 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-87% `68.24 kB`** | **🏆-74% `24.66 kB`** | *139x* `1,657 ms` |
| 2. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -86% `73.47 kB` | -74% `24.97 kB` | *390x* `4,633 ms` |
| 3. [@swc/core](packages/minifiers/minifiers/swc.ts) | -87% `69.84 kB` | -74% `25.18 kB` | *9x* `114 ms` |
| 4. [terser](packages/minifiers/minifiers/terser.ts) | -87% `70.67 kB` | -74% `25.19 kB` | *78x* `934 ms` |
| 5. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) | -87% `72.37 kB` | -74% `25.50 kB` | *163x* `1,940 ms` |
| 6. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -86% `74.61 kB` | -73% `25.86 kB` | *28x* `336 ms` |
| 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -87% `72.48 kB` | -73% `26.20 kB` | *2x* `29 ms` |
| 8. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -86% `75.29 kB` | -73% `26.22 kB` | *31x* `370 ms` |
| 9. [bun](packages/minifiers/minifiers/bun.ts) | -86% `74.11 kB` | -73% `26.47 kB` | *1x* `21 ms` |
| 10. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -87% `71.90 kB` | -73% `26.50 kB` | **🏆 `12 ms`** |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -73% `148.78 kB` | -62% `36.33 kB` | *27x* `328 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "d3 v6.3.1"
x-axis ["Original",1,2,3,4,5,6,7,8,9]
y-axis "Gzip size" 0 --> 130686
bar [130686,86959,87283,88319,88343,89156,89891,90800,92374,94121]
```

| Artifact | Original size | Gzip size | |
| :------------------------------------------------------------------------------------------------------------------------- | --------------------------------: | -------------------------------: | ---------------------------: |
| [d3 v6.3.1](https://www.npmjs.com/package/d3/v/6.3.1) ([Source](https://unpkg.com/[email protected]/dist/d3.js)) | `555.77 kB` | `130.69 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-53% `263.73 kB`** | **🏆-33% `86.96 kB`** | *113x* `3,928 ms` |
| 2. [@swc/core](packages/minifiers/minifiers/swc.ts) | -52% `265.27 kB` | -33% `87.28 kB` | *8x* `288 ms` |
| 3. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -50% `275.35 kB` | -32% `88.32 kB` | *20x* `711 ms` |
| 4. [terser](packages/minifiers/minifiers/terser.ts) | -52% `267.90 kB` | -32% `88.34 kB` | *66x* `2,284 ms` |
| 5. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -50% `276.47 kB` | -32% `89.16 kB` | *28x* `992 ms` |
| 6. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -51% `269.93 kB` | -31% `89.89 kB` | **🏆 `35 ms`** |
| 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -51% `270.13 kB` | -31% `90.80 kB` | *2x* `70 ms` |
| 8. [bun](packages/minifiers/minifiers/bun.ts) | -51% `273.43 kB` | -29% `92.37 kB` | *1x* `39 ms` |
| 9. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -51% `270.30 kB` | -28% `94.12 kB` | *205x* `7,110 ms` |
| 10. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Minification | ❌ | ❌ | - |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Minification | ❌ | ❌ | - |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "terser v5.30.3"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10]
y-axis "Gzip size" 0 --> 193763
bar [193763,123068,123276,123502,124428,124609,124897,126562,126706,127547,145178]
```

| Artifact | Original size | Gzip size | |
| :----------------------------------------------------------------------------------------------------------------------------- | --------------------------------: | --------------------------------: | ---------------------------: |
| [terser v5.30.3](https://www.npmjs.com/package/terser/v/5.30.3) ([Source](https://unpkg.com/[email protected]/dist/bundle.min.js)) | `1.01 MB` | `193.76 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | -55% `455.58 kB` | **🏆-36% `123.07 kB`** | *7x* `251 ms` |
| 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | -55% `451.54 kB` | -36% `123.28 kB` | *114x* `3,711 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -55% `458.31 kB` | -36% `123.50 kB` | *66x* `2,157 ms` |
| 4. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -53% `474.40 kB` | -36% `124.43 kB` | *30x* `973 ms` |
| 5. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -53% `472.16 kB` | -36% `124.61 kB` | *24x* `779 ms` |
| 6. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -55% `456.70 kB` | -36% `124.90 kB` | **🏆 `32 ms`** |
| 7. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | **🏆-56% `439.95 kB`** | -35% `126.56 kB` | *205x* `6,631 ms` |
| 8. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -55% `458.89 kB` | -35% `126.71 kB` | *1x* `62 ms` |
| 9. [bun](packages/minifiers/minifiers/bun.ts) | -54% `466.95 kB` | -34% `127.55 kB` | *1x* `36 ms` |
| 10. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -37% `633.71 kB` | -25% `145.18 kB` | *36x* `1,185 ms` |
| 11. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Minification | ❌ | ❌ | - |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "three v0.124.0"
x-axis ["Original",1,2,3,4,5,6,7,8,9,10]
y-axis "Gzip size" 0 --> 248267
bar [248267,158374,158963,159729,162998,163036,163198,163725,164737,166432,193471]
```

| Artifact | Original size | Gzip size | |
| :------------------------------------------------------------------------------------------------------------------------- | --------------------------------: | --------------------------------: | --------------------------------: |
| [three v0.124.0](https://www.npmjs.com/package/three/v/0.124.0) ([Source](https://unpkg.com/[email protected]/build/three.js)) | `1.25 MB` | `248.27 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | -48% `642.91 kB` | **🏆-36% `158.37 kB`** | *8x* `377 ms` |
| 2. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-49% `642.23 kB`** | -36% `158.96 kB` | *112x* `4,973 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -48% `653.99 kB` | -36% `159.73 kB` | *66x* `2,936 ms` |
| 4. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) | -48% `644.45 kB` | -34% `163.00 kB` | *186x* `8,208 ms` |
| 5. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -46% `674.49 kB` | -34% `163.04 kB` | *22x* `989 ms` |
| 6. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -46% `675.50 kB` | -34% `163.20 kB` | *29x* `1,281 ms` |
| 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -48% `646.76 kB` | -34% `163.73 kB` | *1x* `87 ms` |
| 8. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -48% `644.55 kB` | -34% `164.74 kB` | *1x* `48 ms` |
| 9. [bun](packages/minifiers/minifiers/bun.ts) | -47% `662.49 kB` | -33% `166.43 kB` | **🏆 `44 ms`** |
| 10. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) | -24% `952.01 kB` | -22% `193.47 kB` | *34x* `1,519 ms` |
| 11. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "victory v35.8.4"
x-axis ["Original",1,2,3,4,5,6,7,8]
y-axis "Gzip size" 0 --> 309942
bar [309942,157388,157861,158718,165131,166386,167579,181071,182626]
```

| Artifact | Original size | Gzip size | |
| :----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------: | --------------------------------: | --------------------------------: |
| [victory v35.8.4](https://www.npmjs.com/package/victory/v/35.8.4) ([Source](https://unpkg.com/[email protected]/dist/victory.js)) | `2.13 MB` | `309.94 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) | **🏆-67% `696.35 kB`** | **🏆-49% `157.39 kB`** | *106x* `6,305 ms` |
| 2. [@swc/core](packages/minifiers/minifiers/swc.ts) | -67% `707.22 kB` | -49% `157.86 kB` | *9x* `556 ms` |
| 3. [terser](packages/minifiers/minifiers/terser.ts) | -66% `715.59 kB` | -49% `158.72 kB` | *66x* `3,959 ms` |
| 4. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `718.73 kB` | -47% `165.13 kB` | **🏆 `59 ms`** |
| 5. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -64% `759.34 kB` | -46% `166.39 kB` | *26x* `1,602 ms` |
| 6. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -65% `756.53 kB` | -46% `167.58 kB` | *22x* `1,330 ms` |
| 7. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -66% `724.14 kB` | -42% `181.07 kB` | *1x* `116 ms` |
| 8. [bun](packages/minifiers/minifiers/bun.ts) | -66% `727.99 kB` | -41% `182.63 kB` | *1x* `61 ms` |
| 9. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 10. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Minification | ❌ | ❌ | - |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Post-validation | ❌ | ❌ | - |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "echarts v5.1.1"
x-axis ["Original",1,2,3,4,5,6,7]
y-axis "Gzip size" 0 --> 684611
bar [684611,320241,322101,330736,331412,331563,331791,337702]
```

| Artifact | Original size | Gzip size | |
| :----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------: | --------------------------------: | --------------------------------: |
| [echarts v5.1.1](https://www.npmjs.com/package/echarts/v/5.1.1) ([Source](https://unpkg.com/[email protected]/dist/echarts.js)) | `3.20 MB` | `684.61 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | **🏆-69% `993.11 kB`** | **🏆-53% `320.24 kB`** | *10x* `1,070 ms` |
| 2. [terser](packages/minifiers/minifiers/terser.ts) | -69% `1.00 MB` | -53% `322.10 kB` | *58x* `6,048 ms` |
| 3. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -66% `1.07 MB` | -52% `330.74 kB` | *25x* `2,620 ms` |
| 4. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -67% `1.07 MB` | -52% `331.41 kB` | *17x* `1,751 ms` |
| 5. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -68% `1.01 MB` | -52% `331.56 kB` | *1x* `194 ms` |
| 6. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -68% `1.01 MB` | -52% `331.79 kB` | *1x* `123 ms` |
| 7. [bun](packages/minifiers/minifiers/bun.ts) | -68% `1.03 MB` | -51% `337.70 kB` | **🏆 `103 ms`** |
| 8. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 9. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 10. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 11. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Minification | ❌ | ❌ | - |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "antd v4.16.1"
x-axis ["Original",1,2,3,4,5,6,7]
y-axis "Gzip size" 0 --> 825175
bar [825175,452876,457821,472052,475480,478572,488279,491747]
```

| Artifact | Original size | Gzip size | |
| :----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------: | --------------------------------: | --------------------------------: |
| [antd v4.16.1](https://www.npmjs.com/package/antd/v/4.16.1) ([Source](https://unpkg.com/[email protected]/dist/antd.js)) | `6.67 MB` | `825.18 kB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | **🏆-68% `2.15 MB`** | **🏆-45% `452.88 kB`** | *9x* `1,344 ms` |
| 2. [terser](packages/minifiers/minifiers/terser.ts) | -66% `2.25 MB` | -45% `457.82 kB` | *48x* `6,733 ms` |
| 3. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -66% `2.30 MB` | -43% `472.05 kB` | *1x* `147 ms` |
| 4. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -64% `2.43 MB` | -42% `475.48 kB` | *22x* `3,137 ms` |
| 5. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -64% `2.42 MB` | -42% `478.57 kB` | *17x* `2,449 ms` |
| 6. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -65% `2.31 MB` | -41% `488.28 kB` | *2x* `290 ms` |
| 7. [bun](packages/minifiers/minifiers/bun.ts) | -66% `2.30 MB` | -40% `491.75 kB` | **🏆 `138 ms`** |
| 8. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 9. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 10. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 11. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |

----

```mermaid
---
config:
xyChart:
width: 720
height: 360
xAxis:
labelPadding: 20
yAxis:
labelPadding: 10
---
xychart-beta
title "typescript v4.9.5"
x-axis ["Original",1,2,3,4,5]
y-axis "Gzip size" 0 --> 1884998
bar [1884998,852317,876535,876658,879301,915495]
```

| Artifact | Original size | Gzip size | |
| :------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------: | --------------------------------: | --------------------------------: |
| [typescript v4.9.5](https://www.npmjs.com/package/typescript/v/4.9.5) ([Source](https://unpkg.com/[email protected]/lib/typescript.js)) | `10.95 MB` | `1.88 MB` | |
| **Minifier** | **Minified size** | **Minzipped size** | **Time** |
| 1. [@swc/core](packages/minifiers/minifiers/swc.ts) | **🏆-70% `3.31 MB`** | **🏆-55% `852.32 kB`** | *10x* `2,735 ms` |
| 2. [uglify-js (no compress)](packages/minifiers/minifiers/uglify-js.ts) | -68% `3.54 MB` | -53% `876.54 kB` | *14x* `3,833 ms` |
| 3. [@tdewolff/minify](packages/minifiers/minifiers/tdewolff-minify.ts) | -69% `3.36 MB` | -53% `876.66 kB` | **🏆 `264 ms`** |
| 4. [terser (no compress)](packages/minifiers/minifiers/terser.ts) | -68% `3.53 MB` | -53% `879.30 kB` | *19x* `5,250 ms` |
| 5. [esbuild](packages/minifiers/minifiers/esbuild.ts) | -68% `3.49 MB` | -51% `915.50 kB` | *1x* `481 ms` |
| 6. [terser](packages/minifiers/minifiers/terser.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 7. [babel-minify](packages/minifiers/minifiers/babel-minify.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 8. [google-closure-compiler](packages/minifiers/minifiers/google-closure-compiler.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 9. [uglify-js](packages/minifiers/minifiers/uglify-js.ts) ❌ Timed out | - | - | :warning: `+10,000 ms` |
| 10. [tedivm/jshrink](packages/minifiers/minifiers/jshrink/index.ts) ❌ Minification | ❌ | ❌ | - |
| 11. [bun](packages/minifiers/minifiers/bun.ts) ❌ Post-validation | ❌ | ❌ | - |

## Sponsors