The Minification Grand Prix: 12 Rounds of Byte-Shaving Mayhem

July 24, 2026 · View on GitHub

minification benchmarks

What's the best JavaScript minifier?

This project benchmarks the following minifiers:

MinifierVersionRelease date ↓
oxc-minify0.141.02026-07-21
@swc/core1.15.462026-07-19
terser5.49.02026-07-08
esbuild0.28.12026-06-11
bun1.3.142026-05-13
google-closure-compiler20251216.0.02025-12-18
@tdewolff/minify2.24.82025-12-08
@cminify/cminify-linux-x643.0.12025-07-27
uglify-js3.19.32024-08-29
babel-minify0.5.22022-05-06
tedivm/jshrink1.8.1

Benchmarks last updated on Jul 24, 2026.


🙋‍♂️ 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
  • Each minifier is minimally configured (sourcemaps & comments disabled), comparing out-of-the-box experience
  • Minifier upgrade PRs are automated via WhiteSource Renovate
  • Benchmarks are updated on every PR via GitHub Actions
  • The raw benchmark data is available in /packages/data/data/data.json

⏱ Metrics

Ranking

For each benchmark, minifiers are ranked by a score that reflects the best balance of trade-offs.

The score combines minzipped size and minification time, with size weighted more heavily by default (85% size, 15% time) since it's usually the top priority. If a minifier is unusually slow, the weights shift toward time using a logistic sigmoid function, up to a 50/50 split. This avoids harsh cutoffs while still penalizing extreme slowness.

Both size and time are scaled using min-max normalization so they can be compared fairly. The result is a context-aware score that helps surface the best overall choice—but make sure to check each column directly if size or speed matters more to you.

Minified size

Size of the minified output.

Minzipped size

Size of the minified output with Gzip compression.

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

Tip

What's the verdict? ⚔️ See the Minifier showdown

ArtifactOriginal sizeGzip size
react v17.0.2 (Source)72.13 KB19.39 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-68% 22.82 KB-58% 8.19 KB6x 18 ms
2. oxc-minify-68% 23.15 KB-57% 8.36 KB🏆 3 ms
3. terser-68% 23.05 KB-57% 8.26 KB71x 199 ms
4. uglify-js🏆-69% 22.64 KB🏆-58% 8.18 KB151x 420 ms
5. esbuild-67% 23.70 KB-56% 8.54 KB6x 18 ms
6. @tdewolff/minify-67% 23.49 KB-55% 8.63 KB1x 4 ms
7. bun-67% 23.98 KB-55% 8.66 KB5x 15 ms
8. uglify-js (no compress)-65% 25.03 KB-55% 8.67 KB27x 75 ms
9. terser (no compress)-65% 25.06 KB-55% 8.74 KB30x 84 ms
10. google-closure-compiler-68% 22.81 KB-58% 8.22 KB1139x 3,169 ms
11. @cminify/cminify-linux-x64-44% 40.04 KB-44% 10.86 KB4x 12 ms
12. tedivm/jshrink-43% 40.82 KB-43% 11.04 KB45x 126 ms
13. babel-minify ❌ Failed to find ❌ -

ArtifactOriginal sizeGzip size
moment v2.29.1 (Source)173.90 KB36.23 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-66% 58.37 KB-48% 18.75 KB3x 26 ms
2. terser-66% 59.01 KB-48% 18.69 KB65x 478 ms
3. oxc-minify-66% 59.37 KB-47% 19.24 KB1x 7 ms
4. esbuild-66% 59.80 KB-47% 19.33 KB2x 21 ms
5. uglify-js🏆-67% 57.73 KB🏆-49% 18.57 KB123x 906 ms
6. @tdewolff/minify-66% 59.89 KB-46% 19.48 KB🏆 7 ms
7. uglify-js (no compress)-64% 62.50 KB-46% 19.57 KB24x 177 ms
8. terser (no compress)-64% 63.01 KB-46% 19.65 KB28x 208 ms
9. bun-64% 61.76 KB-45% 19.85 KB2x 17 ms
10. google-closure-compiler-66% 58.28 KB-48% 18.90 KB545x 3,994 ms
11. @cminify/cminify-linux-x64-45% 95.93 KB-32% 24.74 KB1x 12 ms
12. tedivm/jshrink-44% 97.63 KB-31% 25.00 KB39x 285 ms
13. babel-minify ❌ Failed to find ❌ -

