webcrush

utility to minify, obfuscate, and compress HTML

Usage no npm install needed!

<script type="module">
  import webcrush from 'https://cdn.skypack.dev/webcrush';
</script>

README

Webcrush

Webcrush is a simple utility for minifying and compressing HTML.

Crushing an HTML file discourages casual inspection of the code, which may be useful, for example, for posting an interactive puzzle or a student problem-set project without broadcasting spoilers in cleartext in the HTML.

Usage

Webcrush can be used at this page. The webpage provides two options:

  • LZ compression is optional, on by default. Unchecking this can result in smaller files when LZ overhead dominates.
  • Absolute-url scripts (such as CDN scripts) can be pulled out of the LZ compressed code, on by default. Chrome warns about performance penalties when CDN scripts are generated by document.write, this avoids that warning.

There is also a nodejs API and a nodejs command-line interface that provide more options which can be read about in the source.

Caveats

Note that crushing is not good for hiding serious secrets in HTML, because it is not difficult to decompress and reveal the code. Also, crushing can grow short documents, because the code is expressed in base64 (which grows 25%) and LZ decompression code must be packaged in the document (which adds 483 bytes). It is better to rely on HTTP gzip encoding for saving bandwidth.

Credits

Compression is by Sam Hocevar's lz-string. Minification is by Juriy Zaytsev's HTML minifier, which in turn relies on the awesome UglifyJS by Mihai Bazon and CleanCss by Jakub Pawlowicz.