What Is misa77? — The Open-Source Codec That Outruns LZ4
misa77 is a new open-source LZ-based compression codec written in C++20 by developer nonadhocproblem. Released under the MIT license at version 0.2.0, it targets a specific niche: write-once read-many workloads where decompression throughput is the critical bottleneck. On the standard Silesia compression corpus, misa77 at its fastest level decodes at 5,219 MB/s — more than double LZ4’s 2,505 MB/s — while simultaneously achieving a better compression ratio (42.64% vs 47.59%). This combination of faster decode and better ratio is rare in the compression landscape and has attracted significant attention from the developer community.
Key Technical Specifications — Format, Requirements, and License
misa77 is built from the ground up for extreme decompression throughput. Here are the essential technical details:
| Specification | Detail |
|---|---|
| Language | C++20 |
| Build System | CMake >= 3.20 |
| Platform | Little-endian 64-bit systems (x86-64 primary, AArch64 experimental) |
| License | MIT |
| Current Version | v0.2.0 (experimental) |
| Compression Levels | -0 (fastest decode), -1 (better ratio, default) |
| Experimental Modes | –adaptive, –params, –yolo |
| Memory (Compression) | <= 5 MB constant |
| Memory (Decompression) | 0 MB (no allocations) |
| GitHub Stars | 109 (as of July 2026) |
| Inspiration | LZ4, zxc, lizard |
The codec has no entropy backend — it is a pure LZ-style codec comparable to LZ4 at high effort levels, not to zstd or Brotli. This design choice is deliberate: entropy coding adds decode overhead, and misa77’s goal is to minimize every cycle between compressed input and decompressed output.
Benchmark Results — Silesia Corpus, enwik8, and Game Assets
The performance data comes from the project’s own lzbench results and community-verified turbobench runs. All measurements were taken on an Intel i7-14650HX processor.
Silesia Corpus (Standard Benchmark)
| Codec | Decode Speed | Compression Ratio | Encode Speed |
|---|---|---|---|
| misa77 -0 | 5,219 MB/s | 42.64% | 54.5 MB/s |
| misa77 -1 | 4,274 MB/s | 39.65% | — |
| LZ4 1.10.0 | 2,505 MB/s | 47.59% | 371 MB/s |
| Selkie -4 (Normal) | 3,498 MB/s | 36.95% | 43.3 MB/s |
| zxc 0.12.0 -3 | 2,841 MB/s | 45.46% | 115 MB/s |
| zxc 0.12.0 -4 | 2,726 MB/s | 42.63% | 80.8 MB/s |
| zxc 0.12.0 -5 | 2,599 MB/s | 40.25% | 48.6 MB/s |
| Lizard 2.1 -10 | 2,452 MB/s | 48.79% | 320 MB/s |
misa77 -0 decodes faster than LZ4 on all 12 Silesia files. At level -1, it decodes at 4,274 MB/s with a 39.65% ratio — still 1.7x faster than LZ4 with significantly better compression.
enwik8 (Text Data)
On the enwik8 benchmark (100 MB of Wikipedia XML text), misa77 -0 achieves 4,802 MB/s decode speed with a 48.59% ratio. Textual data is where misa77 truly shines, as its LZ-based matching is optimized for byte-aligned patterns common in human-readable content.
Game Asset Benchmarks
The author shared real-world game asset benchmarks on Hacker News:
| Dataset | misa77 -0 Decode | LZ4 Decode | Advantage |
|---|---|---|---|
| Pathfinder: WoTR (game assets) | 4,061 MB/s | 2,561 MB/s | 1.59x faster |
| DOS2 (texture assets) | 5,546 MB/s | 3,602 MB/s | 1.54x faster |
Game asset gains are more modest than on textual data — floats and binary structures are harder for LZ-based matching to compress — but misa77 still delivers a clear 1.5x+ decode advantage over LZ4 in these scenarios.
misa77 vs LZ4 — Head-to-Head Comparison
LZ4 is the incumbent in the fast-decode space, so the most relevant comparison is direct.
| Metric | misa77 -0 | LZ4 1.10.0 | Winner |
|---|---|---|---|
| Decode Speed | 5,219 MB/s | 2,505 MB/s | misa77 (2.08x) |
| Compression Ratio | 42.64% | 47.59% | misa77 (4.95 pp better) |
| Encode Speed | 54.5 MB/s | 371 MB/s | LZ4 (6.8x) |
| Decompression Memory | 0 MB | ~16 KB | misa77 |
| Production Readiness | Experimental (v0.2.0) | Mature (v1.10.0) | LZ4 |
| Platform Support | x86-64 primary | x86-64, ARM, RISC-V | LZ4 |
| License | MIT | BSD 2-Clause | Tie |
The tradeoff is clear: misa77 offers dramatically faster decompression and better ratios at the cost of much slower compression and experimental status. For write-once read-many workloads, this is an excellent trade. For workloads that compress frequently, LZ4 remains the better choice.
misa77 vs Other Fast Codecs — Selkie, zxc, Lizard, and Snappy
misa77 vs Selkie
Selkie is another fast-decode codec that targets similar use cases. In turbobench results shared by the author, misa77 -0 achieves 5,309 MB/s decode vs Selkie -4 (Normal) at 3,498 MB/s — a 52% advantage. However, Selkie achieves a better ratio (36.95% vs 42.64%), so the choice depends on whether decode speed or ratio is the higher priority.
misa77 vs zxc
zxc is a direct inspiration for misa77. Across zxc’s compression levels -3 through -5, misa77 -0 outperforms all of them in decode speed while matching or exceeding their ratios. zxc -4 achieves 42.63% ratio at 2,726 MB/s decode; misa77 -0 achieves 42.64% at 5,219 MB/s — nearly identical ratio at nearly double the speed.
misa77 vs Lizard
Lizard 2.1 at level -10 decodes at 2,452 MB/s with a 48.79% ratio. misa77 -0 is 2.1x faster with a 6.15 percentage point better ratio. Lizard compresses much faster (320 MB/s vs 54.5 MB/s), but in the read-heavy workloads misa77 targets, compression speed is rarely the bottleneck.
misa77 vs Snappy
Snappy (Google’s fast codec used in Bigtable, Cassandra, and Kafka) typically decodes around 1,500-2,000 MB/s with ratios around 50-55%. misa77 is 2.5-3.5x faster with significantly better ratios. However, Snappy is battle-tested in production at Google scale — misa77 cannot yet claim that level of validation.
Strengths — Decode Speed, Ratio, Memory Usage, and the Pareto Frontier
misa77’s strengths are concentrated in three areas:
1. Decode Throughput Dominance. At 5,219 MB/s on Silesia, misa77 -0 is the fastest-decompressing LZ codec in its class. It lies on the Pareto frontier for decode throughput vs compression ratio on most data shapes — meaning no other codec offers both faster decode and better ratio simultaneously.
2. Zero-Allocation Decompression. misa77 uses 0 MB of memory during decompression. This is a unique advantage for embedded systems, game consoles, and resource-constrained environments where memory pressure is a real concern. LZ4 uses approximately 16 KB for its decompression state; misa77 uses nothing.
3. Constant Compression Memory. Compression uses at most 5 MB regardless of input size. This predictability is valuable in environments where memory must be pre-allocated or guaranteed.
4. MIT License. The permissive MIT license means misa77 can be integrated into commercial products, proprietary software, and embedded systems without legal friction.
Weaknesses — Slow Compression, Format Instability, and Missing Validation
1. Slow Compression. At 54.5 MB/s encode speed, misa77 is 6.8x slower than LZ4. This is the primary tradeoff. For workloads that compress data once and decompress it many times, this is acceptable. For workloads that recompress frequently, it is a dealbreaker.
2. Experimental Format (v0.x.y). misa77 is at version 0.2.0, and the author explicitly warns that the format may change between releases. This makes it unsuitable for long-term archival, production pipelines, or any scenario where backward compatibility is required.
3. No Input Validation. The codec does not validate compressed input before decompression. Feeding invalid or malicious data to misa77 produces undefined behavior. This is a security concern for any application that decompresses untrusted data.
4. ARM64 Performance Concerns. Hacker News commenters reported slower performance on AArch64 compared to LZ4. The codec is primarily optimized for x86-64 little-endian systems, and ARM support is still experimental.
5. Performance Is Data-Dependent. misa77 excels on textual, byte-aligned data but shows more modest gains on float-heavy binary data like game assets. Performance is “spiky” — users should benchmark against their specific data before committing.
Use Cases — Where misa77 Shines
Write-Once Read-Many (WORM) Storage
The ideal use case. Data is compressed once during ingestion and decompressed thousands or millions of times during reads. Examples: static asset bundles, firmware images, map data, precomputed datasets, and read-only database snapshots.
Game Asset Distribution
Game assets are compressed during the build process and decompressed at runtime. The 1.5x+ decode advantage over LZ4 translates directly to faster level loading, reduced texture streaming latency, and shorter boot times. The zero-allocation decompression is particularly valuable on consoles with tight memory budgets.
Textual Data Pipelines
Log archives, JSON/XML datasets, source code repositories, and documentation bundles all benefit from misa77’s strength on byte-aligned data. The 2x decode advantage over LZ4 on the Silesia corpus is driven largely by text-heavy files.
Embedded and Resource-Constrained Systems
Zero-allocation decompression and constant 5 MB compression memory make misa77 attractive for IoT devices, routers, and embedded Linux systems where memory is scarce and predictable allocation is critical.
Production Readiness Assessment — v0.x.y Status and Risks
misa77 is not production-ready by conventional standards. Here is a frank assessment:
| Risk Factor | Severity | Mitigation |
|---|---|---|
| Format instability (v0.x.y) | High | Pin a specific version; recompress if format changes |
| No input validation | High | Only decompress trusted data; add external validation |
| Limited platform support | Medium | Test on target architecture before committing |
| Small community (109 stars) | Low | Single maintainer risk; evaluate bus factor |
| No fuzzing or CI reported | Medium | Run your own fuzzing before production use |
For non-critical workloads, prototyping, and internal tooling, misa77 is worth evaluating today. For customer-facing production systems, archival storage, or security-sensitive applications, wait for a stable release with input validation.
How to Integrate misa77 — Library API and CLI Usage
misa77 provides both a C++ library API and a command-line interface. Building from source requires CMake >= 3.20 and a C++20 compiler:
git clone https://github.com/welcome-to-the-sunny-side/misa77.git
cd misa77
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/misa77 -1 input.txt -o output.m77
./build/misa77 -d output.m77 -o restored.txt
The CLI supports two compression levels: -0 for maximum decode speed and -1 (default) for better ratios. Experimental modes include --adaptive for content-aware compression, --params for fine-tuning, and --yolo for decode-optimized compression.
For library integration, include misa77.h and link against the built library. The API is straightforward: misa77_compress() and misa77_decompress() with buffer-in/buffer-out semantics.
Community Reception — HN Discussion and Developer Feedback
The Hacker News Show HN post (154 points, 47 comments) generated substantial discussion. Key themes:
Selkie and Oodle comparisons. Several commenters noted architectural similarities to Selkie and RAD Game Tools’ Oodle codecs. The author acknowledged these influences and explained misa77’s design decisions.
Game developer interest. Multiple commenters from game development backgrounds asked about real-world benchmarks. The author provided Pathfinder and DOS2 asset benchmarks, which showed more modest but still meaningful gains.
ARM64 concerns. One commenter reported slower performance on AArch64. The author acknowledged this as a known limitation and noted that ARM optimization is on the roadmap.
AI-assisted development. The author disclosed using Claude Opus 4.8 and Fable 5 for tooling and scripting — an interesting data point on AI-assisted systems programming.
Format stability questions. Several commenters raised concerns about the v0.x.y format instability. The author confirmed that the format may change and recommended pinning versions for production use.
Verdict — Who Should Use misa77 in 2026?
Use misa77 if: You have write-once read-many workloads, need maximum decompression throughput, can tolerate slow compression, control your input data (no untrusted decompression), and can pin a specific version. Game developers, embedded systems engineers, and data pipeline operators should evaluate misa77 today.
Skip misa77 if: You need fast compression, decompress untrusted data, require ARM64 support, need format stability for archival, or cannot accept experimental software in your stack. Stick with LZ4 or zstd for production systems.
Bottom line: misa77 is the most exciting new LZ codec in the fast-decode space. Its 2x decode advantage over LZ4 with better ratios is a genuine achievement. It is not ready for production everywhere, but for the right use case — static data served at high throughput — it is already a compelling option. Watch this project; it has serious potential.
Frequently Asked Questions
Is misa77 faster than LZ4?
Yes. On the Silesia compression corpus, misa77 at level -0 decodes at 5,219 MB/s compared to LZ4’s 2,505 MB/s — a 2.08x improvement. It also achieves a better compression ratio (42.64% vs 47.59%). However, misa77 compresses 6.8x slower than LZ4.
Can misa77 replace zstd?
No. misa77 has no entropy backend and cannot match zstd’s compression ratios. zstd typically achieves 30-40% ratios on the Silesia corpus, significantly better than misa77’s 39-43%. misa77 targets a different niche: maximum decode throughput, not maximum compression.
Is misa77 production-ready?
Not yet. misa77 is at version 0.2.0 (experimental), the format may change between releases, and there is no input validation — decompressing invalid data produces undefined behavior. It is suitable for prototyping, internal tooling, and non-critical workloads, but not for production systems or archival storage.
What data types does misa77 handle best?
misa77 performs best on textual, byte-aligned data such as logs, JSON, XML, source code, and documentation. It shows more modest gains on float-heavy binary data like game assets and textures. Users should benchmark against their specific data before committing.
How do I build and use misa77?
Clone the GitHub repository, build with CMake >= 3.20 in Release mode, and use the CLI with -0 (fastest decode) or -1 (better ratio, default) for compression and -d for decompression. The library API provides misa77_compress() and misa77_decompress() functions for programmatic use.