ArtifactOriginal sizeGzip size
jquery v3.5.1 (Source)287.63 KB84.50 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-69% 89.16 KB🏆-63% 30.86 KB3x 46 ms
2. oxc-minify-69% 89.24 KB-63% 30.93 KB1x 12 ms
3. @tdewolff/minify-69% 89.68 KB-63% 31.45 KB🏆 12 ms
4. terser-69% 89.24 KB-63% 30.86 KB56x 661 ms
5. uglify-js (no compress)-67% 94.08 KB-63% 31.47 KB20x 244 ms
6. terser (no compress)-67% 94.26 KB-63% 31.56 KB23x 271 ms
7. esbuild-69% 90.07 KB-62% 31.96 KB3x 37 ms
8. bun-68% 92.39 KB-61% 32.64 KB2x 23 ms
9. uglify-js🏆-69% 88.45 KB-63% 30.90 KB114x 1,336 ms
10. google-closure-compiler-68% 92.71 KB-61% 33.05 KB345x 4,028 ms
11. @cminify/cminify-linux-x64-51% 141.45 KB-52% 40.37 KB1x 14 ms
12. tedivm/jshrink-50% 144.14 KB-52% 40.88 KB30x 361 ms
13. babel-minify ❌ Failed to find ❌ -

ArtifactOriginal sizeGzip size
vue v2.6.12 (Source)342.15 KB89.67 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-66% 115.53 KB🏆-52% 42.71 KB3x 58 ms
2. oxc-minify-66% 116.98 KB-52% 43.25 KB1x 17 ms
3. terser-66% 116.60 KB-52% 42.87 KB57x 854 ms
4. @tdewolff/minify-66% 117.70 KB-51% 44.37 KB🏆 15 ms
5. esbuild-65% 118.14 KB-51% 44.37 KB2x 44 ms
6. uglify-js (no compress)-63% 126.14 KB-50% 44.45 KB20x 302 ms
7. terser (no compress)-63% 126.39 KB-50% 44.64 KB24x 356 ms
8. bun-65% 121.28 KB-49% 45.39 KB1x 24 ms
9. uglify-js🏆-67% 113.80 KB-52% 43.04 KB125x 1,857 ms
10. google-closure-compiler-66% 115.55 KB-51% 44.24 KB324x 4,789 ms
11. @cminify/cminify-linux-x64-43% 193.91 KB-37% 56.36 KB1x 15 ms
12. tedivm/jshrink-42% 197.36 KB-36% 57.17 KB32x 481 ms
13. babel-minify ❌ Failed to find ❌ -

ArtifactOriginal sizeGzip size
lodash v4.17.21 (Source)544.09 KB96.69 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-87% 69.82 KB-74% 25.24 KB3x 46 ms
2. oxc-minify-87% 70.91 KB-73% 25.87 KB🏆 12 ms
3. esbuild-87% 72.50 KB-73% 26.20 KB2x 30 ms
4. uglify-js (no compress)-86% 74.61 KB-73% 25.86 KB23x 271 ms
5. terser-87% 70.41 KB-74% 25.15 KB62x 729 ms
6. @tdewolff/minify-87% 71.90 KB-73% 26.50 KB1x 17 ms
7. bun-87% 73.45 KB-72% 26.66 KB1x 22 ms
8. terser (no compress)-86% 75.04 KB-73% 26.19 KB27x 314 ms
9. uglify-js🏆-87% 68.17 KB🏆-74% 24.69 KB120x 1,394 ms
10. google-closure-compiler-86% 73.49 KB-74% 25.03 KB368x 4,283 ms
11. @cminify/cminify-linux-x64-73% 146.27 KB-63% 35.94 KB1x 13 ms
12. tedivm/jshrink-73% 148.78 KB-62% 36.33 KB32x 374 ms
13. babel-minify ❌ Failed to find ❌ -

