SEGGER emCompress-ToGo

The on-target compression solution

emCompress-ToGo is a portable compression solution that compresses or decompresses data even on smallest microcontrollers.

emCompress-ToGo is a portable compression software, designed primarily, but not exclusively, for embedded systems. It can compress and decompress data with basically no RAM requirements.

The lossless compression of the emCompress-ToGo algorithm SMASH-2 is fast and efficient and can be done even on small embedded systems. There are very few, if any, other algorithms for compression on systems with constrained resources, especially those with limited RAM. Decompression is equally efficient.


emCompress-ToGo uses SEGGER's SMASH-2 (Small Microcontroller Advanced Super-High compression scheme) algorithm to compress data. The proprietary SMASH-2 is an excellent all-around, tunable algorithm designed to provide fast and memory efficient compression and decompression.

SMASH compresses efficiently, decompresses quickly, requires only a few words of decoder state held in machine registers, and is very small. Compression is as efficient as other LZSS-based codecs. Decompression is far simpler than with these codecs, resulting in an ultra-small memory. The decompressor is also far simpler than in these formats and so also delivers an ultra-small memory footprint.

Compression ratios

SMASH-2 works well with virtually any kind of data. The table below displays the compression ratios for various use cases.



Compression performance and time increase as window size increases. Running on an Arm Cortex-M7 CPU clocked at 200 MHz and using RAM to RAM compression with a 256-byte window, the compression performance is about 400 kB/sec. An enhanced function that requires an additional work buffer in RAM will achieve about 1500 kB/sec compression speed.

Decompression performance is largely independent of the parameters, so that the window size does not have a major effect on the decompression performance. Similar to the performance numbers for compression, an Arm Cortex-M7 CPU clocked at 200 MHz has been used to measure the decompression performance. Using RAM to RAM decompression, a speed of 6.3 MB/sec is achieved with respect to the compressed input data stream, which corresponds to about 13 MB/sec for the decompressed output data stream. Using the stream interface, the decompressor will process an average of 4.3 MB/sec input data while generating 9 MB/sec uncompressed output data.

Resource usage

In most cases, no RAM is required. Since SMASH works with references, it uses the uncompressed part as a “window”. In the case of stream compression, blocks of 2 KB can be processed at a time. In some cases smaller blocks can be processed, down to as small as just 256 bytes.

ROM requirements depend on the option used for compression and decompression. emCompress-ToGo provides four options: from memory to memory (M2M), from streaming function to streaming function (F2F), from streaming function to memory (F2M), and from memory to streaming function (M2F).

Use cases

emCompress-ToGo enables compressing data on the smallest of embedded systems. While most common compression codecs require lots of RAM for compression, emCompress-ToGo can be used for compression and decompression with less than 1 kilobyte of RAM.

Saving resources on data logging

The amount of data collected and stored by data logging makes this a prime application for compression. emCompress-ToGo enables the storing of compressed data logs, saving storage requirements and memory resources.

Reduce IoT network traffic

Networks of connected IoT devices can suffer from congestion as more and more devices communicate with each other, with brokers, or with the Internet. With low power communication channels and mesh setups the available network bandwidth for each device is limited. To efficiently use the network, messages should be kept as small as possible.

With emCompress-ToGo messages to be sent on a network can be compressed and decompressed by the sender and receiver on the fly, resulting in less traffic on the network, reduced bandwidth requirements and in many cases lower power consumption for senders, receivers and relays.

Speed up long-range communication

In space and avionics applications, such as satellites, communication channels are not only restricted by bandwidth, but by the distance that data has to be transmitted. In long-distance communication, data packets can get lost more easily and require retransmission.

emCompress-ToGo can compress any communication data to reduce the number of packets to be transmitted, reduce retransmissions due to loss data and therefore speed up long-range communication significantly.

Learn more at:

  • Compression and decompression on embedded systems
  • SMASH-2 algorithm for use with minimal RAM requirements
  • Optimized for the smallest of microcontrollers