Tiny dependency-free C compression library. Runs on Arduino, ESP32, Pico W/2W, and Raspberry Pi — from 2K SRAM to Linux SBCs. Beats brotli q1 on ratio. Decodes 2-5× faster. Uses 3,600× less memory.
Encoder profiles
| Micro | 1.0 KB encode — fits on ATmega328P with 2K SRAM |
| Balanced | 4.6 KB encode — Pico W, ESP32-C3, general embedded |
| Q3 | 7.7 KB encode — Pico 2W, ESP32, medium MCUs |
| Q4 | 13.8 KB encode — Pi 3/4/5, ESP32-S3, Linux SBCs |
All profiles produce decoder-compatible streams. Any encoder, any decoder, always interoperable.
Features
- Streaming and buffer-based APIs
- Cross-block history up to 2048-byte sliding window
- 64-entry static dictionary (JSON, CSV, HTTP, English, binary)
- 3-entry LRU repeat-offset cache
- Hardware acceleration: NEON 16B/cycle, CRC32 hash, CLZ match
- Cortex-M0 safe — no unaligned loads
vs the competition
| picocompress | heatshrink | brotli q1 | |
| Encode RAM | 4.6 KB | 12.5 KB | 16.7 KB |
| Decode RAM | 1.5 KB | 2.0 KB | 31.5 KB |
| json-4K decode | 541 MB/s | 115 MB/s | 106 MB/s |
Runs on a Cortex-M0 with just 2K SRAM. No other compression library in its class can compress there.