ArtifactOriginal sizeGzip size
d3 v6.3.1 (Source)555.77 KB130.69 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-52% 265.03 KB-33% 87.39 KB5x 129 ms
2. oxc-minify-52% 267.20 KB-33% 87.95 KB1x 37 ms
3. uglify-js (no compress)-50% 275.35 KB-32% 88.32 KB26x 617 ms
4. @tdewolff/minify-52% 269.07 KB-31% 89.87 KB1x 36 ms
5. terser (no compress)-50% 276.13 KB-32% 89.07 KB37x 885 ms
6. esbuild-51% 270.21 KB-31% 90.81 KB3x 71 ms
7. terser-52% 267.42 KB-33% 88.00 KB79x 1,852 ms
8. uglify-js🏆-53% 263.56 KB🏆-33% 87.02 KB139x 3,272 ms
9. bun-51% 272.73 KB-29% 92.35 KB2x 48 ms
10. @cminify/cminify-linux-x64-29% 393.70 KB-21% 103.81 KB🏆 23 ms
11. google-closure-compiler-51% 270.32 KB-28% 94.15 KB266x 6,241 ms
12. babel-minify ❌ Minification❌ -
13. tedivm/jshrink ❌ Minification❌ -

ArtifactOriginal sizeGzip size
terser v5.30.3 (Source)1.01 MB193.76 KB
MinifierMinified sizeMinzipped sizeTime
1. oxc-minify🏆-56% 439.27 KB🏆-37% 121.99 KB1x 36 ms
2. @swc/core-55% 455.45 KB-36% 123.29 KB5x 115 ms
3. @tdewolff/minify-55% 456.59 KB-36% 124.88 KB1x 34 ms
4. terser (no compress)-53% 472.58 KB-36% 124.25 KB38x 805 ms
5. uglify-js (no compress)-53% 472.16 KB-36% 124.61 KB32x 670 ms
6. esbuild-55% 458.93 KB-35% 126.71 KB2x 60 ms
7. terser-55% 456.59 KB-36% 123.35 KB85x 1,771 ms
8. bun-54% 466.69 KB-34% 127.64 KB2x 43 ms
9. uglify-js-55% 451.19 KB-36% 123.33 KB152x 3,153 ms
10. google-closure-compiler-56% 439.93 KB-35% 126.44 KB292x 6,042 ms
11. @cminify/cminify-linux-x64-38% 625.93 KB-26% 144.30 KB🏆 21 ms
12. tedivm/jshrink-37% 633.71 KB-25% 145.18 KB64x 1,328 ms
13. babel-minify ❌ Minification❌ -

ArtifactOriginal sizeGzip size
three v0.124.0 (Source)1.25 MB248.27 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-48% 642.75 KB🏆-36% 158.73 KB7x 176 ms
2. oxc-minify-48% 642.46 KB-36% 159.88 KB2x 52 ms
3. esbuild-48% 646.93 KB-34% 163.75 KB3x 86 ms
4. @tdewolff/minify-49% 642.20 KB-34% 164.60 KB2x 49 ms
5. uglify-js (no compress)-46% 674.49 KB-34% 163.04 KB38x 872 ms
6. terser-48% 653.18 KB-36% 159.17 KB105x 2,414 ms
7. terser (no compress)-46% 675.43 KB-34% 163.18 KB46x 1,075 ms
8. bun-47% 655.59 KB-33% 166.17 KB2x 63 ms
9. uglify-js🏆-49% 641.59 KB-36% 159.07 KB188x 4,320 ms
10. google-closure-compiler-48% 644.51 KB-34% 162.81 KB338x 7,766 ms
11. @cminify/cminify-linux-x64-25% 941.06 KB-23% 191.97 KB🏆 23 ms
12. tedivm/jshrink-24% 952.01 KB-22% 193.47 KB74x 1,712 ms
13. babel-minify ❌ Timed out--:warning: +10,000 ms

ArtifactOriginal sizeGzip size
victory v35.8.4 (Source)2.13 MB309.94 KB
MinifierMinified sizeMinzipped sizeTime
1. @swc/core-67% 705.90 KB-49% 157.73 KB5x 244 ms
2. oxc-minify-67% 710.90 KB-48% 160.84 KB1x 72 ms
3. @tdewolff/minify-66% 716.62 KB-47% 164.95 KB1x 69 ms
4. uglify-js (no compress)-65% 756.53 KB-46% 167.58 KB25x 1,105 ms
5. terser (no compress)-65% 756.62 KB-46% 166.18 KB31x 1,374 ms
6. terser-67% 712.87 KB-49% 158.46 KB77x 3,359 ms
7. esbuild-66% 725.65 KB-42% 181.23 KB3x 135 ms
8. bun-66% 726.80 KB-41% 182.61 KB1x 85 ms
9. uglify-js🏆-67% 694.78 KB🏆-49% 157.44 KB131x 5,712 ms
10. @cminify/cminify-linux-x64-33% 1.43 MB-29% 221.12 KB🏆 44 ms
11. babel-minify ❌ Minification❌ -
12. google-closure-compiler ❌ Timed out--:warning: +10,000 ms
13. tedivm/jshrink ❌ Post-validation❌ -

