M+Minify++
production-ready · revalidated after reopening

Cut bytes.
Keep meaning.

Minify++ is a compact C++17 minifier for JavaScript, JSX, HTML, CSS, JSON, XML and SVG. It optimises final deployable artifacts without becoming your compiler, bundler or build system.

$ minify app.js
app.js → app.min.js

$ minify styles.css logo.svg
styles.css → styles.min.css
logo.svg → logo.min.svg

$ minify --in-place dist/app.js
dist/app.js → dist/app.js
15,459JS semantic programs
7,000,000audit mutations
7format modes
1.1.0CLI checkpoint

A deliberately bounded tool

Final-output optimisation should be easy to add—and easy to reason about.

Compile TypeScript, bundle modules, render templates or build your application first. Then hand the resulting web artifacts to Minify++. Its small public API and direct CLI fit existing pipelines without taking ownership of them.

Conservative by design

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

Explore format behavior →

Safe file transactions

Sibling output is the default. In-place writes are staged, preserve existing permission bits and reject symbolic-link destinations.

Read the CLI contract →

Embeddable, not entangled

Nift consumes the same public C++ API available to any host. Minify++ has no dependency on Nift’s project or template model.

Use the library →

Why trust a minifier?

Because the evidence attacks meaning, not just output size.

Executable JavaScript differentials, TypeScript JSX parsing, structural JSON checks, an independent CSS semantic-tree oracle, adversarial fixtures, second-pass acceptance, sanitizer runs and deterministic mutation testing all protect the supported contract.

See the evidence wall
Current decision: PASS WITH KNOWN LIMITATIONS.

A real website CSS failure invalidated the earlier decision. The scoped pass was restored only after repairs, stronger semantic and fuzz evidence, a clean committed-package check, synchronized Nift integration and fresh-browser website validation.

The boundary is a feature

What Minify++ 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 semantic theatre

XML/SVG are described as lexical modes; benchmark numbers remain host-specific.