lhasa

the free LHA / LZH / PMarc decoder, distributed as a single self-contained static binary.

Install on macOS / Linux / Windows See the four commands

~200 KB static binary · zero libc / zlib / libiconv on any Linux, macOS, or Windows.

Latest release · upstream · Security audit · Supported formats · Usage · Install · Build audit

What is lhasa?

Lhasa is an ISC-licensed library + CLI for reading .lzh (LHA) and .lzs / .pma archives. It is intentionally decoder-only — creating .lzh archives remains the job of the original (non-free) lha binary built from upstream jca02266/lha.

lhasa (the library, liblhasa) is embeddable in C applications: file managers add it for LZH preview; CDNs and archives use it to surface .lzh content on demand. The CLI binary lhasa ships is named lha — the project deliberately mirrors the original LHa for UNIX command so legacy toolchains that call lha x archive.lzh keep working transparently.

Why lhasa exists (one paragraph)

jca02266/lha (the maintained LHa for UNIX 1.14i tree) carries a custom redistribution license in its man page — it permits source redistribution with attribution but requires contacting the original maintainers before binary-only redistribution. For most of the 1990s this wasn't a problem because Linux distributions shipped the binary directly. After Debian phased the package out of non-free in 2012 in favor of a FOSS decoder, fragglet/lhasa (started 2011 by Simon Howard, ISC) became the standard FOSS replacement. lhasa reads every variant the original lha writes (lh0..lh7, lhx, lzs, pma) but cannot create new .lzh archives — that remains a job for the original lha source build.

ljh-sh/lhasa takes the ISC source and ships it as a single static binary for platforms where upstream fragglet/lhasa only publishes source tarballs + Windows prebuilts — i.e. for Linux and macOS users who want a one-line install without a build step.