ArtifactOriginal sizeGzip size
echarts v5.1.1 (Source)3.20 MB684.61 KB
MinifierMinified sizeMinzipped sizeTime
1. oxc-minify-69% 1.00 MB-53% 323.07 KB3x 152 ms
2. @swc/core🏆-69% 993.62 KB🏆-53% 321.08 KB10x 526 ms
3. @tdewolff/minify-68% 1.01 MB-52% 331.76 KB2x 120 ms
4. esbuild-68% 1.01 MB-52% 331.62 KB3x 186 ms
5. bun-68% 1.02 MB-51% 337.87 KB2x 134 ms
6. uglify-js (no compress)-67% 1.07 MB-52% 331.41 KB31x 1,582 ms
7. terser (no compress)-67% 1.07 MB-52% 330.35 KB50x 2,496 ms
8. terser-69% 998.45 KB-53% 321.56 KB111x 5,534 ms
9. @cminify/cminify-linux-x64-45% 1.77 MB-37% 434.45 KB🏆 50 ms
10. babel-minify ❌ Timed out--:warning: +10,000 ms
11. google-closure-compiler ❌ Timed out--:warning: +10,000 ms
12. tedivm/jshrink ❌ Minification❌ -
13. uglify-js ❌ Timed out--:warning: +10,000 ms

ArtifactOriginal sizeGzip size
antd v4.16.1 (Source)6.67 MB825.18 KB
MinifierMinified sizeMinzipped sizeTime
1. oxc-minify🏆-68% 2.12 MB🏆-45% 451.56 KB3x 255 ms
2. @swc/core-68% 2.15 MB-45% 452.47 KB9x 692 ms
3. @tdewolff/minify-66% 2.29 MB-43% 471.64 KB1x 140 ms
4. esbuild-65% 2.31 MB-41% 488.41 KB3x 286 ms
5. bun-66% 2.30 MB-40% 491.71 KB2x 179 ms
6. uglify-js (no compress)-64% 2.42 MB-42% 478.57 KB32x 2,313 ms
7. terser (no compress)-64% 2.42 MB-42% 474.97 KB39x 2,835 ms
8. terser-66% 2.24 MB-45% 457.35 KB85x 6,153 ms
9. @cminify/cminify-linux-x64-34% 4.43 MB-24% 623.37 KB🏆 72 ms
10. babel-minify ❌ Timed out--:warning: +10,000 ms
11. google-closure-compiler ❌ Timed out--:warning: +10,000 ms
12. tedivm/jshrink ❌ Timed out--:warning: +10,000 ms
13. uglify-js ❌ Timed out--:warning: +10,000 ms

ArtifactOriginal sizeGzip size
typescript v4.9.5 (Source)10.95 MB1.88 MB
MinifierMinified sizeMinzipped sizeTime
1. oxc-minify-70% 3.33 MB🏆-55% 852.78 KB4x 531 ms
2. @tdewolff/minify-69% 3.35 MB-54% 875.77 KB2x 266 ms
3. @swc/core🏆-70% 3.31 MB-54% 859.06 KB14x 1,544 ms
4. esbuild-68% 3.49 MB-51% 915.54 KB4x 475 ms
5. bun-68% 3.54 MB-51% 923.27 KB2x 317 ms
6. uglify-js (no compress)-68% 3.54 MB-53% 876.54 KB33x 3,631 ms
7. terser (no compress)-68% 3.53 MB-53% 878.64 KB44x 4,773 ms
8. @cminify/cminify-linux-x64-47% 5.85 MB-40% 1.13 MB🏆 108 ms
9. babel-minify ❌ Timed out--:warning: +10,000 ms
10. google-closure-compiler ❌ Timed out--:warning: +10,000 ms
11. tedivm/jshrink ❌ Timed out--:warning: +10,000 ms
12. terser ❌ Timed out--:warning: +10,000 ms
13. uglify-js ❌ Timed out--:warning: +10,000 ms

