Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. C/C++
  3. heatshrink

heatshrink

ISCC

A data compression library for embedded and real-time systems with minimal memory usage.

GitHubGitHub
1.6k stars237 forks0 contributors

What is heatshrink?

heatshrink is a data compression library specifically designed for embedded systems and real-time applications. It implements LZSS compression with minimal memory requirements and incremental processing capabilities, solving the problem of adding compression to resource-constrained environments where traditional libraries are too heavy.

Target Audience

Embedded systems engineers and firmware developers working on memory-constrained devices like microcontrollers, IoT sensors, and real-time systems that require data compression.

Value Proposition

Developers choose heatshrink because it provides usable compression with predictable resource consumption—operating in as little as 50 bytes of RAM with bounded CPU usage—unlike general-purpose compression libraries that are too resource-intensive for embedded contexts.

Overview

data compression library for embedded/real-time systems

Use Cases

Best For

  • Adding compression to firmware with less than 1KB of available RAM
  • Real-time systems requiring predictable, incremental compression processing
  • IoT devices that need to compress sensor data before transmission
  • Microcontroller projects where memory is severely constrained
  • Embedded applications needing configurable compression trade-offs
  • Systems requiring both static and dynamic memory allocation options

Not Ideal For

  • Desktop or server applications where memory and CPU are abundant and higher compression ratios are needed
  • Projects requiring advanced compression features like streaming APIs, multiple algorithm support, or error correction
  • Teams looking for drop-in libraries with pre-built binaries and package manager integration

Pros & Cons

Pros

Extremely Low Memory Usage

Can operate with as little as 50 bytes of RAM, making it ideal for severely memory-constrained embedded systems, as highlighted in the key features.

Incremental Processing

Handles input data in arbitrarily small chunks, ensuring bounded and predictable CPU usage for hard real-time environments, per the philosophy.

Flexible Memory Allocation

Supports both static and dynamic allocation, allowing developers full control over memory management in embedded contexts.

Configurable Compression

Adjustable window and lookahead sizes let developers balance memory usage against compression effectiveness, as detailed in the configuration section.

Cons

Manual Tuning Required

Optimal compression requires manual configuration of window and lookahead sizes, and the README admits that settings must be checked with representative data.

Limited Algorithm Support

Based solely on LZSS, it lacks modern compression techniques, which may result in lower compression ratios compared to more advanced libraries.

Basic Integration Process

Requires copying source files and configuring heatshrink_config.h manually, lacking pre-built binaries or easy package management.

Frequently Asked Questions

Quick Stats

Stars1,553
Forks237
Contributors0
Open Issues27
Last commit2 years ago
CreatedSince 2013

Tags

#c-library#embedded-systems#low-memory#data-compression#firmware#lzss#real-time#resource-constrained

Built With

C
C++

Included in

C/C++70.6k
Auto-fetched 1 day ago

Related Projects

zstdzstd

Zstandard - Fast real-time compression algorithm

Stars28,075
Forks2,643
Last commit17 days ago
brotlibrotli

Brotli compression format

Stars14,953
Forks1,372
Last commit1 day ago
LZ4LZ4

Extremely Fast Compression algorithm

Stars12,163
Forks1,616
Last commit1 day ago
libarchivelibarchive

Multi-format archive and compression library

Stars3,646
Forks1,045
Last commit1 day ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub