M+Minify++
v1.1.3 released · v1.1.4 in development

Cut bytes.
Keep meaning.

Minify++ is a compact C++17 minifier for JavaScript, JSX, HTML, CSS, JSON, XML and SVG. Conservative mode stays a small final-output pass; opt-in structured and aggressive JavaScript modes add proven binding renames and bounded compression without turning Minify++ into your compiler or bundler.

curl -fsSL https://minify.cx/install.sh | sh
$ minify app.js
app.js → app.min.js

$ minify --structured app.js
app.js → app.min.js

$ minify --aggressive bundle.js
bundle.js → bundle.min.js
36 / 36real-bundle mode validations
15,459JS semantic programs
7,000,000audit mutations
1.1.3latest release

A deliberately bounded tool

Fast conservative output by default. Deeper JavaScript optimisation only when you ask for it.

Compile TypeScript, bundle modules, render templates or build your application first. Then hand the resulting web artifacts to Minify++. The default path remains conservative; structured and aggressive modes are explicit contracts with stronger analysis, their own semantic gates and real-bundle validation.

Conservative by default

Each format has its own lexical contract. When adjacency or syntax is ambiguous, correctness outranks another deleted byte.

Explore format behavior →

Structured JavaScript

Opt in to scope-aware binding renaming backed by a scope graph, reference resolution and fail-closed safety barriers.

See optimization modes →

Profiled performance

Real-bundle regressions are rejected during development, and current JavaScript comparisons refresh OXC, SWC, esbuild and Terser in the same benchmark run.

Read the benchmark methodology →

Why trust a minifier?

Because the evidence attacks meaning, not just output size.

Executable JavaScript differentials, Test262, TypeScript JSX parsing, structural JSON checks, independent CSS browser oracles, real-bundle post-validation, sanitizers and deterministic mutation testing all protect the supported contract.

See the evidence wall
31,155 / 31,155 CSS conformance cases passing.

The complete WPT-derived corpus passes the strengthened Chromium CSSOM oracle with zero differences, errors, rejections or unverified cases.

Read the conformance results →

The boundary is a feature

What Minify++ still does not try to own

No compilation

TypeScript, Sass and framework transforms remain upstream.

No bundling

Dependency graphs, tree shaking and chunking belong to dedicated tools.

No benchmark theatre

Performance claims use pinned fixtures and same-run controls; historical runner milliseconds are not treated as universal truth.