⚔️ Minifier showdown

Note

🤖 This analysis is AI generated. See below for the system prompt.

The Minification Grand Prix: 12 Rounds of Byte-Shaving Mayhem

Twelve npm packages. Eleven contenders. One goal: crush code down to its smallest, fastest-loading form without breaking a sweat—or the syntax. From the featherweight "react" to the typescript behemoth clocking in at nearly 2 megabytes, this race had everything. Early sprinters flamed out, a couple of veterans refused to compromise on size no matter the time cost, and one newcomer quietly lapped the field as the packages got heavier. Let's break down who deserves the podium.

Best minifier

@swc/core takes the crown, and it wasn't close once you factor in the whole picture. Look at the pattern: round after round, it either wins outright on compression or sits within a rounding error of the winner—while doing it in milliseconds, not seconds. On "jquery," "vue," "three," and "echarts," @swc/core delivered the single smallest gzip output and did it fast enough to be labeled "most balanced" nearly every time. That's not a fluke, that's a system.

Compare that to uglify-js, which absolutely wins on raw compression in several rounds—"moment," "lodash," "d3," "victory"—but at a brutal cost. On "victory" alone, uglify-js took 5.7 seconds to shave a bit more fat than the field. On "d3," 3.2 seconds for a 33% cut that oxc-minify essentially matched in 37 milliseconds. That's an 88x time penalty for marginal gains. In a CI pipeline running thousands of builds a day, that's not dedication—that's a bottleneck.

@swc/core proved you don't have to choose. It's consistently top-tier on size and finishes its work before slower tools have finished loading their config files.

Honorable mentions

oxc-minify is the breakout star of the back half of this race. As packages ballooned into the hundreds of kilobytes and beyond, oxc-minify started winning outright—"terser," "antd," "typescript"—all while running at speeds that make uglify-js look like it's minifying by hand. On "typescript," it shaved 55% off nearly 2MB in just 531ms. That's the kind of scaling that matters when your bundle isn't a toy example.

@tdewolff/minify is the speed demon's speed demon. It topped the "fastest" category in almost every single round, often finishing in single-digit milliseconds even on large payloads, and its compression, while rarely table-topping, was never embarrassing—usually within 1-3% of the leaders. If your CI cares about wall-clock time above all, this is your dark horse.

