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.
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
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 wallA 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
TypeScript, Sass and framework transforms remain upstream.
Dependency graphs, tree shaking and chunking belong to dedicated tools.
XML/SVG are described as lexical modes; benchmark numbers remain host-specific.