Tiny Online Tools logoTiny Online ToolssearchSearch tools…grid_viewAll Tools
Homechevron_rightDocument Toolschevron_rightCHM ExtractorCHM Extractor

CHM Extractor

Unpack a compiled HTML Help file into its pages, stylesheets and images, as a ZIP that keeps the original folder structure.

upload_file

Click to browse or drag & drop files here

CHM

Accepted: .chm

Similar Tools

CHM Viewer

CHM Viewer

Open a legacy Microsoft Compiled HTML Help file, browse its contents tree and read its pages in your browser.

MHTML Extractor

MHTML Extractor

Take an MHT archive apart into HTML, images, stylesheets and assets, and download it as a folder that still opens in a browser.

PPTX Asset Extractor

PPTX Asset Extractor

Extract the original images, video, audio and embedded fonts from a PowerPoint deck, with the slides each one appears on.

3D Asset Extractor

3D Asset Extractor

Extract every texture, mesh, material and animation from a GLB or GLTF file as a ZIP.

JWT Signature Verifier

JWT Signature Verifier

Verify HMAC JWT signatures locally in the browser.

Compress PDF

Compress PDF

Reduce the file size of a PDF document without uploading it.

Video to JPG Frames

Video to JPG Frames

Extract individual frames from any video as JPG images. Choose frame interval, fully private.

apps

More Tools

Browse our full collection of free online tools.

A CHM is a folder in disguise

Inside a .chm sits an ordinary little website: HTML pages, a stylesheet or two, some images, and a .hhc contents file. Microsoft's ITSS container holds them in a directory of entries spread across one or two content sections — section 0 stored as-is, section 1 compressed with LZX.

This tool lists every entry with its path, size, section and type, and writes them back out as real files. The ZIP keeps the internal paths: /html/page1.htm becomes html/page1.htm, so unzipping gives you a browsable folder rather than a heap of files with mangled names. That is the whole point of extracting a help file — the links between pages still work afterwards.

The machinery, if you want it

Behind a toggle, the listing also shows the ITSS streams a normal extraction hides: ::DataSpace/NameList, ::DataSpace/Storage/MSCompressed/ControlData, the LZX reset table, /#SYSTEM, /#STRINGS and the rest. They are how the container works, and being able to look at them is occasionally exactly what you need.

Entries that cannot be recovered are said so

If an entry's bytes cannot be produced, it is not written into the ZIP. It appears in a failures list with the specific error.

The reason for that firmness: the LZX decoder in this site was written from the [MS-PATCH] specification and from libmspack's lzxd.c, and while its bitstream reader, Huffman decoding, uncompressed blocks and x86 filter are unit-tested, its verbatim and aligned block decoding has never been run against output from Microsoft's own compressor — no offline corpus existed to test it with.

A truncated or garbled file inside an extract is worse than a missing one, because you would not discover the problem until much later, when the file is somewhere else and the CHM is gone. So a failure is reported as a failure.

Also shown

The help file's title, its default topic, the names of its contents and index files, the compiler that built it, and which compression the content sections use. To read the pages instead of extracting them, use the CHM Viewer.

Privacy

The help file is opened and unpacked in your browser. Nothing is uploaded.