@cminify/cminify-linux-x64 deserves a nod purely for consistency of speed on huge files—routinely the fastest or near-fastest on anything over 100KB—even though its compression ratios lagged well behind the leaders (that "d3" result, 21% shaved versus uglify's 33%, shows the gap widens on gnarlier code).

terser held its own in the early lightweight rounds as a dependable, slightly-slower-but-still-respectable middle-of-the-pack performer—no disasters, no fireworks, just steady work.

Eliminated

babel-minify — Crashed out at the very first hurdle on "react," tripped up by a stale internal browser-data dependency throwing a JSON parsing error. Never got off the starting line.

tedivm/jshrink — Made it through five rounds respectably, then choked on "d3" with an unclosed regex pattern exception. A hard crash on real-world code is a hard no for production use, regardless of how it performed before that.

Closing remarks

What a card. The story of this race is really the story of a shifting frontier: uglify-js reminding us that raw compression obsession still has fans willing to pay in seconds, while @swc/core and oxc-minify prove that modern tooling can deliver both speed and squeeze without forcing you to pick a side. @tdewolff/minify and @cminify show there's real appetite for tools that prioritize throughput above all else. Numbers don't lie, but they also don't tell you everything—installation footprint, plugin ecosystems, and how a tool handles your particular edge-case syntax still matter enormously. Take these results as a strong compass, not gospel, and pick the minifier that matches the shape of your actual pipeline, not just the podium finish.

System prompt

Today's date is 2026-07-24

You are a JavaScript minification benchmark analyst with a flair for storytelling.

## Objective
Analyze JavaScript minifiers based strictly on benchmark data: *minified Gzip size* and *minification speed*.
Present your findings as an entertaining and intuitive commentary, helping readers understand performance trade-offs even if they aren't familiar with kilobytes, milliseconds, or compression ratios.
Your job is to narrate the race—not just display the scoreboard.

## Rules of Engagement
1. Compare only what's measured: Evaluate each minifier based solely on Gzip size and speed. Avoid assumptions about correctness, compatibility, or code quality unless failures are explicitly shown in the results.
2. Crown the winner:
   - Prioritize smallest Gzip size (transfer time matters most).
   - Consider speed—especially where compression is close. A 10× faster tool with ~1% worse compression might be more practical for CI pipelines.
   - Bigger source = harder challenge. Reward outstanding performance on large artifacts.
   - Trade-offs are key. Highlight where a tool sacrifices speed for size (or vice versa), and who manages both impressively.
3. Context matters:
   - These benchmarks only capture performance. Real-world adoption also depends on DX: install size, API design, community, etc. Mention that—briefly—but do not evaluate it.
   - If a tool stands out only in niche scenarios, note it.
   - If a tool fails validation or breaks input code, eliminate it and warn accordingly.

## Output format
- Tone: Energetic, cheeky, and dramatic—like a live commentator at a niche sporting event. No emojis.
- Style: Short, connected sentences. Prioritize flow over bullet lists, except for eliminations.
- Audience: Readers who want *practical insight* from raw benchmark data—without needing to decode gzip math or performance charts.

## Output structure & example
```md
<Quick intro — set the tone. Comment on how fierce or surprising the field was.>
Three... two... one... compress! Welcome to the Minification Grand Prix, where bytes are sliced, milliseconds count, and no semicolon is safe. This year's lineup is ferocious, blending familiar veterans with some clever debutants. The competition? Gritty as ever. The stakes? Astronomical. Let’s see who rises to the top of the minification hierarchy!

### Best minifier
<Name the top performer and justify it. Consider consistency, trade-offs, and standout moments. Call out how hard the decision was if close.>

### Honorable mentions
<Concisely highlight specific tools that impressed in size, speed, or balance. Mention exciting newcomers or quietly consistent performers.>

### Eliminated
<List of disqualified minifiers, each with a quick reason (e.g., crash, invalid output, critical bug). Be clear but diplomatic.>

### Closing remarks
<Closing remarks — Concisely celebrate the competition, acknowledge that DX and correctness also matter, and encourage readers to explore what fits their workflow.>
```


# Minifiers
- babel-minify v0.5.2 released 2022-05-06
- bun v1.3.14 released 2026-05-13
- @cminify/cminify-linux-x64 v3.0.1 released 2025-07-27
- esbuild v0.28.1 released 2026-06-11
- google-closure-compiler v20251216.0.0 released 2025-12-18
- tedivm/jshrink v1.8.1
- oxc-minify v0.141.0 released 2026-07-21
- @swc/core v1.15.46 released 2026-07-19
- @tdewolff/minify v2.24.8 released 2025-12-08
- terser v5.49.0 released 2026-07-08
- uglify-js v3.19.3 released 2024-08-29

# Race results
## Round 1: npm package "react" (19.39 KB gzipped)
- Best gzip compression: uglify-js: 8.18 KB (58% shaved) in 420 ms
- Fastest: oxc-minify: 8.36 KB (57% shaved) in 3 ms
- Most balanced: @swc/core: 8.19 KB (58% shaved) in 18 ms
- Honorable mention: terser: 8.26 KB (57% shaved) in 199 ms

## Round 2: npm package "moment" (36.23 KB gzipped)
- Best gzip compression: uglify-js: 18.57 KB (49% shaved) in 906 ms
- Fastest: @tdewolff/minify: 19.48 KB (46% shaved) in 7 ms
- Most balanced: @swc/core: 18.75 KB (48% shaved) in 26 ms
- Honorable mention: terser: 18.69 KB (48% shaved) in 478 ms

## Round 3: npm package "jquery" (84.50 KB gzipped)
- Best gzip compression: @swc/core: 30.86 KB (63% shaved) in 46 ms
- Fastest: @tdewolff/minify: 31.45 KB (63% shaved) in 12 ms
- Most balanced: @swc/core: 30.86 KB (63% shaved) in 46 ms
- Honorable mention: oxc-minify: 30.93 KB (63% shaved) in 12 ms

## Round 4: npm package "vue" (89.67 KB gzipped)
- Best gzip compression: @swc/core: 42.71 KB (52% shaved) in 58 ms
- Fastest: @tdewolff/minify: 44.37 KB (51% shaved) in 15 ms
- Most balanced: @swc/core: 42.71 KB (52% shaved) in 58 ms
- Honorable mention: oxc-minify: 43.25 KB (52% shaved) in 17 ms

## Round 5: npm package "lodash" (96.69 KB gzipped)
- Best gzip compression: uglify-js: 24.69 KB (74% shaved) in 1,394 ms
- Fastest: oxc-minify: 25.87 KB (73% shaved) in 12 ms
- Most balanced: @swc/core: 25.24 KB (74% shaved) in 46 ms
- Honorable mention: esbuild: 26.20 KB (73% shaved) in 30 ms

## Round 6: npm package "d3" (130.69 KB gzipped)
- Best gzip compression: uglify-js: 87.02 KB (33% shaved) in 3,272 ms
- Fastest: @cminify/cminify-linux-x64: 103.81 KB (21% shaved) in 23 ms
- Most balanced: @swc/core: 87.39 KB (33% shaved) in 129 ms
- Honorable mention: oxc-minify: 87.95 KB (33% shaved) in 37 ms

## Round 7: npm package "terser" (193.76 KB gzipped)
- Best gzip compression: oxc-minify: 121.99 KB (37% shaved) in 36 ms
- Fastest: @cminify/cminify-linux-x64: 144.30 KB (26% shaved) in 21 ms
- Most balanced: oxc-minify: 121.99 KB (37% shaved) in 36 ms
- Honorable mention: @swc/core: 123.29 KB (36% shaved) in 115 ms

## Round 8: npm package "three" (248.27 KB gzipped)
- Best gzip compression: @swc/core: 158.73 KB (36% shaved) in 176 ms
- Fastest: @cminify/cminify-linux-x64: 191.97 KB (23% shaved) in 23 ms
- Most balanced: @swc/core: 158.73 KB (36% shaved) in 176 ms
- Honorable mention: oxc-minify: 159.88 KB (36% shaved) in 52 ms

## Round 9: npm package "victory" (309.94 KB gzipped)
- Best gzip compression: uglify-js: 157.44 KB (49% shaved) in 5,712 ms
- Fastest: @cminify/cminify-linux-x64: 221.12 KB (29% shaved) in 44 ms
- Most balanced: @swc/core: 157.73 KB (49% shaved) in 244 ms
- Honorable mention: oxc-minify: 160.84 KB (48% shaved) in 72 ms

## Round 10: npm package "echarts" (684.61 KB gzipped)
- Best gzip compression: @swc/core: 321.08 KB (53% shaved) in 526 ms
- Fastest: @cminify/cminify-linux-x64: 434.45 KB (37% shaved) in 50 ms
- Most balanced: oxc-minify: 323.07 KB (53% shaved) in 152 ms
- Honorable mention: @tdewolff/minify: 331.76 KB (52% shaved) in 120 ms

## Round 11: npm package "antd" (825.18 KB gzipped)
- Best gzip compression: oxc-minify: 451.56 KB (45% shaved) in 255 ms
- Fastest: @cminify/cminify-linux-x64: 623.37 KB (24% shaved) in 72 ms
- Most balanced: oxc-minify: 451.56 KB (45% shaved) in 255 ms
- Honorable mention: @swc/core: 452.47 KB (45% shaved) in 692 ms

## Round 12: npm package "typescript" (1.88 MB gzipped)
- Best gzip compression: oxc-minify: 852.78 KB (55% shaved) in 531 ms
- Fastest: @cminify/cminify-linux-x64: 1.13 MB (40% shaved) in 108 ms
- Most balanced: oxc-minify: 852.78 KB (55% shaved) in 531 ms
- Honorable mention: @tdewolff/minify: 875.77 KB (54% shaved) in 266 ms

# Eliminated
## babel-minify
Failed "react" in undefined stage:
"Failed to find JSON start:\n[baseline-browser-mapping] The data in this module is over two months old.  To ensure accurate Baseline data, please update: `npm i baseline-browser-mapping@latest -D`"

## tedivm/jshrink
Failed "d3" in minification stage:
"RuntimeException: Unclosed regex pattern at position: 289075 in /packages/minifiers/vendor/tedivm/jshrink/src/JShrink/Minifier.php:660"

Sponsors