Drop HTML files here
Plain pages get packed. Pages packed by this tool get unpacked. Add a page together with its CSS, scripts and images, or a whole folder, to fold everything into one file.
Shrinks an HTML page into a smaller HTML page that still opens in any browser, and unpacks a packed page back to the exact original bytes.
Plain pages get packed. Pages packed by this tool get unpacked. Add a page together with its CSS, scripts and images, or a whole folder, to fold everything into one file.
The page is compressed with one of three methods. Context mixing predicts each bit from eight blended models (orders 0–6, words, a sparse context and a long-match model, mixed by two learned mixers and refined by an adaptive probability map); it is usually 10–17% smaller than xz -9e on HTML and JavaScript but unpacks at a few hundred KB per second. LZMA (the 7-Zip and xz method) lands within about 1% of xz -9e at Ultra and unpacks almost instantly. Deflate (the gzip method) is the fallback. The context-mixing model uses integer arithmetic only, so every browser engine reproduces its predictions exactly. The data is stored in an HTML comment, and followed by a 2 KB script that decompresses it and writes it into the document with document.write while the browser is still parsing. The original therefore goes through the browser’s normal parser: its scripts run in order, DOMContentLoaded and load fire, the doctype and quirks mode are kept, and attributes on <html> and <body> carry over. The loader removes its own nodes before writing, so the finished DOM matches the original.
DecompressionStream. Every method and encoding was tested in all three browser engines: Chromium (Chrome, Edge, Opera, Brave, Android), Firefox (Gecko) and WebKitGTK (the engine inside Safari and every iOS browser), from disk and over HTTP with conflicting charset headers. Files packed in one engine unpack identically in the others, including context mixing, whose predictor uses integer arithmetic only.@import and url()), scripts, images, srcset, icons, fonts and media that the page references by relative path are embedded as inline code or data: URLs. Unpacking then returns the inlined single-file page. ES module import statements and fetch() calls inside scripts are not rewritten.data: URLs or strings) is decoded to raw bytes before compression and re-encoded by the loader before the page is parsed. Only long, canonical runs that re-encode to exactly the same text are touched. Base64 hides byte structure from the compressor; unwrapping it made an embedded TrueType font 21–28% smaller and a 3D mesh buffer 35–55% smaller, while already-compressed PNG and JPEG gain a few percent.white-space: pre.